text:
%%% -*-BibTeX-*-
%%% Do NOT edit. File created by BibTeX with style
%%% ACM-Reference-Format-Journals [18-Jan-2012].

\begin{thebibliography}{87}

%%% ====================================================================
%%% NOTE TO THE USER: you can override these defaults by providing
%%% customized versions of any of these macros before the \bibliography
%%% command.  Each of them MUST provide its own final punctuation,
%%% except for \shownote{}, \showDOI{}, and \showURL{}.  The latter two
%%% do not use final punctuation, in order to avoid confusing it with
%%% the Web address.
%%%
%%% To suppress output of a particular field, define its macro to expand
%%% to an empty string, or better, \unskip, like this:
%%%
%%% \newcommand{\showDOI}[1]{\unskip}   % LaTeX syntax
%%%
%%% \def \showDOI #1{\unskip}           % plain TeX syntax
%%%
%%% ====================================================================

\ifx \showCODEN    \undefined \def \showCODEN     #1{\unskip}     \fi
\ifx \showDOI      \undefined \def \showDOI       #1{#1}\fi
\ifx \showISBNx    \undefined \def \showISBNx     #1{\unskip}     \fi
\ifx \showISBNxiii \undefined \def \showISBNxiii  #1{\unskip}     \fi
\ifx \showISSN     \undefined \def \showISSN      #1{\unskip}     \fi
\ifx \showLCCN     \undefined \def \showLCCN      #1{\unskip}     \fi
\ifx \shownote     \undefined \def \shownote      #1{#1}          \fi
\ifx \showarticletitle \undefined \def \showarticletitle #1{#1}   \fi
\ifx \showURL      \undefined \def \showURL       {\relax}        \fi
% The following commands are used for tagged output and should be
% invisible to TeX
\providecommand\bibfield[2]{#2}
\providecommand\bibinfo[2]{#2}
\providecommand\natexlab[1]{#1}
\providecommand\showeprint[2][]{arXiv:#2}

\bibitem[\protect\citeauthoryear{Absalyamov, Carey, and Tsotras}{Absalyamov
  et~al\mbox{.}}{2018}]%
        {Absalyamov2018}
\bibfield{author}{\bibinfo{person}{Ildar Absalyamov},
  \bibinfo{person}{Michael~J Carey}, {and} \bibinfo{person}{Vassilis~J
  Tsotras}.} \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{Lightweight Cardinality Estimation in LSM-based
  Systems}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data}}. \bibinfo{pages}{841--855}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3183713.3183761}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Agrawal, Chaudhuri, Koll{\'{a}}r, Marathe,
  Narasayya, and Syamala}{Agrawal et~al\mbox{.}}{2004}]%
        {Agrawal2004}
\bibfield{author}{\bibinfo{person}{Sanjay Agrawal}, \bibinfo{person}{Surajit
  Chaudhuri}, \bibinfo{person}{Lubor Koll{\'{a}}r},
  \bibinfo{person}{Arunprasad~P. Marathe}, \bibinfo{person}{Vivek~R.
  Narasayya}, {and} \bibinfo{person}{Manoj Syamala}.}
  \bibinfo{year}{2004}\natexlab{}.
\newblock \showarticletitle{{Database Tuning Advisor for Microsoft SQL Server
  2005}}. In \bibinfo{booktitle}{\emph{Proceedings of the International
  Conference on Very Large Data Bases (VLDB)}}. \bibinfo{pages}{1110--1121}.
\newblock

\bibitem[\protect\citeauthoryear{Agrawal, Chaudhuri, and Narasayya}{Agrawal
  et~al\mbox{.}}{2000}]%
        {Agrawal2000}
\bibfield{author}{\bibinfo{person}{Sanjay Agrawal}, \bibinfo{person}{Surajit
  Chaudhuri}, {and} \bibinfo{person}{Vivek~R. Narasayya}.}
  \bibinfo{year}{2000}\natexlab{}.
\newblock \showarticletitle{{Automated Selection of Materialized Views and
  Indexes in SQL Databases}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Very Large Data Bases (VLDB)}}.
  \bibinfo{pages}{496--505}.
\newblock
\showISBNx{1-55860-715-3}
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=645926.671701}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Aken, Pavlo, Gordon, and Zhang}{Aken
  et~al\mbox{.}}{2017}]%
        {Aken2017}
\bibfield{author}{\bibinfo{person}{Dana~Van Aken}, \bibinfo{person}{Andrew
  Pavlo}, \bibinfo{person}{Geoffrey~J Gordon}, {and} \bibinfo{person}{Bohan
  Zhang}.} \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{Automatic Database Management System Tuning
  Through Large-scale Machine Learning}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{1009--1024}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3035918.3064029}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Alkowaileet, Alsubaiee, and Carey}{Alkowaileet
  et~al\mbox{.}}{2020}]%
        {Alkowaileet2020}
\bibfield{author}{\bibinfo{person}{Wail~Y Alkowaileet}, \bibinfo{person}{Sattam
  Alsubaiee}, {and} \bibinfo{person}{Michael~J Carey}.}
  \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{An LSM-based Tuple Compaction Framework for Apache
  AsterixDB}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{13}, \bibinfo{number}{9} (\bibinfo{year}{2020}),
  \bibinfo{pages}{1388--1400}.
\newblock
\urldef\tempurl%
\url{http://www.vldb.org/pvldb/vol13/p1388-alkowaileet.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{{Anonymous Authors}}{{Anonymous
  Authors}}{2021}]%
        {github-repo}
\bibfield{author}{\bibinfo{person}{{Anonymous Authors}}.}
  \bibinfo{year}{2021}\natexlab{}.
\newblock \bibinfo{title}{Robust LSM Tuning}.
\newblock
\newblock
\urldef\tempurl%
\url{https://anonymous.4open.science/r/robust-lsm-tuning-E212}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Apache}{Apache}{2021}]%
        {ApacheCassandra}
\bibfield{author}{\bibinfo{person}{Apache}.} \bibinfo{year}{2021}\natexlab{}.
\newblock \showarticletitle{{Cassandra}}.
\newblock \bibinfo{journal}{\emph{http://cassandra.apache.org}}
  (\bibinfo{year}{2021}).
\newblock

\bibitem[\protect\citeauthoryear{Athanassoulis, B{\o}gh, and
  Idreos}{Athanassoulis et~al\mbox{.}}{2019}]%
        {Athanassoulis2019}
\bibfield{author}{\bibinfo{person}{Manos Athanassoulis},
  \bibinfo{person}{Kenneth~S. B{\o}gh}, {and} \bibinfo{person}{Stratos
  Idreos}.} \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{Optimal Column Layout for Hybrid Workloads}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{12}, \bibinfo{number}{13} (\bibinfo{year}{2019}),
  \bibinfo{pages}{2393--2407}.
\newblock

\bibitem[\protect\citeauthoryear{Ben-Tal, den Hertog, De~Waegenaere, Melenberg,
  and Rennen}{Ben-Tal et~al\mbox{.}}{2013a}]%
        {Ben-Tal2013-kw}
\bibfield{author}{\bibinfo{person}{Aharon Ben-Tal}, \bibinfo{person}{Dick den
  Hertog}, \bibinfo{person}{Anja De~Waegenaere}, \bibinfo{person}{Bertrand
  Melenberg}, {and} \bibinfo{person}{Gijs Rennen}.}
  \bibinfo{year}{2013}\natexlab{a}.
\newblock \showarticletitle{{Robust Solutions of Optimization Problems Affected
  by Uncertain Probabilities}}.
\newblock \bibinfo{journal}{\emph{Manage. Sci.}} \bibinfo{volume}{59},
  \bibinfo{number}{2} (\bibinfo{date}{Feb.} \bibinfo{year}{2013}),
  \bibinfo{pages}{341--357}.
\newblock
\showISSN{0025-1909}
\urldef\tempurl%
\url{https://doi.org/10.1287/mnsc.1120.1641}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Ben-Tal, den Hertog, Waegenaere, Melenberg,
  and Rennen}{Ben-Tal et~al\mbox{.}}{2013b}]%
        {Ben-Tal2013}
\bibfield{author}{\bibinfo{person}{Aharon Ben-Tal}, \bibinfo{person}{Dick den
  Hertog}, \bibinfo{person}{Anja~De Waegenaere}, \bibinfo{person}{Bertrand
  Melenberg}, {and} \bibinfo{person}{Gijs Rennen}.}
  \bibinfo{year}{2013}\natexlab{b}.
\newblock \showarticletitle{{Robust Solutions of Optimization Problems Affected
  by Uncertain Probabilities}}.
\newblock \bibinfo{journal}{\emph{Management Science}} \bibinfo{volume}{59},
  \bibinfo{number}{2} (\bibinfo{year}{2013}), \bibinfo{pages}{341--357}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1287/mnsc.1120.1641}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Ben-Tal and Nemirovski}{Ben-Tal and
  Nemirovski}{1998}]%
        {Ben-Tal1998}
\bibfield{author}{\bibinfo{person}{Aharon Ben-Tal} {and}
  \bibinfo{person}{Arkadi Nemirovski}.} \bibinfo{year}{1998}\natexlab{}.
\newblock \showarticletitle{{Robust Convex Optimization}}.
\newblock \bibinfo{journal}{\emph{Mathematics of Operations Research}}
  \bibinfo{volume}{23}, \bibinfo{number}{4} (\bibinfo{year}{1998}),
  \bibinfo{pages}{769--805}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1287/moor.23.4.769}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Bertsimas, Nohadani, and Teo}{Bertsimas
  et~al\mbox{.}}{2010}]%
        {Bertsimas2010}
\bibfield{author}{\bibinfo{person}{Dimitris Bertsimas}, \bibinfo{person}{Omid
  Nohadani}, {and} \bibinfo{person}{Kwong~Meng Teo}.}
  \bibinfo{year}{2010}\natexlab{}.
\newblock \showarticletitle{{Robust Optimization for Unconstrained
  Simulation-Based Problems}}.
\newblock \bibinfo{journal}{\emph{Operations Research}} \bibinfo{volume}{58},
  \bibinfo{number}{1} (\bibinfo{year}{2010}), \bibinfo{pages}{161--178}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1287/opre.1090.0715}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Bloom}{Bloom}{1970}]%
        {Bloom1970}
\bibfield{author}{\bibinfo{person}{Burton~H Bloom}.}
  \bibinfo{year}{1970}\natexlab{}.
\newblock \showarticletitle{{Space/Time Trade-offs in Hash Coding with
  Allowable Errors}}.
\newblock \bibinfo{journal}{\emph{Commun. ACM}} \bibinfo{volume}{13},
  \bibinfo{number}{7} (\bibinfo{year}{1970}), \bibinfo{pages}{422--426}.
\newblock
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=362686.362692}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Bortnikov, Braginsky, Hillel, Keidar, and
  Sheffi}{Bortnikov et~al\mbox{.}}{2018}]%
        {Bortnikov2018}
\bibfield{author}{\bibinfo{person}{Edward Bortnikov},
  \bibinfo{person}{Anastasia Braginsky}, \bibinfo{person}{Eshcar Hillel},
  \bibinfo{person}{Idit Keidar}, {and} \bibinfo{person}{Gali Sheffi}.}
  \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{Accordion: Better Memory Organization for LSM
  Key-Value Stores}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{11}, \bibinfo{number}{12} (\bibinfo{year}{2018}),
  \bibinfo{pages}{1863--1875}.
\newblock
\urldef\tempurl%
\url{http://www.vldb.org/pvldb/vol11/p1863-bortnikov.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Bruno and Chaudhuri}{Bruno and
  Chaudhuri}{2005}]%
        {Bruno2005}
\bibfield{author}{\bibinfo{person}{Nicolas Bruno} {and}
  \bibinfo{person}{Surajit Chaudhuri}.} \bibinfo{year}{2005}\natexlab{}.
\newblock \showarticletitle{{Automatic physical database tuning}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{227--238}.
\newblock
\showISBNx{1595930604}
\urldef\tempurl%
\url{https://doi.org/10.1145/1066157.1066184}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Bruno and Chaudhuri}{Bruno and
  Chaudhuri}{2006}]%
        {Bruno2006}
\bibfield{author}{\bibinfo{person}{Nicolas Bruno} {and}
  \bibinfo{person}{Surajit Chaudhuri}.} \bibinfo{year}{2006}\natexlab{}.
\newblock \showarticletitle{{To Tune or not to Tune? A Lightweight Physical
  Design Alerter}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Very Large Data Bases (VLDB)}}.
  \bibinfo{pages}{499--510}.
\newblock
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=1182635.1164171}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Chang, Dean, Ghemawat, Hsieh, Wallach,
  Burrows, Chandra, Fikes, and Gruber}{Chang et~al\mbox{.}}{2006}]%
        {Chang2006}
\bibfield{author}{\bibinfo{person}{Fay Chang}, \bibinfo{person}{Jeffrey Dean},
  \bibinfo{person}{Sanjay Ghemawat}, \bibinfo{person}{Wilson~C. Hsieh},
  \bibinfo{person}{Deborah~A. Wallach}, \bibinfo{person}{Mike Burrows},
  \bibinfo{person}{Tushar Chandra}, \bibinfo{person}{Andrew Fikes}, {and}
  \bibinfo{person}{Robert~E. Gruber}.} \bibinfo{year}{2006}\natexlab{}.
\newblock \showarticletitle{{Bigtable: A Distributed Storage System for
  Structured Data}}. In \bibinfo{booktitle}{\emph{Proceedings of the USENIX
  Symposium on Operating Systems Design and Implementation (OSDI)}}.
  \bibinfo{pages}{205--218}.
\newblock
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=1267308.1267323}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Chaudhuri, Dageville, and Lohman}{Chaudhuri
  et~al\mbox{.}}{2004}]%
        {Chaudhuri2004a}
\bibfield{author}{\bibinfo{person}{Surajit Chaudhuri},
  \bibinfo{person}{Beno$\backslash${\^{}}$\backslash$it Dageville}, {and}
  \bibinfo{person}{Guy~M Lohman}.} \bibinfo{year}{2004}\natexlab{}.
\newblock \showarticletitle{{Self-Managing Technology in Database Management
  Systems}}. In \bibinfo{booktitle}{\emph{Proceedings of the International
  Conference on Very Large Data Bases (VLDB)}}. \bibinfo{pages}{1243}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1016/B978-012088469-8.50116-9}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Chaudhuri and Narasayya}{Chaudhuri and
  Narasayya}{1997}]%
        {Chaudhuri1997}
\bibfield{author}{\bibinfo{person}{Surajit Chaudhuri} {and}
  \bibinfo{person}{Vivek~R. Narasayya}.} \bibinfo{year}{1997}\natexlab{}.
\newblock \showarticletitle{{An Efficient Cost-Driven Index Selection Tool for
  Microsoft SQL Server}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Very Large Data Bases (VLDB)}}.
  \bibinfo{pages}{146--155}.
\newblock
\showISBNx{1-55860-470-7}
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=645923.673646}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Chaudhuri and Narasayya}{Chaudhuri and
  Narasayya}{1998}]%
        {Chaudhuri1998a}
\bibfield{author}{\bibinfo{person}{Surajit Chaudhuri} {and}
  \bibinfo{person}{Vivek~R Narasayya}.} \bibinfo{year}{1998}\natexlab{}.
\newblock \showarticletitle{{AutoAdmin 'What-if' Index Analysis Utility}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{367--378}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/276304.276337}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Chaudhuri and Weikum}{Chaudhuri and
  Weikum}{2005}]%
        {Chaudhuri2005}
\bibfield{author}{\bibinfo{person}{Surajit Chaudhuri} {and}
  \bibinfo{person}{Gerhard Weikum}.} \bibinfo{year}{2005}\natexlab{}.
\newblock \showarticletitle{{Foundations of automated database tuning}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{964--965}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/1066157.1066305}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Chohan, Castillo, Spreitzer, Steinder,
  Tantawi, and Krintz}{Chohan et~al\mbox{.}}{2010}]%
        {Chohan2010}
\bibfield{author}{\bibinfo{person}{Navraj Chohan}, \bibinfo{person}{Claris
  Castillo}, \bibinfo{person}{Mike Spreitzer}, \bibinfo{person}{Malgorzata
  Steinder}, \bibinfo{person}{Asser~N Tantawi}, {and} \bibinfo{person}{Chandra
  Krintz}.} \bibinfo{year}{2010}\natexlab{}.
\newblock \showarticletitle{{See Spot Run: Using Spot Instances for MapReduce
  Workflows}}. In \bibinfo{booktitle}{\emph{Proceedings of USENIX Workshop on
  Hot Topics in Cloud Computing (HotCloud)}}.
\newblock

\bibitem[\protect\citeauthoryear{Dageville, Das, Dias, Yagoub, Zait, and
  Ziauddin}{Dageville et~al\mbox{.}}{2004}]%
        {Dageville2004}
\bibfield{author}{\bibinfo{person}{Benoit Dageville}, \bibinfo{person}{Dinesh
  Das}, \bibinfo{person}{Karl Dias}, \bibinfo{person}{Khaled Yagoub},
  \bibinfo{person}{Mohamed Zait}, {and} \bibinfo{person}{Mohamed Ziauddin}.}
  \bibinfo{year}{2004}\natexlab{}.
\newblock \showarticletitle{{Automatic SQL tuning in oracle 10g}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the International Conference on Very
  Large Data Bases (VLDB)}}. \bibinfo{pages}{1098--1109}.
\newblock
\showISBNx{0-12-088469-0}
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=1316689.1316784}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Dash, Polyzotis, and Ailamaki}{Dash
  et~al\mbox{.}}{2011}]%
        {Dash2011}
\bibfield{author}{\bibinfo{person}{Debabrata Dash}, \bibinfo{person}{Neoklis
  Polyzotis}, {and} \bibinfo{person}{Anastasia Ailamaki}.}
  \bibinfo{year}{2011}\natexlab{}.
\newblock \showarticletitle{{CoPhy: A Scalable, Portable, and Interactive Index
  Advisor for Large Workloads}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{4}, \bibinfo{number}{6} (\bibinfo{year}{2011}),
  \bibinfo{pages}{362--372}.
\newblock
\showISSN{21508097}
\urldef\tempurl%
\url{https://doi.org/10.14778/1978665.1978668}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Dayan, Athanassoulis, and Idreos}{Dayan
  et~al\mbox{.}}{2017}]%
        {Dayan2017}
\bibfield{author}{\bibinfo{person}{Niv Dayan}, \bibinfo{person}{Manos
  Athanassoulis}, {and} \bibinfo{person}{Stratos Idreos}.}
  \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{Monkey: Optimal Navigable Key-Value Store}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{79--94}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3035918.3064054}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Dayan, Athanassoulis, and Idreos}{Dayan
  et~al\mbox{.}}{2018}]%
        {Dayan2018a}
\bibfield{author}{\bibinfo{person}{Niv Dayan}, \bibinfo{person}{Manos
  Athanassoulis}, {and} \bibinfo{person}{Stratos Idreos}.}
  \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{Optimal Bloom Filters and Adaptive Merging for
  LSM-Trees}}.
\newblock \bibinfo{journal}{\emph{ACM Transactions on Database Systems (TODS)}}
  \bibinfo{volume}{43}, \bibinfo{number}{4} (\bibinfo{year}{2018}),
  \bibinfo{pages}{16:1--16:48}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3276980}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Dayan and Idreos}{Dayan and Idreos}{2018}]%
        {Dayan2018}
\bibfield{author}{\bibinfo{person}{Niv Dayan} {and} \bibinfo{person}{Stratos
  Idreos}.} \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{Dostoevsky: Better Space-Time Trade-Offs for
  LSM-Tree Based Key-Value Stores via Adaptive Removal of Superfluous
  Merging}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data}}. \bibinfo{pages}{505--520}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3183713.3196927}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Dayan and Idreos}{Dayan and Idreos}{2019}]%
        {Dayan2019}
\bibfield{author}{\bibinfo{person}{Niv Dayan} {and} \bibinfo{person}{Stratos
  Idreos}.} \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{The Log-Structured Merge-Bush {\&} the Wacky
  Continuum}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data (SIGMOD)}}.
  \bibinfo{pages}{449--466}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3299869.3319903}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{DeCandia, Hastorun, Jampani, Kakulapati,
  Lakshman, Pilchin, Sivasubramanian, Vosshall, and Vogels}{DeCandia
  et~al\mbox{.}}{2007}]%
        {DeCandia2007}
\bibfield{author}{\bibinfo{person}{Giuseppe DeCandia}, \bibinfo{person}{Deniz
  Hastorun}, \bibinfo{person}{Madan Jampani}, \bibinfo{person}{Gunavardhan
  Kakulapati}, \bibinfo{person}{Avinash Lakshman}, \bibinfo{person}{Alex
  Pilchin}, \bibinfo{person}{Swaminathan Sivasubramanian},
  \bibinfo{person}{Peter Vosshall}, {and} \bibinfo{person}{Werner Vogels}.}
  \bibinfo{year}{2007}\natexlab{}.
\newblock \showarticletitle{{Dynamo: Amazon's Highly Available Key-value
  Store}}.
\newblock \bibinfo{journal}{\emph{ACM SIGOPS Operating Systems Review}}
  \bibinfo{volume}{41}, \bibinfo{number}{6} (\bibinfo{year}{2007}),
  \bibinfo{pages}{205--220}.
\newblock
\showISBNx{978-1-59593-591-5}
\showISSN{01635980}
\urldef\tempurl%
\url{https://doi.org/10.1145/1323293.1294281}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Dong, Callaghan, Galanis, Borthakur, Savor,
  and Strum}{Dong et~al\mbox{.}}{2017}]%
        {Dong2017}
\bibfield{author}{\bibinfo{person}{Siying Dong}, \bibinfo{person}{Mark
  Callaghan}, \bibinfo{person}{Leonidas Galanis}, \bibinfo{person}{Dhruba
  Borthakur}, \bibinfo{person}{Tony Savor}, {and} \bibinfo{person}{Michael
  Strum}.} \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{Optimizing Space Amplification in RocksDB}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the Biennial Conference on
  Innovative Data Systems Research (CIDR)}}.
\newblock
\urldef\tempurl%
\url{http://cidrdb.org/cidr2017/papers/p82-dong-cidr17.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Facebook}{Facebook}{[n. d.]}]%
        {FacebookMyRocks}
\bibfield{author}{\bibinfo{person}{Facebook}.} \bibinfo{year}{[n.
  d.]}\natexlab{}.
\newblock \showarticletitle{{MyRocks}}.
\newblock \bibinfo{journal}{\emph{http://myrocks.io/}} (\bibinfo{year}{[n.
  d.]}).
\newblock

\bibitem[\protect\citeauthoryear{Facebook}{Facebook}{2021}]%
        {FacebookRocksDB}
\bibfield{author}{\bibinfo{person}{Facebook}.} \bibinfo{year}{2021}\natexlab{}.
\newblock \showarticletitle{{RocksDB}}.
\newblock \bibinfo{journal}{\emph{https://github.com/facebook/rocksdb}}
  (\bibinfo{year}{2021}).
\newblock

\bibitem[\protect\citeauthoryear{Galante and Bona}{Galante and Bona}{2012}]%
        {Galante2012}
\bibfield{author}{\bibinfo{person}{Guilherme Galante} {and}
  \bibinfo{person}{Luis Carlos Erpen~De Bona}.}
  \bibinfo{year}{2012}\natexlab{}.
\newblock \showarticletitle{{A Survey on Cloud Computing Elasticity}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the IEEE International Conference on
  Utility and Cloud Computing (UCC)}}. \bibinfo{pages}{263--270}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1109/UCC.2012.30}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Google}{Google}{2021}]%
        {GoogleLevelDB}
\bibfield{author}{\bibinfo{person}{Google}.} \bibinfo{year}{2021}\natexlab{}.
\newblock \showarticletitle{{LevelDB}}.
\newblock \bibinfo{journal}{\emph{https://github.com/google/leveldb/}}
  (\bibinfo{year}{2021}).
\newblock

\bibitem[\protect\citeauthoryear{Graefe and Kuno}{Graefe and Kuno}{2010a}]%
        {Graefe2010a}
\bibfield{author}{\bibinfo{person}{Goetz Graefe} {and} \bibinfo{person}{Harumi
  Kuno}.} \bibinfo{year}{2010}\natexlab{a}.
\newblock \showarticletitle{{Self-selecting, self-tuning, incrementally
  optimized indexes}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Extending Database Technology (EDBT)}}.
  \bibinfo{pages}{371--381}.
\newblock
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=1739041.1739087}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Graefe and Kuno}{Graefe and Kuno}{2010b}]%
        {Graefe2010c}
\bibfield{author}{\bibinfo{person}{Goetz Graefe} {and}
  \bibinfo{person}{Harumi~A. Kuno}.} \bibinfo{year}{2010}\natexlab{b}.
\newblock \showarticletitle{{Adaptive indexing for relational keys}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the IEEE International Conference on
  Data Engineering Workshops (ICDEW)}}. \bibinfo{pages}{69--74}.
\newblock

\bibitem[\protect\citeauthoryear{Hayes}{Hayes}{2008}]%
        {Hayes2008}
\bibfield{author}{\bibinfo{person}{Brian Hayes}.}
  \bibinfo{year}{2008}\natexlab{}.
\newblock \showarticletitle{{Cloud computing}}.
\newblock \bibinfo{journal}{\emph{Commun. ACM}} \bibinfo{volume}{51},
  \bibinfo{number}{7} (\bibinfo{year}{2008}), \bibinfo{pages}{9--11}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/1364782.1364786}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{HBase}{HBase}{2013}]%
        {HBase2013}
\bibfield{author}{\bibinfo{person}{HBase}.} \bibinfo{year}{2013}\natexlab{}.
\newblock \showarticletitle{{Online reference}}.
\newblock \bibinfo{journal}{\emph{http://hbase.apache.org/}}
  (\bibinfo{year}{2013}).
\newblock

\bibitem[\protect\citeauthoryear{Herbst, Kounev, and Reussner}{Herbst
  et~al\mbox{.}}{2013}]%
        {Herbst2013}
\bibfield{author}{\bibinfo{person}{Nikolas~Roman Herbst},
  \bibinfo{person}{Samuel Kounev}, {and} \bibinfo{person}{Ralf~H Reussner}.}
  \bibinfo{year}{2013}\natexlab{}.
\newblock \showarticletitle{{Elasticity in Cloud Computing: What It Is, and
  What It Is Not}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Autonomic Computing (ICAC)}}.
  \bibinfo{pages}{23--27}.
\newblock

\bibitem[\protect\citeauthoryear{Holze, Haschimi, and Ritter}{Holze
  et~al\mbox{.}}{2010}]%
        {Holze2010}
\bibfield{author}{\bibinfo{person}{Marc Holze}, \bibinfo{person}{Ali Haschimi},
  {and} \bibinfo{person}{Norbert Ritter}.} \bibinfo{year}{2010}\natexlab{}.
\newblock \showarticletitle{{Towards workload-aware self-management: Predicting
  significant workload shifts}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the IEEE International
  Conference on Data Engineering (ICDE)}} (\bibinfo{year}{2010}),
  \bibinfo{pages}{111--116}.
\newblock
\showISBNx{9781424465217}
\showISSN{10844627}
\urldef\tempurl%
\url{https://doi.org/10.1109/ICDEW.2010.5452738}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Huang, Cheng, Wang, Wang, He, Zhang, Li, Wang,
  Cao, and Li}{Huang et~al\mbox{.}}{2019}]%
        {Huang2019}
\bibfield{author}{\bibinfo{person}{Gui Huang}, \bibinfo{person}{Xuntao Cheng},
  \bibinfo{person}{Jianying Wang}, \bibinfo{person}{Yujie Wang},
  \bibinfo{person}{Dengcheng He}, \bibinfo{person}{Tieying Zhang},
  \bibinfo{person}{Feifei Li}, \bibinfo{person}{Sheng Wang},
  \bibinfo{person}{Wei Cao}, {and} \bibinfo{person}{Qiang Li}.}
  \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{X-Engine: An Optimized Storage Engine for
  Large-scale E-commerce Transaction Processing}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{651--665}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3299869.3314041}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Idreos, Dayan, Qin, Akmanalp, Hilgard, Ross,
  Lennon, Jain, Gupta, Li, and Zhu}{Idreos et~al\mbox{.}}{2019}]%
        {Idreos2019}
\bibfield{author}{\bibinfo{person}{Stratos Idreos}, \bibinfo{person}{Niv
  Dayan}, \bibinfo{person}{Wilson Qin}, \bibinfo{person}{Mali Akmanalp},
  \bibinfo{person}{Sophie Hilgard}, \bibinfo{person}{Andrew Ross},
  \bibinfo{person}{James Lennon}, \bibinfo{person}{Varun Jain},
  \bibinfo{person}{Harshita Gupta}, \bibinfo{person}{David Li}, {and}
  \bibinfo{person}{Zichen Zhu}.} \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{Design Continuums and the Path Toward
  Self-Designing Key-Value Stores that Know and Learn}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the Biennial Conference on
  Innovative Data Systems Research (CIDR)}}.
\newblock

\bibitem[\protect\citeauthoryear{Idreos, Kersten, and Manegold}{Idreos
  et~al\mbox{.}}{2007}]%
        {Idreos2007}
\bibfield{author}{\bibinfo{person}{Stratos Idreos}, \bibinfo{person}{Martin~L.
  Kersten}, {and} \bibinfo{person}{Stefan Manegold}.}
  \bibinfo{year}{2007}\natexlab{}.
\newblock \showarticletitle{{Database Cracking}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the Biennial Conference on
  Innovative Data Systems Research (CIDR)}}.
\newblock

\bibitem[\protect\citeauthoryear{Idreos and Kraska}{Idreos and Kraska}{2019}]%
        {Idreos2019a}
\bibfield{author}{\bibinfo{person}{Stratos Idreos} {and} \bibinfo{person}{Tim
  Kraska}.} \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{From Auto-tuning One Size Fits All to
  Self-designed and Learned Data-intensive Systems}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data (SIGMOD)}}.
\newblock

\bibitem[\protect\citeauthoryear{Idreos, Zoumpatianos, Athanassoulis, Dayan,
  Hentschel, Kester, Guo, Maas, Qin, Wasay, and Sun}{Idreos
  et~al\mbox{.}}{2018a}]%
        {Idreos2018a}
\bibfield{author}{\bibinfo{person}{Stratos Idreos}, \bibinfo{person}{Kostas
  Zoumpatianos}, \bibinfo{person}{Manos Athanassoulis}, \bibinfo{person}{Niv
  Dayan}, \bibinfo{person}{Brian Hentschel}, \bibinfo{person}{Michael~S.
  Kester}, \bibinfo{person}{Demi Guo}, \bibinfo{person}{Lukas~M. Maas},
  \bibinfo{person}{Wilson Qin}, \bibinfo{person}{Abdul Wasay}, {and}
  \bibinfo{person}{Yiyou Sun}.} \bibinfo{year}{2018}\natexlab{a}.
\newblock \showarticletitle{{The Periodic Table of Data Structures}}.
\newblock \bibinfo{journal}{\emph{IEEE Data Engineering Bulletin}}
  \bibinfo{volume}{41}, \bibinfo{number}{3} (\bibinfo{year}{2018}),
  \bibinfo{pages}{64--75}.
\newblock
\urldef\tempurl%
\url{http://sites.computer.org/debull/A18sept/p64.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Idreos, Zoumpatianos, Hentschel, Kester, and
  Guo}{Idreos et~al\mbox{.}}{2018b}]%
        {Idreos2018}
\bibfield{author}{\bibinfo{person}{Stratos Idreos}, \bibinfo{person}{Kostas
  Zoumpatianos}, \bibinfo{person}{Brian Hentschel}, \bibinfo{person}{Michael~S
  Kester}, {and} \bibinfo{person}{Demi Guo}.} \bibinfo{year}{2018}\natexlab{b}.
\newblock \showarticletitle{{The Data Calculator: Data Structure Design and
  Cost Synthesis from First Principles and Learned Cost Models}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{535--550}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3183713.3199671}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Intel}{Intel}{2011}]%
        {Intel2011}
\bibfield{author}{\bibinfo{person}{Intel}.} \bibinfo{year}{2011}\natexlab{}.
\newblock \showarticletitle{{Best Practices for Building an Enterprise Private
  Cloud}}.
\newblock \bibinfo{journal}{\emph{White Paper}} (\bibinfo{year}{2011}).
\newblock

\bibitem[\protect\citeauthoryear{Kim, Behm, Blow, Borkar, Bu, Carey, Hubail,
  Jahangiri, Jia, Li, Luo, Maxon, and Pirzadeh}{Kim et~al\mbox{.}}{2020}]%
        {Kim2020}
\bibfield{author}{\bibinfo{person}{Taewoo Kim}, \bibinfo{person}{Alexander
  Behm}, \bibinfo{person}{Michael Blow}, \bibinfo{person}{Vinayak Borkar},
  \bibinfo{person}{Yingyi Bu}, \bibinfo{person}{Michael~J. Carey},
  \bibinfo{person}{Murtadha Hubail}, \bibinfo{person}{Shiva Jahangiri},
  \bibinfo{person}{Jianfeng Jia}, \bibinfo{person}{Chen Li},
  \bibinfo{person}{Chen Luo}, \bibinfo{person}{Ian Maxon}, {and}
  \bibinfo{person}{Pouria Pirzadeh}.} \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{Robust and efficient memory management in Apache
  AsterixDB}}.
\newblock \bibinfo{journal}{\emph{Software - Practice and Experience}}
  \bibinfo{volume}{50}, \bibinfo{number}{7} (\bibinfo{year}{2020}),
  \bibinfo{pages}{1114--1151}.
\newblock
\showISSN{1097024X}
\urldef\tempurl%
\url{https://doi.org/10.1002/spe.2799}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Kullback and Leibler}{Kullback and
  Leibler}{1951}]%
        {Kullback1951}
\bibfield{author}{\bibinfo{person}{S. Kullback} {and} \bibinfo{person}{R.~A.
  Leibler}.} \bibinfo{year}{1951}\natexlab{}.
\newblock \showarticletitle{{On Information and Sufficiency}}.
\newblock \bibinfo{journal}{\emph{The Annals of Mathematical Statistics}}
  \bibinfo{volume}{22}, \bibinfo{number}{1} (\bibinfo{year}{1951}),
  \bibinfo{pages}{79 -- 86}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1214/aoms/1177729694}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Luo}{Luo}{2020}]%
        {Luo2020a}
\bibfield{author}{\bibinfo{person}{Chen Luo}.} \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{Breaking Down Memory Walls in LSM-based Storage
  Systems}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data}}.
  \bibinfo{pages}{2817--2819}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3318464.3384399}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Luo and Carey}{Luo and Carey}{2019}]%
        {Luo2019a}
\bibfield{author}{\bibinfo{person}{Chen Luo} {and} \bibinfo{person}{Michael~J
  Carey}.} \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{On Performance Stability in LSM-based Storage
  Systems}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{13}, \bibinfo{number}{4} (\bibinfo{year}{2019}),
  \bibinfo{pages}{449--462}.
\newblock

\bibitem[\protect\citeauthoryear{Luo and Carey}{Luo and Carey}{2020}]%
        {Luo2020b}
\bibfield{author}{\bibinfo{person}{Chen Luo} {and} \bibinfo{person}{Michael~J.
  Carey}.} \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{LSM-based Storage Techniques: A Survey}}.
\newblock \bibinfo{journal}{\emph{The VLDB Journal}} \bibinfo{volume}{29},
  \bibinfo{number}{1} (\bibinfo{year}{2020}), \bibinfo{pages}{393--418}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1007/s00778-019-00555-y}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Luo, T{\"{o}}z{\"{u}}n, Tian, Barber, Raman,
  and Sidle}{Luo et~al\mbox{.}}{2019}]%
        {Luo2019b}
\bibfield{author}{\bibinfo{person}{Chen Luo}, \bibinfo{person}{Pinar
  T{\"{o}}z{\"{u}}n}, \bibinfo{person}{Yuanyuan Tian}, \bibinfo{person}{Ronald
  Barber}, \bibinfo{person}{Vijayshankar Raman}, {and} \bibinfo{person}{Richard
  Sidle}.} \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{Umzi: Unified Multi-Zone Indexing for Large-Scale
  HTAP}}. In \bibinfo{booktitle}{\emph{Proceedings of the International
  Conference on Extending Database Technology (EDBT)}}. \bibinfo{pages}{1--12}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.5441/002/edbt.2019.02}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Luo, Chatterjee, Ketsetsidis, Dayan, Qin, and
  Idreos}{Luo et~al\mbox{.}}{2020}]%
        {Luo2020}
\bibfield{author}{\bibinfo{person}{Siqiang Luo}, \bibinfo{person}{Subarna
  Chatterjee}, \bibinfo{person}{Rafael Ketsetsidis}, \bibinfo{person}{Niv
  Dayan}, \bibinfo{person}{Wilson Qin}, {and} \bibinfo{person}{Stratos
  Idreos}.} \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{Rosetta: A Robust Space-Time Optimized Range
  Filter for Key-Value Stores}}. In \bibinfo{booktitle}{\emph{Proceedings of
  the ACM SIGMOD International Conference on Management of Data}}.
  \bibinfo{pages}{2071--2086}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3318464.3389731}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Ma, Aken, Hefny, Mezerhane, Pavlo, and
  Gordon}{Ma et~al\mbox{.}}{2018}]%
        {Ma2018}
\bibfield{author}{\bibinfo{person}{Lin Ma}, \bibinfo{person}{Dana~Van Aken},
  \bibinfo{person}{Ahmed Hefny}, \bibinfo{person}{Gustavo Mezerhane},
  \bibinfo{person}{Andrew Pavlo}, {and} \bibinfo{person}{Geoffrey~J Gordon}.}
  \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{Query-based Workload Forecasting for Self-Driving
  Database Management Systems}}. In \bibinfo{booktitle}{\emph{Proceedings of
  the ACM SIGMOD International Conference on Management of Data}}.
  \bibinfo{pages}{631--645}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3183713.3196908}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Mohan}{Mohan}{2016}]%
        {Mohan2016}
\bibfield{author}{\bibinfo{person}{C Mohan}.} \bibinfo{year}{2016}\natexlab{}.
\newblock \showarticletitle{{Hybrid Transaction and Analytics Processing
  (HTAP): State of the Art}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Workshop on Business Intelligence for the Real-Time Enterprise
  (BIRTE)}}.
\newblock

\bibitem[\protect\citeauthoryear{Mozafari, Goh, and Yoon}{Mozafari
  et~al\mbox{.}}{2015}]%
        {Mozafari2015}
\bibfield{author}{\bibinfo{person}{Barzan Mozafari}, \bibinfo{person}{Eugene
  Zhen~Ye Goh}, {and} \bibinfo{person}{Dong~Young Yoon}.}
  \bibinfo{year}{2015}\natexlab{}.
\newblock \showarticletitle{{CliffGuard: A Principled Framework for Finding
  Robust Database Designs}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  ACM SIGMOD International Conference on Management of Data}}.
  \bibinfo{pages}{1167--1182}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/2723372.2749454}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{O'Neil, Cheng, Gawlick, and O'Neil}{O'Neil
  et~al\mbox{.}}{1996}]%
        {ONeil1996}
\bibfield{author}{\bibinfo{person}{Patrick~E. O'Neil}, \bibinfo{person}{Edward
  Cheng}, \bibinfo{person}{Dieter Gawlick}, {and} \bibinfo{person}{Elizabeth~J.
  O'Neil}.} \bibinfo{year}{1996}\natexlab{}.
\newblock \showarticletitle{{The log-structured merge-tree (LSM-tree)}}.
\newblock \bibinfo{journal}{\emph{Acta Informatica}} \bibinfo{volume}{33},
  \bibinfo{number}{4} (\bibinfo{year}{1996}), \bibinfo{pages}{351--385}.
\newblock
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=230823.230826}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{{\"{O}}zcan, Tian, and
  T{\"{o}}z{\"{u}}n}{{\"{O}}zcan et~al\mbox{.}}{2017}]%
        {Ozcan2017}
\bibfield{author}{\bibinfo{person}{Fatma {\"{O}}zcan},
  \bibinfo{person}{Yuanyuan Tian}, {and} \bibinfo{person}{Pinar
  T{\"{o}}z{\"{u}}n}.} \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{Hybrid Transactional/Analytical Processing: A
  Survey}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data}}.
  \bibinfo{pages}{1771--1775}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3035918.3054784}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Papadomanolakis and Ailamaki}{Papadomanolakis
  and Ailamaki}{2004}]%
        {Papadomanolakis2004}
\bibfield{author}{\bibinfo{person}{Stratos Papadomanolakis} {and}
  \bibinfo{person}{Anastasia Ailamaki}.} \bibinfo{year}{2004}\natexlab{}.
\newblock \showarticletitle{{AutoPart: Automating Schema Design for Large
  Scientific Databases Using Data Partitioning}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the International Conference on
  Scientific and Statistical Database Management (SSDBM)}}.
  \bibinfo{pages}{383}.
\newblock
\showISBNx{0-7695-2146-0}
\urldef\tempurl%
\url{https://doi.org/10.1109/SSDBM.2004.19}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Pardo}{Pardo}{2018}]%
        {Pardo2018-ou}
\bibfield{author}{\bibinfo{person}{Leandro Pardo}.}
  \bibinfo{year}{2018}\natexlab{}.
\newblock \bibinfo{booktitle}{\emph{{Statistical Inference Based on Divergence
  Measures}}}.
\newblock \bibinfo{publisher}{Chapman and Hall/CRC}.
\newblock
\showISBNx{9780429148521, 9780429148521}
\urldef\tempurl%
\url{https://doi.org/10.1201/9781420034813}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Pavlo, Angulo, Arulraj, Lin, Lin, Ma, Menon,
  Mowry, Perron, Quah, Santurkar, Tomasic, Toor, Aken, Wang, Wu, Xian, and
  Zhang}{Pavlo et~al\mbox{.}}{2017}]%
        {Pavlo2017}
\bibfield{author}{\bibinfo{person}{Andrew Pavlo}, \bibinfo{person}{Gustavo
  Angulo}, \bibinfo{person}{Joy Arulraj}, \bibinfo{person}{Haibin Lin},
  \bibinfo{person}{Jiexi Lin}, \bibinfo{person}{Lin Ma},
  \bibinfo{person}{Prashanth Menon}, \bibinfo{person}{Todd~C Mowry},
  \bibinfo{person}{Matthew Perron}, \bibinfo{person}{Ian Quah},
  \bibinfo{person}{Siddharth Santurkar}, \bibinfo{person}{Anthony Tomasic},
  \bibinfo{person}{Skye Toor}, \bibinfo{person}{Dana~Van Aken},
  \bibinfo{person}{Ziqi Wang}, \bibinfo{person}{Yingjun Wu},
  \bibinfo{person}{Ran Xian}, {and} \bibinfo{person}{Tieying Zhang}.}
  \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{Self-Driving Database Management Systems}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the Biennial Conference on
  Innovative Data Systems Research (CIDR)}}.
\newblock
\urldef\tempurl%
\url{http://cidrdb.org/cidr2017/papers/p42-pavlo-cidr17.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Pezzini, Feinberg, Rayner, and
  Edjlali}{Pezzini et~al\mbox{.}}{2014}]%
        {Pezzini2014}
\bibfield{author}{\bibinfo{person}{Massimo Pezzini}, \bibinfo{person}{Donald
  Feinberg}, \bibinfo{person}{Nigel Rayner}, {and} \bibinfo{person}{Roxane
  Edjlali}.} \bibinfo{year}{2014}\natexlab{}.
\newblock \showarticletitle{{Hybrid Transaction/Analytical Processing Will
  Foster Opportunities for Dramatic Business Innovation}}.
\newblock \bibinfo{journal}{\emph{https://www.gartner.com/doc/2657815/}}
  (\bibinfo{year}{2014}).
\newblock
\urldef\tempurl%
\url{https://www.gartner.com/doc/2657815/}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Ren, Zheng, Arulraj, and Gibson}{Ren
  et~al\mbox{.}}{2017}]%
        {Ren2017}
\bibfield{author}{\bibinfo{person}{Kai Ren}, \bibinfo{person}{Qing Zheng},
  \bibinfo{person}{Joy Arulraj}, {and} \bibinfo{person}{Garth Gibson}.}
  \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{SlimDB: A Space-Efficient Key-Value Storage Engine
  For Semi-Sorted Data}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{10}, \bibinfo{number}{13} (\bibinfo{year}{2017}),
  \bibinfo{pages}{2037--2048}.
\newblock
\urldef\tempurl%
\url{http://www.vldb.org/pvldb/vol10/p2037-ren.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Research}{Research}{2019}]%
        {GrandViewResearch2019}
\bibfield{author}{\bibinfo{person}{Grand~View Research}.}
  \bibinfo{year}{2019}\natexlab{}.
\newblock \showarticletitle{{Private Cloud Server Market Size, Share {\&} Trend
  Analysis Report By Hosting Type (User Hosting, Provider Hosting), By
  Organization Type (SME, Large Enterprise), By Region, And Segment Forecasts,
  2019 - 2025}}.
\newblock \bibinfo{journal}{\emph{White Paper}} (\bibinfo{year}{2019}).
\newblock

\bibitem[\protect\citeauthoryear{RocksDB}{RocksDB}{2020}]%
        {RocksDB2020a}
\bibfield{author}{\bibinfo{person}{RocksDB}.} \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{Leveled Compaction}}.
\newblock
  \bibinfo{journal}{\emph{https://github.com/facebook/rocksdb/wiki/Leveled-Compaction}}
  (\bibinfo{year}{2020}).
\newblock

\bibitem[\protect\citeauthoryear{Sarkar, Papon, Staratzis, and
  Athanassoulis}{Sarkar et~al\mbox{.}}{2020}]%
        {Sarkar2020}
\bibfield{author}{\bibinfo{person}{Subhadeep Sarkar},
  \bibinfo{person}{Tarikul~Islam Papon}, \bibinfo{person}{Dimitris Staratzis},
  {and} \bibinfo{person}{Manos Athanassoulis}.}
  \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{Lethe: A Tunable Delete-Aware LSM Engine}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{893--908}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3318464.3389757}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Sarkar, Staratzis, Zhu, and
  Athanassoulis}{Sarkar et~al\mbox{.}}{2021}]%
        {Sarkar2021c}
\bibfield{author}{\bibinfo{person}{Subhadeep Sarkar}, \bibinfo{person}{Dimitris
  Staratzis}, \bibinfo{person}{Zichen Zhu}, {and} \bibinfo{person}{Manos
  Athanassoulis}.} \bibinfo{year}{2021}\natexlab{}.
\newblock \showarticletitle{{Constructing and Analyzing the LSM Compaction
  Design Space}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  (\bibinfo{year}{2021}).
\newblock

\bibitem[\protect\citeauthoryear{Schnaitter, Abiteboul, Milo, and
  Polyzotis}{Schnaitter et~al\mbox{.}}{2006}]%
        {Schnaitter2006}
\bibfield{author}{\bibinfo{person}{Karl Schnaitter}, \bibinfo{person}{Serge
  Abiteboul}, \bibinfo{person}{Tova Milo}, {and} \bibinfo{person}{Neoklis
  Polyzotis}.} \bibinfo{year}{2006}\natexlab{}.
\newblock \showarticletitle{{COLT: Continuous On-Line Database Tuning}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD International
  Conference on Management of Data}}. \bibinfo{pages}{793--795}.
\newblock
\showISBNx{1595934340}
\urldef\tempurl%
\url{https://doi.org/10.1145/1142473.1142592}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Schnaitter, Abiteboul, Milo, and
  Polyzotis}{Schnaitter et~al\mbox{.}}{2007}]%
        {Schnaitter2007}
\bibfield{author}{\bibinfo{person}{Karl Schnaitter}, \bibinfo{person}{Serge
  Abiteboul}, \bibinfo{person}{Tova Milo}, {and} \bibinfo{person}{Neoklis
  Polyzotis}.} \bibinfo{year}{2007}\natexlab{}.
\newblock \showarticletitle{{On-Line Index Selection for Shifting Workloads}}.
  In \bibinfo{booktitle}{\emph{Proceedings of the IEEE International Conference
  on Data Engineering Workshops (ICDEW)}}. \bibinfo{pages}{459--468}.
\newblock
\showISBNx{978-1-4244-0831-3}
\urldef\tempurl%
\url{https://doi.org/10.1109/ICDEW.2007.4401029}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Schnaitter and Polyzotis}{Schnaitter and
  Polyzotis}{2012}]%
        {Schnaitter2012}
\bibfield{author}{\bibinfo{person}{Karl Schnaitter} {and}
  \bibinfo{person}{Neoklis Polyzotis}.} \bibinfo{year}{2012}\natexlab{}.
\newblock \showarticletitle{{Semi-automatic index tuning}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{5}, \bibinfo{number}{5} (\bibinfo{year}{2012}),
  \bibinfo{pages}{478--489}.
\newblock
\showISSN{21508097}
\urldef\tempurl%
\url{https://doi.org/10.14778/2140436.2140444}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Schuhknecht, Dittrich, and Linden}{Schuhknecht
  et~al\mbox{.}}{2018}]%
        {Schuhknecht2018}
\bibfield{author}{\bibinfo{person}{Felix~Martin Schuhknecht},
  \bibinfo{person}{Jens Dittrich}, {and} \bibinfo{person}{Laurent Linden}.}
  \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{Adaptive Adaptive Indexing}}. In
  \bibinfo{booktitle}{\emph{Proceedings of the IEEE International Conference on
  Data Engineering (ICDE)}}. \bibinfo{pages}{665--676}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1109/ICDE.2018.00066}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Serafini, Taft, Elmore, Pavlo, Aboulnaga, and
  Stonebraker}{Serafini et~al\mbox{.}}{2016}]%
        {Serafini2016}
\bibfield{author}{\bibinfo{person}{Marco Serafini}, \bibinfo{person}{Rebecca
  Taft}, \bibinfo{person}{Aaron~J Elmore}, \bibinfo{person}{Andrew Pavlo},
  \bibinfo{person}{Ashraf Aboulnaga}, {and} \bibinfo{person}{Michael
  Stonebraker}.} \bibinfo{year}{2016}\natexlab{}.
\newblock \showarticletitle{{Clay: Fine-Grained Adaptive Partitioning for
  General Database Schemas}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{10}, \bibinfo{number}{4} (\bibinfo{year}{2016}),
  \bibinfo{pages}{445--456}.
\newblock
\urldef\tempurl%
\url{http://www.vldb.org/pvldb/vol10/p445-serafini.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Shasha and Bonnet}{Shasha and Bonnet}{2002}]%
        {Shasha2002}
\bibfield{author}{\bibinfo{person}{Dennis~E Shasha} {and}
  \bibinfo{person}{Philippe Bonnet}.} \bibinfo{year}{2002}\natexlab{}.
\newblock \showarticletitle{{Database Tuning: Principles, Experiments, and
  Troubleshooting Techniques}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Very Large Data Bases (VLDB)}}.
\newblock

\bibitem[\protect\citeauthoryear{Sun, Franklin, Krishnan, and Xin}{Sun
  et~al\mbox{.}}{2014}]%
        {Sun2014}
\bibfield{author}{\bibinfo{person}{Liwen Sun}, \bibinfo{person}{Michael~J.
  Franklin}, \bibinfo{person}{Sanjay Krishnan}, {and}
  \bibinfo{person}{Reynold~S. Xin}.} \bibinfo{year}{2014}\natexlab{}.
\newblock \showarticletitle{{Fine-grained Partitioning for Aggressive Data
  Skipping}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data}}.
  \bibinfo{pages}{1115--1126}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/2588555.2610515}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Sun, Franklin, Wang, and Wu}{Sun
  et~al\mbox{.}}{2016}]%
        {Sun2016}
\bibfield{author}{\bibinfo{person}{Liwen Sun}, \bibinfo{person}{Michael~J.
  Franklin}, \bibinfo{person}{Jiannan Wang}, {and} \bibinfo{person}{Eugene
  Wu}.} \bibinfo{year}{2016}\natexlab{}.
\newblock \showarticletitle{{Skipping-oriented Partitioning for Columnar
  Layouts}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{10}, \bibinfo{number}{4} (\bibinfo{year}{2016}),
  \bibinfo{pages}{421--432}.
\newblock
\urldef\tempurl%
\url{http://www.vldb.org/pvldb/vol10/p421-sun.pdf}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Tarkoma, Rothenberg, and Lagerspetz}{Tarkoma
  et~al\mbox{.}}{2012}]%
        {Tarkoma2012}
\bibfield{author}{\bibinfo{person}{Sasu Tarkoma},
  \bibinfo{person}{Christian~Esteve Rothenberg}, {and} \bibinfo{person}{Eemil
  Lagerspetz}.} \bibinfo{year}{2012}\natexlab{}.
\newblock \showarticletitle{{Theory and Practice of Bloom Filters for
  Distributed Systems}}.
\newblock \bibinfo{journal}{\emph{IEEE Communications Surveys {\&} Tutorials}}
  \bibinfo{volume}{14}, \bibinfo{number}{1} (\bibinfo{year}{2012}),
  \bibinfo{pages}{131--155}.
\newblock
\urldef\tempurl%
\url{http://ieeexplore.ieee.org/xpl/login.jsp?arnumber=5751342}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Valentin, Zuliani, Zilio, Lohman, and
  Skelley}{Valentin et~al\mbox{.}}{2000}]%
        {Valentin2000}
\bibfield{author}{\bibinfo{person}{Gary Valentin}, \bibinfo{person}{Michael
  Zuliani}, \bibinfo{person}{Daniel~C. Zilio}, \bibinfo{person}{Guy~M. Lohman},
  {and} \bibinfo{person}{Alan Skelley}.} \bibinfo{year}{2000}\natexlab{}.
\newblock \showarticletitle{{DB2 Advisor: An Optimizer Smart Enough to
  Recommend its own Indexes}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  IEEE International Conference on Data Engineering (ICDE)}}.
  \bibinfo{pages}{101--110}.
\newblock
\showISBNx{0-7695-0506-6}
\urldef\tempurl%
\url{http://dx.doi.org/10.1109/ICDE.2000.839397}
\showURL{%
\tempurl}

\bibitem[\protect\citeauthoryear{Virtanen, Gommers, Oliphant, Haberland, Reddy,
  and Cournapeau}{Virtanen et~al\mbox{.}}{2020}]%
        {2020SciPy-NMeth}
\bibfield{author}{\bibinfo{person}{Pauli Virtanen}, \bibinfo{person}{Ralf
  Gommers}, \bibinfo{person}{Travis~E. Oliphant}, \bibinfo{person}{Matt
  Haberland}, \bibinfo{person}{Tyler Reddy}, {and} \bibinfo{person}{et~al.
  Cournapeau, D}.} \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{{SciPy} 1.0: Fundamental Algorithms for Scientific
  Computing in Python}}.
\newblock \bibinfo{journal}{\emph{Nature Methods}}  \bibinfo{volume}{17}
  (\bibinfo{year}{2020}), \bibinfo{pages}{261--272}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1038/s41592-019-0686-2}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{{Wikipedia contributors}}{{Wikipedia
  contributors}}{2021}]%
        {enwiki:1025193696}
\bibfield{author}{\bibinfo{person}{{Wikipedia contributors}}.}
  \bibinfo{year}{2021}\natexlab{}.
\newblock \bibinfo{title}{Bloom filter --- {Wikipedia}{,} The Free
  Encyclopedia}.
\newblock
  \bibinfo{howpublished}{\url{https://en.wikipedia.org/w/index.php?title=Bloom_filter&oldid=1025193696}}.
\newblock
\newblock
\shownote{[Online; accessed 8-June-2021].}

\bibitem[\protect\citeauthoryear{WiredTiger}{WiredTiger}{2021}]%
        {WiredTiger}
\bibfield{author}{\bibinfo{person}{WiredTiger}.}
  \bibinfo{year}{2021}\natexlab{}.
\newblock \showarticletitle{{Source Code}}.
\newblock \bibinfo{journal}{\emph{https://github.com/wiredtiger/wiredtiger}}
  (\bibinfo{year}{2021}).
\newblock

\bibitem[\protect\citeauthoryear{Wolski, Brevik, Chard, and Chard}{Wolski
  et~al\mbox{.}}{2017}]%
        {Wolski2017}
\bibfield{author}{\bibinfo{person}{Rich Wolski}, \bibinfo{person}{John Brevik},
  \bibinfo{person}{Ryan Chard}, {and} \bibinfo{person}{Kyle Chard}.}
  \bibinfo{year}{2017}\natexlab{}.
\newblock \showarticletitle{{Probabilistic guarantees of execution duration for
  Amazon spot instances}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference for High Performance Computing, Networking, Storage
  and Analysis (SC)}}. \bibinfo{pages}{18:1----18:11}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3126908.3126953}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Yang, Wu, Zhang, Cheng, Li, Zou, Wang, Chen,
  Wang, and Huang}{Yang et~al\mbox{.}}{2020}]%
        {Yang2020}
\bibfield{author}{\bibinfo{person}{Lei Yang}, \bibinfo{person}{Hong Wu},
  \bibinfo{person}{Tieying Zhang}, \bibinfo{person}{Xuntao Cheng},
  \bibinfo{person}{Feifei Li}, \bibinfo{person}{Lei Zou},
  \bibinfo{person}{Yujie Wang}, \bibinfo{person}{Rongyao Chen},
  \bibinfo{person}{Jianying Wang}, {and} \bibinfo{person}{Gui Huang}.}
  \bibinfo{year}{2020}\natexlab{}.
\newblock \showarticletitle{{Leaper: A Learned Prefetcher for Cache
  Invalidation in LSM-tree based Storage Engines}}.
\newblock \bibinfo{journal}{\emph{Proceedings of the VLDB Endowment}}
  \bibinfo{volume}{13}, \bibinfo{number}{11} (\bibinfo{year}{2020}),
  \bibinfo{pages}{1976--1989}.
\newblock

\bibitem[\protect\citeauthoryear{Zhang, Lim, Leis, Andersen, Kaminsky, Keeton,
  and Pavlo}{Zhang et~al\mbox{.}}{2018}]%
        {Zhang2018a}
\bibfield{author}{\bibinfo{person}{Huanchen Zhang}, \bibinfo{person}{Hyeontaek
  Lim}, \bibinfo{person}{Viktor Leis}, \bibinfo{person}{David~G Andersen},
  \bibinfo{person}{Michael Kaminsky}, \bibinfo{person}{Kimberly Keeton}, {and}
  \bibinfo{person}{Andrew Pavlo}.} \bibinfo{year}{2018}\natexlab{}.
\newblock \showarticletitle{{SuRF: Practical Range Query Filtering with Fast
  Succinct Tries}}. In \bibinfo{booktitle}{\emph{Proceedings of the ACM SIGMOD
  International Conference on Management of Data}}. \bibinfo{pages}{323--336}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3183713.3196931}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Zhang, Lim, Leis, Andersen, Kaminsky, Keeton,
  and Pavlo}{Zhang et~al\mbox{.}}{2020a}]%
        {Zhang2020a}
\bibfield{author}{\bibinfo{person}{Huanchen Zhang}, \bibinfo{person}{Hyeontaek
  Lim}, \bibinfo{person}{Viktor Leis}, \bibinfo{person}{David~G Andersen},
  \bibinfo{person}{Michael Kaminsky}, \bibinfo{person}{Kimberly Keeton}, {and}
  \bibinfo{person}{Andrew Pavlo}.} \bibinfo{year}{2020}\natexlab{a}.
\newblock \showarticletitle{{Succinct Range Filters}}.
\newblock \bibinfo{journal}{\emph{ACM Transactions on Database Systems (TODS)}}
  \bibinfo{volume}{45}, \bibinfo{number}{2} (\bibinfo{year}{2020}),
  \bibinfo{pages}{5:1----5:31}.
\newblock
\urldef\tempurl%
\url{https://doi.org/10.1145/3375660}
\showDOI{\tempurl}

\bibitem[\protect\citeauthoryear{Zhang, Wang, Cheng, Xu, Yu, Huang, Zhang, He,
  Li, Cao, Huang, and Sun}{Zhang et~al\mbox{.}}{2020b}]%
        {Zhang2020}
\bibfield{author}{\bibinfo{person}{Teng Zhang}, \bibinfo{person}{Jianying
  Wang}, \bibinfo{person}{Xuntao Cheng}, \bibinfo{person}{Hao Xu},
  \bibinfo{person}{Nanlong Yu}, \bibinfo{person}{Gui Huang},
  \bibinfo{person}{Tieying Zhang}, \bibinfo{person}{Dengcheng He},
  \bibinfo{person}{Feifei Li}, \bibinfo{person}{Wei Cao},
  \bibinfo{person}{Zhongdong Huang}, {and} \bibinfo{person}{Jianling Sun}.}
  \bibinfo{year}{2020}\natexlab{b}.
\newblock \showarticletitle{{FPGA-Accelerated Compactions for LSM-based
  Key-Value Store}}. In \bibinfo{booktitle}{\emph{18th USENIX Conference on
  File and Storage Technologies, FAST 2020, Santa Clara, CA, USA, February
  24-27, 2020}}. \bibinfo{pages}{225--237}.
\newblock

\bibitem[\protect\citeauthoryear{Zilio, Rao, Lightstone, Lohman, Storm,
  Garcia-Arellano, and Fadden}{Zilio et~al\mbox{.}}{2004}]%
        {Zilio2004}
\bibfield{author}{\bibinfo{person}{Daniel~C. Zilio}, \bibinfo{person}{Jun Rao},
  \bibinfo{person}{Sam Lightstone}, \bibinfo{person}{Guy~M. Lohman},
  \bibinfo{person}{Adam Storm}, \bibinfo{person}{Christian Garcia-Arellano},
  {and} \bibinfo{person}{Scott Fadden}.} \bibinfo{year}{2004}\natexlab{}.
\newblock \showarticletitle{{DB2 Design Advisor: Integrated Automatic Physical
  Database Design}}. In \bibinfo{booktitle}{\emph{Proceedings of the
  International Conference on Very Large Data Bases (VLDB)}}.
  \bibinfo{pages}{1087--1097}.
\newblock
\showISBNx{0-12-088469-0}
\urldef\tempurl%
\url{http://dl.acm.org/citation.cfm?id=1316689.1316783}
\showURL{%
\tempurl}

\end{thebibliography}

repository: chdhr-harshal/endure-robust-lsm

repo_name: chdhr-harshal/endure-robust-lsm

extension: bbl


text:
file(REMOVE_RECURSE
  "CMakeFiles/TMC_OCTv3.dir/src/tmcoct_go.c.o"
  "CMakeFiles/TMC_OCTv3.dir/src/tmcoct_io.c.o"
  "CMakeFiles/TMC_OCTv3.dir/src/tmcoct_main.c.o"
  "CMakeFiles/TMC_OCTv3.dir/src/tmcoct_mesh.c.o"
  "CMakeFiles/TMC_OCTv3.dir/src/tmcoct_nr.c.o"
  "CMakeFiles/TMC_OCTv3.dir/src/tmcoct_bias.c.o"
  "TMC_OCTv3.pdb"
  "TMC_OCTv3"
)

# Per-language clean rules from dependency scanning.
foreach(lang C)
  include(CMakeFiles/TMC_OCTv3.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

license: MIT

license_type: permissive

branch_name: refs/heads/master

extension: cmake


text:
SUMMARY = "Apache Thrift"
DESCRIPTION =  "A software framework, for scalable cross-language services development"
HOMEPAGE = "https://thrift.apache.org/"

LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=394465e125cffc0f133695ed43f14047 \
                    file://NOTICE;md5=2659b43daca219f99a2f2626ea128f73"

DEPENDS = "thrift-native boost flex-native bison-native openssl"

SRC_URI = "https://www-eu.apache.org/dist/thrift//${PV}/${BPN}-${PV}.tar.gz \
           file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch \
          "
SRC_URI[md5sum] = "38a27d391a2b03214b444cb13d5664f1"
SRC_URI[sha256sum] = "7ad348b88033af46ce49148097afe354d513c1fca7c607b59c33ebb6064b5179"

BBCLASSEXTEND = "native nativesdk"

inherit pkgconfig cmake python3native

export STAGING_INCDIR
export STAGING_LIBDIR
export BUILD_SYS
export HOST_SYS

EXTRA_OECMAKE = " \
    -DBUILD_LIBRARIES=ON \
    -DBUILD_COMPILER=ON \
    -DBUILD_TESTING=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_TUTORIALS=OFF \
    -DWITH_CPP=ON \
    -DWITH_JAVA=OFF \
    -DWITH_PYTHON=OFF \
    -DWITH_STATIC_LIB=ON \
    -DWITH_SHARED_LIB=ON \
    -DWITH_OPENSSL=ON \
    -DWITH_QT5=OFF \
"

PACKAGECONFIG ??= "libevent glib"
PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent"
PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0"

do_install_append () {
    ln -sf thrift ${D}/${bindir}/thrift-compiler
}

LEAD_SONAME = "libthrift.so.${PV}"

# thrift packages
PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN} lib${BPN}z lib${BPN}nb lib${BPN}-c-glib"
FILES_lib${BPN} = "${libdir}/libthrift.so.*"
FILES_lib${BPN}z = "${libdir}/libthriftz.so.*"
FILES_lib${BPN}nb = "${libdir}/libthriftnb.so.*"
FILES_lib${BPN}-c-glib = "${libdir}/libthrift_c_glib.so.*"
FILES_${PN}-compiler = "${bindir}/*"

# The thrift packages just pulls in some default dependencies but is otherwise empty
RRECOMMENDS_${PN} = "${PN}-compiler lib${BPN}"
ALLOW_EMPTY_${PN} = "1"
RRECOMMENDS_${PN}_class-native = ""
RRECOMMENDS_${PN}_class-nativesdk = ""

repository: ni/meta-openembedded

repo_name: ni/meta-openembedded

branch_name: refs/heads/nilrt/master/hardknott

gha_license_id: MIT

gha_language: BitBake

extension: bb


text:
@Article{cardenas2012estructura,
  title = {Estructura poblacional de phytophthora infestans: una escala global},
  author = {Martha C{\a'a}rdenas and Giovanna Danies and Javier Tabima and Adriana Bernal and Silvia Restrepo},
  journal = {Revista Acta Biologica Colombiana},
  volume = {17},
  number = {2},
  pages = {227--241},
  year = {2012},
  publisher = {Universidad Nacional de Colombia, Facultad de Biologia},
  date = {2012-01-01},
}

extension: bib


text:
// Copyright © 2019 The Things Network Foundation, The Things Industries B.V.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package commands

import (
	"fmt"

	"github.com/spf13/cobra"
)

var (
	applicationClaim = &cobra.Command{
		Use:    "claim",
		Short:  "Manage claim settings in applications (DEPRECATED)",
		Hidden: true,
		RunE: func(cmd *cobra.Command, args []string) error {
			return fmt.Errorf(
				"this command is no longer supported. End device claiming is integrated into the device creation flow",
			)
		},
	}
	applicationClaimAuthorize = &cobra.Command{
		Use:    "authorize [application-id]",
		Short:  "Authorize an application for claiming (DEPRECATED)",
		Hidden: true,
		RunE: func(cmd *cobra.Command, args []string) error {
			return fmt.Errorf(
				"this command is no longer supported. End device claiming is integrated into the device creation flow",
			)
		},
	}
	applicationClaimUnauthorize = &cobra.Command{
		Use:    "unauthorize [application-id]",
		Short:  "Unauthorize an application for claiming (DEPRECATED)",
		Hidden: true,
		RunE: func(cmd *cobra.Command, args []string) error {
			return fmt.Errorf(
				"this command is no longer supported. End device claiming is integrated into the device creation flow",
			)
		},
	}
)

func init() {
	applicationClaimAuthorize.Flags().String("api-key", "", "")
	applicationClaimAuthorize.Flags().String("api-key-expiry", "", "API key expiry date (YYYY-MM-DD:HH:mm) - only applicable when creating API Key") //nolint:lll
	applicationClaim.AddCommand(applicationClaimAuthorize)
	applicationClaim.AddCommand(applicationClaimUnauthorize)
	applicationClaim.PersistentFlags().AddFlagSet(applicationIDFlags())
	applicationsCommand.AddCommand(applicationClaim)
}

repository: TheThingsNetwork/lorawan-stack

repo_name: TheThingsNetwork/lorawan-stack

gha_language: Go

extension: go


text:
/*
Copyright 2021 The Custom Pod Autoscaler Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package fake

import (
	"time"

	autoscaling "k8s.io/api/autoscaling/v2beta2"
	corev1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/labels"
	metricsclient "k8s.io/kubernetes/pkg/controller/podautoscaler/metrics"
)

// MetricClient (fake) provides a way to insert functionality into a MetricClient
type MetricClient struct {
	GetResourceMetricReactor func(resource corev1.ResourceName, namespace string, selector labels.Selector, container string) (metricsclient.PodMetricsInfo, time.Time, error)
	GetRawMetricReactor      func(metricName string, namespace string, selector labels.Selector, metricSelector labels.Selector) (metricsclient.PodMetricsInfo, time.Time, error)
	GetObjectMetricReactor   func(metricName string, namespace string, objectRef *autoscaling.CrossVersionObjectReference, metricSelector labels.Selector) (int64, time.Time, error)
	GetExternalMetricReactor func(metricName string, namespace string, selector labels.Selector) ([]int64, time.Time, error)
}

// GetResourceMetric calls the fake MetricClient function
func (f *MetricClient) GetResourceMetric(resource corev1.ResourceName, namespace string, selector labels.Selector, container string) (metricsclient.PodMetricsInfo, time.Time, error) {
	return f.GetResourceMetricReactor(resource, namespace, selector, container)
}

// GetRawMetric calls the fake MetricClient function
func (f *MetricClient) GetRawMetric(metricName string, namespace string, selector labels.Selector, metricSelector labels.Selector) (metricsclient.PodMetricsInfo, time.Time, error) {
	return f.GetRawMetricReactor(metricName, namespace, selector, metricSelector)
}

// GetObjectMetric calls the fake MetricClient function
func (f *MetricClient) GetObjectMetric(metricName string, namespace string, objectRef *autoscaling.CrossVersionObjectReference, metricSelector labels.Selector) (int64, time.Time, error) {
	return f.GetObjectMetricReactor(metricName, namespace, objectRef, metricSelector)
}

// GetExternalMetric calls the fake MetricClient function
func (f *MetricClient) GetExternalMetric(metricName string, namespace string, selector labels.Selector) ([]int64, time.Time, error) {
	return f.GetExternalMetricReactor(metricName, namespace, selector)
}

repository: Dspatharakis/custom-pod-autoscaler

repo_name: Dspatharakis/custom-pod-autoscaler


text:
package main

import "github.com/agalitsyn/goapi/service"

// Start service and catch all errors for running service
func main() {
	service.Start()
}

repository: ksidenko/goapi

repo_name: ksidenko/goapi


text:
// Write a function to populate a mapping from element names -- p, div, span,
// and so on -- to the number of elements with that name in an HTML document
// tree.

package main

import (
	"fmt"
	"golang.org/x/net/html"
	"log"
	"os"
	"sort"
)

func populateMapping(n *html.Node, m map[string]int) map[string]int {
	if n == nil {
		return m
	}
	if n.DataAtom.String() != "" {
		m[n.DataAtom.String()]++
	}
	m = populateMapping(n.FirstChild, m)
	m = populateMapping(n.NextSibling, m)
	return m
}

func main() {
	node, err := html.Parse(os.Stdin)
	if err != nil {
		log.Fatal(err)
	}
	m := make(map[string]int)
	m = populateMapping(node, m)
	// Sort the tag names so that we iterate through the tags determiniscally every time (easier to test too)
	var tags []string
	for tag := range m {
		tags = append(tags, tag)
	}
	sort.Strings(tags)
	fmt.Printf("%-10v %v\n", "tag", "ocurrences")
	for _, tag := range tags {
		fmt.Printf("%-10v %v\n", tag, m[tag])
	}
}


text:
package myflyingbox

// Offer is a offer struct
type Offer struct {
	ID              string           `json:"id"`
	QuoteID         string           `json:"quote_id"`
	ProductID       string           `json:"product_id"`
	Product         Product          `json:"product"`
	Price           *Price           `json:"price,omitempty"`
	PriceVAT        *Price           `json:"price_vat,omitempty"`
	TotalPrice      *Price           `json:"total_price,omitempty"`
	InsurancePrice  *Price           `json:"insurance_price,omitempty"`
	CollectionDates []CollectionDate `json:"collection_dates,omitempty"`

	// Response data.
	Insurable bool `json:"insurable"`
	Orderable bool `json:"orderable"`
}

repository: bradberger/myflyingbox-go

repo_name: bradberger/myflyingbox-go


text:
DESCRIPTION = "fake keyboard/mouse input, window management, and more"
HOMEPAGE = "https://github.com/jordansissel/xdotool.git"
LICENSE = "xdotool"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=2f9cbf7e9401cec8a38666a08851ce6b"

SRCREV = "f5309ecea01463b3bddb4964978631cd201fb7c6"
SRC_URI = "git://github.com/jordansissel/xdotool.git"

S = "${WORKDIR}/git"

inherit autotools-brokensep

do_install () {
    make install
}

repository: akuster/meta-kali

repo_name: akuster/meta-kali


text:
SUMMARY = "W3C XML schema to C++ data binding compiler"
HOMEPAGE = "https://www.codesynthesis.com/products/xsd/"
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://xsd/LICENSE;md5=79e31466c4d9f3a85f2f987c11ebcd83"

BBCLASSEXTEND = "native"

DEPENDS = "xerces-c"

SRC_URI = "https://codesynthesis.com/~boris/tmp/xsd/${PV}.a11/xsd-${PV}.a11+dep.tar.bz2"
SRC_URI[sha256sum] = "4fbe2d1e17ad4451bb3a9d9101ac89f7b465205470f1c7ad5e2c1386ac2c87d2"

S = "${WORKDIR}/xsd-${PV}.a11+dep"

do_install() {
    install -d ${D}${includedir}
    install -m 0755 -D ${S}/xsd/xsd/xsd ${D}${bindir}/xsdcxx
    cp -r ${S}/xsd/libxsd/xsd ${D}${includedir}/xsd
}

repository: schnitzeltony/meta-mortsgna

repo_name: schnitzeltony/meta-mortsgna


text:
package main

import (
	"bufio"
	"errors"
	"flag"
	"fmt"
	"log"
	"os"
	"path"
	"regexp"
	"strconv"
	"strings"

	"github.com/gobs/sortedmap"
	"github.com/google/shlex"
	"github.com/raff/govaluate"
)

var (
	VERSION     = "0.13.0"
	SPACES      = regexp.MustCompile(`\s+`)
	INVALID_POS = errors.New("invalid position")

	EXPR_VAR = regexp.MustCompile(`{{expr:([^}]+)}}`)

	OK              = 0
	MATCH_FOUND     = 100
	MATCH_NOT_FOUND = 101

	SET = struct{}{}

	gitCommit, buildDate string
)

type Pos struct {
	Start, End *int
	Value      *string
}

func (p Pos) String() (result string) {
	if p.Start != nil {
		result = strconv.Itoa(*p.Start)
	} else {
		result += "FIRST"
	}

	result += " TO "

	if p.End != nil {
		result += strconv.Itoa(*p.End)
	} else {
		result += "LAST"
	}

	return
}

func (p *Pos) Set(s string) error {
	p.Start = nil
	p.End = nil

	parts := strings.Split(s, ":")
	if len(parts) < 1 || len(parts) > 2 {
		return INVALID_POS
	}

	if len(parts[0]) > 0 {
		v, err := strconv.Atoi(parts[0])
		if err != nil {
			p.Value = &s
			return nil
		}

		p.Start = &v
	}

	if len(parts) == 1 {
		// not a slice
		// note: same pointer (to distinguish from *p.End == *p.Start that returns an empty slice)
		p.End = p.Start
	} else if len(parts[1]) > 0 {
		v, err := strconv.Atoi(parts[1])
		if err != nil {
			return err
		}

		p.End = &v
	}

	return nil
}

func Slice(source []string, p Pos) []string {
	if p.Value != nil {
		return []string{*p.Value}
	}

	var start, end int

	if p.Start == nil {
		start = 0
	} else if *p.Start >= len(source) {
		return source[0:0]
	} else if *p.Start < 0 {
		start = len(source) + *p.Start
		if start < 0 {
			start = 0
		}
	} else {
		start = *p.Start
	}

	if p.End == p.Start {
		// this should return source[start]
		end = start + 1
	} else if p.End == nil || *p.End >= len(source) {
		return source[start:]
	} else if *p.End < 0 {
		end = len(source) + *p.End
	} else {
		end = *p.End
	}

	if end < start {
		end = start
	}

	return source[start:end]
}

func Quote(a []string) []string {
	q := make([]string, len(a))
	for i, s := range a {
		q[i] = fmt.Sprintf("%q", s)
	}

	return q
}

func Unquote(a []string) []string {
	q := make([]string, len(a))
	for i, s := range a {
		q[i] = strings.Trim(s, `"'`)
	}

	return q
}

func Unescape(s string) string {
	parts := strings.Split(s, `\`)
	if len(parts) == 1 {
		return s
	}

	u := parts[0]

	for _, p := range parts[1:] {
		if len(p) == 0 {
			u += "\\"
			continue
		}

		switch p[0] {
		case 'n':
			u += "\n" + p[1:]

		case 'r':
			u += "\n" + p[1:]

		case 't':
			u += "\t" + p[1:]

		default:
			u += p
		}
	}

	return u
}

func Print(format string, a []string) {
	printable := make([]interface{}, len(a))

	for i, v := range a {
		printable[i] = v
	}

	fmt.Printf(format, printable...)
}

func MustEvaluate(expr string) *govaluate.EvaluableExpression {
	ee, err := govaluate.NewEvaluableExpressionWithFunctions(expr, funcs)
	if err != nil {
		log.Fatalf("%q: %v", expr, err)
	}

	return ee
}

type Context struct {
	vars   map[string]interface{}
	fields []string
	lineno int
}

func (p *Context) Get(name string) (interface{}, error) {

	if strings.HasPrefix(name, "$") {
		n, err := strconv.Atoi(name[1:])
		if err != nil {
			return nil, err
		}

		if n < len(p.fields) {
			return p.fields[n], nil
		}

		return nil, fmt.Errorf("No field %q", name)
	}

	if name == "NF" {
		if p.fields == nil {
			return 0, nil
		}
		return len(p.fields) - 1, nil
	}

	if name == "NR" {
		return p.lineno, nil
	}

	if value, ok := p.vars[name]; ok {
		return value, nil
	}

	return nil, fmt.Errorf("No variable %q", name)
}

func (p *Context) Set(name string, value interface{}) error {

	if strings.HasPrefix(name, "$") {
		return fmt.Errorf("Cannot override field %q", name)
	}

	if name == "NF" || name == "NR" {
		return fmt.Errorf("Cannot override %v", name)
	}

	p.vars[name] = value
	return nil
}

func toFloat(arg interface{}) (float64, error) {
	switch v := arg.(type) {
	case string:
		f, err := strconv.ParseFloat(v, 64)
		return f, err
	case bool:
		if v {
			return 1.0, nil
		} else {
			return 0.0, nil
		}
	case int:
		return float64(v), nil
	case int64:
		return float64(v), nil
	default:
		return v.(float64), nil
	}
}

func toInt(value, vbase interface{}) (int64, error) {
	var base = 10
	var err error

	switch b := vbase.(type) {
	case string:
		base, err = strconv.Atoi(b)
		if err != nil {
			return 0, err
		}
	case float64:
		base = int(b)

	default:
		return 0, fmt.Errorf("expected number/string got %T", b)
	}

	switch v := value.(type) {
	case string:
		i, err := strconv.ParseInt(v, base, 64)
		return i, err
	case bool:
		if v {
			return 1, nil
		} else {
			return 0, nil
		}
	case int:
		return int64(v), nil
	case int64:
		return int64(v), nil
	default:
		return v.(int64), nil
	}
}

var funcs = map[string]govaluate.ExpressionFunction{
	"print": func(arguments ...interface{}) (interface{}, error) {
		fmt.Println(arguments...)
		return int(0), nil
	},

	"num": func(arguments ...interface{}) (interface{}, error) {
		if len(arguments) != 1 {
			return nil, fmt.Errorf("- one parameter expected, got %d", len(arguments))
		}

		return toFloat(arguments[0])
	},

	"int": func(arguments ...interface{}) (interface{}, error) {
		if len(arguments) == 2 {
			return toInt(arguments[0], arguments[1])
		}

		if len(arguments) != 1 {
			return nil, fmt.Errorf("- one parameter expected, got %d", len(arguments))
		}

		f, err := toFloat(arguments[0])
		return int(f), err
	},

	"format": func(arguments ...interface{}) (interface{}, error) {
		if len(arguments) < 1 {
			return nil, fmt.Errorf("- at least one paramenter expected")
		}

		if fm, ok := arguments[0].(string); ok {
			return fmt.Sprintf(fm, arguments[1:]...), nil
		}

		return nil, fmt.Errorf("- expected string, got %T", arguments[0])
	},

	"len": func(arguments ...interface{}) (interface{}, error) {
		if len(arguments) != 1 {
			return nil, fmt.Errorf("- one parameter expected, got %d", len(arguments))
		}

		if s, ok := arguments[0].(string); ok {
			return float64(len(s)), nil
		}

		return nil, fmt.Errorf("- expected string, got %T", arguments[0])
	},

	"substr": func(arguments ...interface{}) (interface{}, error) {
		if len(arguments) < 2 || len(arguments) > 3 {
			return nil, fmt.Errorf("- expected substr(str, num [, num]), got %d", len(arguments))
		}

		s, ok := arguments[0].(string)
		if !ok {
			return nil, fmt.Errorf("- expected string, got %T", arguments[0])
		}

		f, err := toFloat(arguments[1])
		if err != nil {
			return nil, fmt.Errorf("- expected number, got %T", arguments[1])
		}

		start := int(f)
		slen := -1

		if len(arguments) == 3 {
			f, err := toFloat(arguments[2])
			if err != nil {
				return nil, fmt.Errorf("- expected number, got %T", arguments[2])
			}

			slen = int(f)
		}

		if start < 0 { // substr("string", -1) == substr("string", 5)
			start = len(s) + start
			if start < 0 {
				start = 0
			}
		}

		if start >= len(s) {
			return "", nil
		}

		s = s[start:]
		if slen >= 0 && slen < len(s) {
			return s[:slen], nil
		}

		return s, nil
	},
}

func main() {
	version := flag.Bool("version", false, "print version and exit")
	quote := flag.Bool("quote", false, "quote returned fields")
	unquote := flag.Bool("unquote", false, "quote returned fields")
	shellsplit := flag.Bool("shlex", false, "split using shlex/shell-style rules")
	ifs := flag.String("ifs", " ", "input field separator")
	ifn := flag.Int("ifn", -1, "maximum number of fields when splitting input (<1=all)")
	ire := flag.String("ifs-re", "", "input field separator (as regular expression)")
	ofs := flag.String("ofs", " ", "output field separator")
	re := flag.String("re", "", "regular expression for parsing input")
	grep := flag.String("grep", "", "output only lines that match the regular expression")
	contains := flag.String("contains", "", "output only lines that contains the pattern")
	format := flag.String("printf", "", "output is formatted according to specified format")
	matches := flag.String("matches", "", "return status code 100 if any line matches the specified pattern, 101 otherwise")
	after := flag.String("after", "", "process fields in line after specified tag (remove text before tag)")
	before := flag.String("before", "", "process fields in line before specified tag (remove text after tag)")
	afterline := flag.String("after-line", "", "process lines after lines that matches")
	beforeline := flag.String("before-line", "", "process lines before lines that matches")
	afterlinen := flag.Int("after-linen", 0, "process lines after n lines")
	printline := flag.Bool("line", false, "print line numbers")
	debug := flag.Bool("debug", false, "print debug info")
	exprbegin := flag.String("begin", "", "expression to be executed before processing lines")
	exprend := flag.String("end", "", "expression to be executed after processing lines")
	exprline := flag.String("expr", "", "expression to be executed for each line")
	exprtest := flag.String("test", "", "test expression (skip line if false)")
	uniq := flag.Bool("uniq", false, "print only unique lines")
	ucount := flag.Bool("ucount", false, "print unique lines (and count)")
	remove := flag.Bool("remove", false, "remove specified fields instead of selecting them")
	pexpr := flag.Bool("print-expr", false, "print result of -expr")

	flag.Parse()

	if *version {
		extra := ""
		if gitCommit != "" {
			extra = fmt.Sprintf(" (%.4v %v)", gitCommit, buildDate)
		}

		fmt.Printf("%s version %s%v\n", path.Base(os.Args[0]), VERSION, extra)
		return
	}

	pos := make([]Pos, len(flag.Args()))

	for i, arg := range flag.Args() {
		pos[i].Set(arg)
	}

	if len(*format) > 0 && !strings.HasSuffix(*format, "\n") {
		*format += "\n"
	}

	var split_re, split_pattern, match_pattern, grep_pattern *regexp.Regexp
	var expr_begin, expr_end, expr_line, expr_test *govaluate.EvaluableExpression

	status_code := OK

	if len(*matches) > 0 {
		match_pattern = regexp.MustCompile(*matches)
		status_code = MATCH_NOT_FOUND
	}

	if len(*grep) > 0 {
		if !strings.ContainsAny(*grep, "()") {
			*grep = "(" + *grep + ")"
		}
		grep_pattern = regexp.MustCompile(*grep)
	}

	if len(*re) > 0 {
		split_pattern = regexp.MustCompile(*re)
	}

	if len(*ire) > 0 {
		split_re = regexp.MustCompile(*ire)
	}

	if len(*exprbegin) > 0 {
		expr_begin = MustEvaluate(*exprbegin)
	}
	if len(*exprline) > 0 {
		expr_line = MustEvaluate(*exprline)
	}
	if len(*exprend) > 0 {
		expr_end = MustEvaluate(*exprend)
	}
	if len(*exprtest) > 0 {
		expr_test = MustEvaluate(*exprtest)
	}

	scanner := bufio.NewScanner(os.Stdin)
	len_after := len(*after)
	len_afterline := len(*afterline)
	uniques := map[string]int{}

	expr_context := Context{vars: map[string]interface{}{}}

	if expr_begin != nil {
		_, err := expr_begin.Eval(&expr_context)
		if err != nil {
			log.Println("error in begin", err)
		}
	}

	for scanner.Scan() {
		if scanner.Err() != nil {
			log.Fatal(scanner.Err())
		}

		line := scanner.Text()
		expr_context.lineno += 1

		if *afterlinen >= expr_context.lineno {
			continue
		}

		if len_afterline > 0 {
			if strings.Contains(line, *afterline) {
				len_afterline = 0
			}

			continue
		}

		if len(*beforeline) > 0 && strings.Contains(line, *beforeline) {
			break
		}

		if len(*contains) > 0 && !strings.Contains(line, *contains) {
			continue
		}

		if len_after > 0 {
			i := strings.Index(line, *after)
			if i < 0 {
				continue // no match
			}

			line = line[i+len_after:]

			if len(*before) > 0 {
				i := strings.Index(line, *before)
				if i >= 0 {
					line = line[:i]
				}
			}
		}

		expr_context.fields = []string{line} // $0 is the full line

		if *ifn == 0 {
			*ifn = -1
		}

		if *shellsplit {
			var err error

			expr_context.fields, err = shlex.Split(line)
			if err != nil {
				log.Fatal("Error in shlex.Split:", err)
			}
		} else if grep_pattern != nil {
			if matches := grep_pattern.FindStringSubmatch(line); matches != nil {
				expr_context.fields = matches
			} else {
				continue
			}
		} else if split_pattern != nil {
			if matches := split_pattern.FindStringSubmatch(line); matches != nil {
				expr_context.fields = matches
			}
		} else if split_re != nil {
			// split line according to input regular expression
			expr_context.fields = append(expr_context.fields, split_re.Split(line, -1)...)
		} else if *ifs == " " {
			// split line on spaces (compact multiple spaces)
			expr_context.fields = append(expr_context.fields, SPACES.Split(strings.TrimSpace(line), *ifn)...)
		} else {
			// split line according to input field separator
			expr_context.fields = append(expr_context.fields, strings.SplitN(line, *ifs, *ifn)...)
		}

		if *debug {
			log.Printf("field separator: %q expr separator: %q\n", *ifs, split_re)
			log.Printf("input fields: %q\n", expr_context.fields)
			if len(pos) > 0 {
				if *remove {
					log.Printf("output fields remove: %q\n", pos)
				} else {
					log.Printf("output fields: %q\n", pos)
				}
			}
		}

		var result []string

		// do some processing
		if len(pos) > 0 {
			if *remove {
				for _, p := range pos {
					result = append(result, Slice(expr_context.fields, p)...) // XXX: how to remove fields
				}
			} else {
				for _, p := range pos {
					result = append(result, Slice(expr_context.fields, p)...)
				}
			}
		} else {
			result = expr_context.fields[1:]
		}

		if *unquote {
			result = Unquote(result)
		}

		if *quote {
			result = Quote(result)
		}

		if *printline {
			fmt.Printf("%d: ", expr_context.lineno)
		}

		if expr_test != nil {
			res, err := expr_test.Eval(&expr_context)
			if err != nil {
				log.Println("error in expr", err)
			} else {
				switch test := res.(type) {
				case bool:
					if !test {
						continue
					}

				default:
					log.Println("boolean expected, got", test)
					continue
				}
			}
		}

		if expr_line != nil {
			res, err := expr_line.Eval(&expr_context)
			if err != nil {
				log.Println("error in expr", err)
			} else if *pexpr {
				fmt.Println(res)
			} else {
				for i, v := range result {
					if v == `{{expr}}` {
						result[i] = Unescape(fmt.Sprintf("%v", res))
					} else if matches := EXPR_VAR.FindStringSubmatch(v); matches != nil {
						v, err := expr_context.Get(matches[1])
						if err != nil {
							log.Println("expr get", matches[1], err)
						} else {
							result[i] = Unescape(fmt.Sprintf("%v", v))
						}
					}
				}
			}
		}

		if *uniq || *ucount {
			l := strings.Join(result, " ")
			_, exists := uniques[l]
			uniques[l]++

			if exists {
				continue
			}
		}

		if len(*format) > 0 {
			Print(*format, result)
		} else {
			// join the result according to output field separator
			fmt.Println(strings.Join(result, *ofs))
		}

		if match_pattern != nil && match_pattern.MatchString(line) {
			status_code = MATCH_FOUND
		}

	}

	if expr_end != nil {
		_, err := expr_end.Eval(&expr_context)
		if err != nil {
			log.Println("error in end", err)
		}
	}

	if *ucount {
		sorted := sortedmap.AsSortedByValue(uniques, true)
		total := 0

		for _, kv := range sorted {
			fmt.Println(kv.Value, kv.Key)
			total += kv.Value
		}

		fmt.Println(total, "TOTAL COUNT")
	}

	os.Exit(status_code)
}

repository: raff/glin

repo_name: raff/glin


text:
require gst-plugins.inc

PR = "${INC_PR}.0"

DEPENDS += "gst-plugins-base"
DEPENDS_openpli += "libsoup-2.4 flac gst-plugins-base"

do_configure_prepend() {
	sed -i -e s:docs::g Makefile.am
}


text:
SUMMARY = "Dirac compressed video encoder/decoder"
HOMEPAGE = "http://schrodinger.sourceforge.net/"
LICENSE = "MPL-1.1 | GPL-2.0-only | LGPL-2.0-only | MIT"

LIC_FILES_CHKSUM = "file://COPYING;md5=d91a46405fc074b88c963cc4f2a0aae9 \
                    file://COPYING.GPL;md5=e181e3b7c66f5f96921d813c1074f833 \
                    file://COPYING.LGPL;md5=38c893e21baec4cd75ad800ba9e2410a \
                    file://COPYING.MIT;md5=8b345371b3536b4ce37ead1eafc88221 \
                    file://COPYING.MPL;md5=0117647fecb9a932c25a7bbfc0333c37"

DEPENDS = "orc-native orc"

SRC_URI = "https://download.videolan.org/contrib/${BPN}/${BP}.tar.gz \
           file://0001-testsuite-Add-tmp-orc.c-for-missing-_orc_code_orc_de.patch \
           file://configure.ac.patch"

SRC_URI[md5sum] = "da6af08e564ca1157348fb8d92efc891"
SRC_URI[sha256sum] = "1e572a0735b92aca5746c4528f9bebd35aa0ccf8619b22fa2756137a8cc9f912"

EXTRA_OECONF += "STAGING_DIR=${STAGING_DIR_NATIVE}"

inherit autotools-brokensep pkgconfig

repository: openembedded/meta-openembedded

repo_name: openembedded/meta-openembedded


text:
package openrtb

// 5.11 Playback Cessation Modes
//
// Various modes for when playback terminates.
type PlaybackCessationMode int8

const (
	PlaybackCessationModeVideoCompletionOrTerminatedByUser                     PlaybackCessationMode = 1 // On Video Completion or when Terminated by User
	PlaybackCessationModeLeavingViewportOrTerminatedByUser                     PlaybackCessationMode = 2 // On Leaving Viewport or when Terminated by User
	PlaybackCessationModeLeavingViewportUntilVideoCompletionOrTerminatedByUser PlaybackCessationMode = 3 // On Leaving Viewport Continues as a Floating/Slider Unit until Video Completion or when Terminated by User
)

license: Unlicense

repository: evgenigourvitch/openrtb

repo_name: evgenigourvitch/openrtb

gha_license_id: Unlicense


text:
@article{RN1,
   author = {A.M. Legendre},
   title = {Nouvelles méthodes pour la détermination des orbites des comètes},
   journal = {Sur la Méthode des moindres quarrés},
   year = {1805},
   type = {Journal Article}
}

@book{RN2,
   author = {C.F. Gauss},
   title = {Theoria Motus Corporum Coelestium in Sectionibus Conicis Solem Ambientum.},
   year = {1809},
   type = {book}
}

@article{RN3,
   author = {Francis Galton},
   title = {Typical laws of heredity},
   journal = {Nature},
   volume = {15},
   pages = {492–495, 512–514, 532–533},
   year = {1877},
   type = {Journal Article}
}

@article{RN69,
   author = {Yule, G. Udny},
   title = {On the Theory of Correlation},
   journal = {Journal of the Royal Statistical Society},
   volume = {60},
   number = {4},
   pages = {812-854},
   ISSN = {09528385},
   DOI = {10.2307/2979746},
   url = {http://www.jstor.org/stable/2979746},
   year = {1897},
   type = {Journal Article}
}

@article{RN70,
   author = {PEARSON, KARL},
   title = {THE LAW OF ANCESTRAL HEREDITY*},
   journal = {Biometrika},
   volume = {2},
   number = {2},
   pages = {211-228},
   ISSN = {0006-3444},
   DOI = {10.1093/biomet/2.2.211},
   url = {https://dx.doi.org/10.1093/biomet/2.2.211},
   year = {1903},
   type = {Journal Article}
}

@article{RN71,
   author = {Galton, Francis},
   title = {Kinship and Correlation},
   journal = {Statist. Sci.},
   volume = {4},
   number = {2},
   pages = {81-86},
   ISSN = {0883-4237},
   DOI = {10.1214/ss/1177012581},
   url = {https://projecteuclid.org:443/euclid.ss/1177012581},
   year = {1989},
   type = {Journal Article}
}

@article{RN72,
   author = {Fisher, R. A.},
   title = {The Goodness of Fit of Regression Formulae, and the Distribution of Regression Coefficients},
   journal = {Journal of the Royal Statistical Society},
   volume = {85},
   number = {4},
   pages = {597-612},
   ISSN = {09528385},
   DOI = {10.2307/2341124},
   url = {http://www.jstor.org/stable/2341124},
   year = {1922},
   type = {Journal Article}
}

@article{RN73,
   author = {Smith, A. F. M.},
   title = {A General Bayesian Linear Model},
   journal = {Journal of the Royal Statistical Society},
   volume = {35},
   number = {1},
   pages = {67-75},
   year = {1973},
   type = {Journal Article}
}

@article{RN74,
   author = {Lindley, D. V.，Smith, A. F. M.},
   title = {Bayes Estimates for the Linear Model},
   journal = {Journal of the Royal Statistical Society},
   volume = {34},
   number = {1},
   pages = {1-41},
   year = {1972},
   type = {Journal Article}
}

@article{RN75,
   author = {雷雳，张雷},
   title = {多层线性模型的原理及应用},
   journal = {首都师范大学学报(社会科学版)},
   number = {02},
   pages = {110-114},
   ISSN = {1004-9142},
   year = {2002},
   type = {Journal Article}
}

@book{RN76,
   author = {Raudenbush, Stephen W，Bryk, Anthony S},
   title = {Hierarchical linear models: Applications and data analysis methods},
   publisher = {Sage},
   volume = {1},
   ISBN = {076191904X},
   year = {2002},
   type = {Book}
}

@book{RN77,
   author = {Cohen, Patricia，West, Stephen G，Aiken, Leona S},
   title = {Applied multiple regression/correlation analysis for the behavioral sciences},
   publisher = {Psychology Press},
   ISBN = {1135468257},
   year = {2014},
   type = {Book}
}

@inproceedings{RN79,
   author = {Tikhonov, Andrei Nikolaevich},
   title = {On the solution of ill-posed problems and the method of regularization},
   booktitle = {Doklady Akademii Nauk},
   publisher = {Russian Academy of Sciences},
   volume = {151},
   pages = {501-504},
   ISBN = {0869-5652},
   type = {Conference Proceedings}
}

@phdthesis{RN80,
   author = {郭鹏妮},
   title = {岭回归与分位数回归的研究及结合应用},
   university = {哈尔滨工业大学},
   type = {硕士},
   year = {2014},
   type = {Thesis}
}

@book{RN81,
   author = {Carlin, Bradley P，Louis, Thomas A},
   title = {Bayesian methods for data analysis},
   publisher = {CRC Press},
   ISBN = {1584886986},
   year = {2008},
   type = {Book}
}

@inproceedings{RN82,
   author = {Ng, Andrew Y},
   title = {Feature selection, L 1 vs. L 2 regularization, and rotational invariance},
   booktitle = {Proceedings of the twenty-first international conference on Machine learning},
   publisher = {ACM},
   pages = {78},
   ISBN = {1581138385},
   type = {Conference Proceedings}
}

@book{RN83,
   author = {田茂再},
   title = {高等分层分位回归建模理论},
   publisher = {科学出版社},
   year = {2015},
   type = {Book}
}

@book{RN84,
   author = {Goldstein, Harvey},
   title = {Multilevel statistical models},
   publisher = {John Wiley \& Sons},
   volume = {922},
   ISBN = {111995682X},
   year = {2011},
   type = {Book}
}

@article{RN85,
   author = {Mason, William M，Wong, George Y，Entwisle, Barbara},
   title = {Contextual analysis through the multilevel linear model},
   journal = {Sociological methodology},
   volume = {14},
   pages = {72-103},
   ISSN = {0081-1750},
   year = {1983},
   type = {Journal Article}
}

@article{RN86,
   author = {Longford, Nicholas T},
   title = {Logistic regression with random coefficients},
   journal = {Computational Statistics \& Data Analysis},
   volume = {17},
   number = {1},
   pages = {1-15},
   ISSN = {0167-9473},
   year = {1994},
   type = {Journal Article}
}

@article{RN87,
   author = {Dempster, Arthur P，Rubin, Donald B，Tsutakawa, Robert K},
   title = {Estimation in covariance components models},
   journal = {Journal of the American Statistical Association},
   volume = {76},
   number = {374},
   pages = {341-353},
   ISSN = {0162-1459},
   year = {1981},
   type = {Journal Article}
}

@book{RN90,
   author = {周志华},
   title = {机器学习},
   publisher = {清华大学出版社},
   ISBN = {7302423288},
   year = {2016},
   type = {Book}
}

@article{RN91,
   author = {Nelder, John Ashworth，Wedderburn, Robert WM},
   title = {Generalized linear models},
   journal = {Journal of the Royal Statistical Society: Series A (General)},
   volume = {135},
   number = {3},
   pages = {370-384},
   ISSN = {0035-9238},
   year = {1972},
   type = {Journal Article}
}

@article{RN92,
   author = {梅长林，王宁},
   title = {近代回归分析方法},
   journal = {北 京: 科 学 出 版 社},
   year = {2012},
   type = {Journal Article}
}

@misc{RN94,
  title={近代线性回归分析方法},
  author={胡宏昌，崔恒建，秦永松等},
  year={2012},
  publisher={北京: 科学出版社}
}

@article{RN95,
   author = {Huber, Peter J},
   title = {Robust estimation of a location parameter: Annals Mathematics Statistics, 35},
   year = {1964},
   type = {Journal Article}
}

@article{RN96,
   author = {Fei-Fei, Li，Fergus, Rob，Perona, Pietro},
   title = {Learning generative visual models from few training examples: An incremental bayesian approach tested on 101 object categories},
   journal = {Computer vision and Image understanding},
   volume = {106},
   number = {1},
   pages = {59-70},
   ISSN = {1077-3142},
   year = {2007},
   type = {Journal Article}
}

path: /作业和实验/《人工智能》课程论文/基本回归算法综述/ref.bib

path: /作业和实验/《人工智能》课程论文/基本回归算法综述/ref.bib


text:
file(REMOVE_RECURSE
  "CMakeFiles/my_socket_nonblocking_IO_server.dir/my_socket_nonblocking_IO_server.cpp.o"
  "../../bin/my_socket_nonblocking_IO_server.pdb"
  "../../bin/my_socket_nonblocking_IO_server"
)

# Per-language clean rules from dependency scanning.
foreach(lang CXX)
  include(CMakeFiles/my_socket_nonblocking_IO_server.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

gha_license_id: NOASSERTION


text:
@article{roura_small_2018,
 abstract = {Global ecosystem models are essential tools for predicting climate change impacts on marine systems. Modeled biogenic carbon fluxes in the ocean often match measured data poorly and part of this could be because small copepods (\textless2 mm) are modeled as unicellular feeders grazing on phytoplankton and microzooplankton. The most abundant copepods from a seasonal upwelling region of the Eastern North Atlantic were sorted, and a molecular method was applied to copepod gut contents to evaluate the extent of metazoan predation under two oceanographic conditions, a trophic pathway not accounted for in global models. Scaling up the results obtained herein, based on published field and laboratory estimates, suggests that small copepods could ingest 1.79–27.20 gigatons C/year globally. This ignored metazoan‐copepod link could increase current estimates of biogeochemical fluxes (remineralization, respiration, and the biological pump) and export to higher trophic levels by 15.6%–24.4%. It could also account for global discrepancies between measured daily ingestion and copepod metabolic demand/growth. The inclusion of metazoan predation into global models could provide a more realistic role of the copepods in the ocean and if these preliminary data hold true at larger sample sizes and scales, the implications would be substantial at the global scale.},
 author = {Roura, Álvaro and Strugnell, Jan M. and Guerra, Ángel and González, Ángel F. and Richardson, Anthony J.},
 doi = {10.1002/ece3.4546},
 file = {Roura et al. - 2018 - Small copepods could channel missing carbon throug.pdf:/Users/ric325/Zotero/storage/BHX2SLV8/Roura et al. - 2018 - Small copepods could channel missing carbon throug.pdf:application/pdf},
 issn = {20457758},
 journal = {Ecology and Evolution},
 language = {en},
 month = {November},
 number = {22},
 pages = {10868--10878},
 title = {Small copepods could channel missing carbon through metazoan predation},
 url = {http://doi.wiley.com/10.1002/ece3.4546},
 urldate = {2019-10-24},
 volume = {8},
 year = {2018}
}


text:
package main

import (
	"flag"
	"fmt"
	"strings"

	"github.com/KnicKnic/go-powershell/pkg/logger/kloghelper"
	"github.com/KnicKnic/go-powershell/pkg/powershell"
	"k8s.io/klog"
)

type callbackTest struct{}

func (c callbackTest) Callback(_ powershell.Runspace, str string, input []powershell.Object, results powershell.CallbackResultsWriter) {
	fmt.Println("\tIn callback:", str)
	results.WriteString(str)
	for i, object := range input {
		if object.IsNull() {
			fmt.Println("\tIn callback: index", i, "Object Is Null") // ToString and Type are still valid
		}
		fmt.Println("\tIn callback: index", i, "type:", object.Type(), "with value:", object.ToString())
		results.Write(object, false)
	}
}

// PrintAndExecuteCommand executes a command in powershell and prints the results
func PrintAndExecuteCommand(runspace powershell.Runspace, command string, useLocalScope bool) {
	fmt.Println("Executing powershell command:", command)

	// determine if executing just a .ps1 file, if so use command, otherwise script
	var results *powershell.InvokeResults
	if strings.HasSuffix(command, ".ps1") {
		results = runspace.ExecCommand(command, useLocalScope, nil)
	} else {
		results = runspace.ExecScript(command, useLocalScope, nil)
	}
	defer results.Close()

	fmt.Println("Completed Executing powershell command:", command)
	if !results.Success() {
		fmt.Println("\tCommand threw exception of type", results.Exception.Type(), "and ToString", results.Exception.ToString())
	} else {
		fmt.Println("Command returned", len(results.Objects), "objects")
		for i, object := range results.Objects {
			fmt.Println("\tObject", i, "is of type", object.Type(), "and ToString", object.ToString())
		}
	}
}

// Example on how to use powershell wrappers
func Example() {
	runspace := powershell.CreateRunspace(kloghelper.Klog{VerboseLevel: 1, DebugLevel: 2}, callbackTest{})
	defer runspace.Close()

	if len(commandFlags) == 0 {
		klog.Exit("Did not specify a \"-command\" to run")
	}
	for i := 0; i < len(commandFlags); i++ {
		command := strings.ReplaceAll(commandFlags[i], "\\", "\\\\")
		PrintAndExecuteCommand(runspace, command, *useLocalScope)

	}
}

type arrayCommandFlags []string

func (i *arrayCommandFlags) String() string {
	return "my string representation"
}

func (i *arrayCommandFlags) Set(value string) error {
	*i = append(*i, value)
	return nil
}

var commandFlags arrayCommandFlags
var useLocalScope = flag.Bool("useLocalScope", false, "True if should execute scripts in the local scope")

func main() {
	klog.InitFlags(nil)
	flag.Var(&commandFlags, "command", "Command to run in powershell")
	flag.Set("logtostderr", "true")
	flag.Parse()
	Example()
	klog.Flush()
}

repository: KnicKnic/go-powershell

repo_name: KnicKnic/go-powershell


text:
SUMMARY = "The Linux Kernel Stream Control Transmission Protocol (lksctp) project"
HOMEPAGE = "http://lksctp.org"
SECTION = "libs"
LICENSE = "LGPLv2.1 & GPLv2"

LIC_FILES_CHKSUM = " \
    file://COPYING.lib;md5=0a1b79af951c42a9c8573533fbba9a92 \
    file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e \
"

SRC_URI = "${SOURCEFORGE_MIRROR}/lksctp/${BP}.tar.gz \
           file://run-ptest \
           file://v4test.sh \
           file://v6test.sh \
          "

SRC_URI[md5sum] = "708bb0b5a6806ad6e8d13c55b067518e"
SRC_URI[sha256sum] = "0903dd526b7f30a89d5031aa2c82757612becc38ed7bc6e4f972f8deae351f26"

#| arm-oe-linux-gnueabi-libtool: link: arm-oe-linux-gnueabi-gcc  -march=armv5te -marm -mthumb-interwork --sysroot=/home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/qemuarm -shared  -fPIC -DPIC  .libs/bindx.o .libs/connectx.o .libs/peeloff.o .libs/opt_info.o .libs/addrs.o .libs/sendmsg.o .libs/recvmsg.o    -march=armv5te -marm -mthumb-interwork --sysroot=/home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/qemuarm -O2 -Wl,--version-script=/home/jenkins/oe/world/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/lksctp-tools/1.0.16-r0/lksctp-tools-1.0.16/src/lib/Versions.map -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed   -Wl,-soname -Wl,libsctp.so.1 -o .libs/libsctp.so.1.0.16
#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.0/ld: error: symbol sctp_connectx has undefined version
#| collect2: error: ld returned 1 exit status
#| make[4]: *** [libsctp.la] Error 1
PNBLACKLIST[lksctp-tools] ?= "${@base_contains('DISTRO_FEATURES', 'ld-is-gold', "BROKEN: fails to link against sctp_connectx symbol", '', d)}"

S = "${WORKDIR}/${BP}"

BBCLASSEXTEND = "native"

inherit autotools pkgconfig binconfig ptest

do_install_ptest () {
	install -m 0755 ${WORKDIR}/v4test.sh ${D}${PTEST_PATH}
	install -m 0755 ${WORKDIR}/v6test.sh ${D}${PTEST_PATH}
	for testcase in `find ${B}/src/apps/.libs ${B}/src/func_tests/.libs -maxdepth 1 -type f -executable`; do
		install $testcase ${D}${PTEST_PATH}
	done
}

SOLIBVERSION="${PV}"
SOLIBMAJORVERSION="1"

PACKAGES =+ "${PN}-withsctp ${PN}-utils"

FILES_${PN} = " \
    ${libdir}/libsctp.so.${SOLIBVERSION} \
    ${libdir}/libsctp.so.${SOLIBMAJORVERSION} \
"

FILES_${PN}-withsctp = " \
    ${libdir}/lksctp-tools/libwithsctp.so.${SOLIBVERSION} \
    ${libdir}/lksctp-tools/libwithsctp.so.${SOLIBMAJORVERSION} \
"

FILES_${PN}-dev += " \
    ${libdir}/libsctp.so \
    ${libdir}/lksctp-tools/libwithsctp.so \
    ${datadir}/lksctp-tools/*.c \
    ${datadir}/lksctp-tools/*.h \
"

FILES_${PN}-utils = "${bindir}/*"

branch_name: refs/heads/fido