From 96f8e6d4aa5db73bbe5f074a02b88210b540a3c6 Mon Sep 17 00:00:00 2001 From: zapashcanon Date: Wed, 13 Sep 2017 21:16:49 +0200 Subject: [PATCH] Fix intro, remove text, fix extalg expression, remove line num --- img/compilchain.pdf | Bin 0 -> 56281 bytes src/packages.tex | 2 +- src/poster-jdse-2017.tex | 51 ++++++++++++++++++++++++++++++++------- src/query_14.extalg | 6 ++--- 4 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 img/compilchain.pdf diff --git a/img/compilchain.pdf b/img/compilchain.pdf new file mode 100644 index 0000000000000000000000000000000000000000..716d295854e9c75b83fdb306ea55fc7cc23bb699 GIT binary patch literal 56281 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 PaCkflCM&CNVF3F-q`<|@ literal 0 HcmV?d00001 diff --git a/src/packages.tex b/src/packages.tex index 160f1e9..f7ae85d 100644 --- a/src/packages.tex +++ b/src/packages.tex @@ -40,4 +40,4 @@ \usepackage[cache=false, draft=false]{minted} \usemintedstyle{paraiso-dark} \setminted{bgcolor=lightBackground} - \setminted{linenos, autogobble, breaklines, breakanywhere, breakautoindent, fontseries=m, fontsize=\fontsize{9pt}{7pt}, frame=none, stepnumber=2} + \setminted{autogobble, breaklines, breakanywhere, breakautoindent, fontseries=m, fontsize=\fontsize{9pt}{7pt}, frame=none, stepnumber=2} diff --git a/src/poster-jdse-2017.tex b/src/poster-jdse-2017.tex index 7f8ad4a..5b1632a 100644 --- a/src/poster-jdse-2017.tex +++ b/src/poster-jdse-2017.tex @@ -19,10 +19,19 @@ \makeposter{} %---------------------------------------- -\section{Data and proofs} +\section{Data systems and languages, proofs} %---------------------------------------- -Data is everywhere etc. Proofs and formal methods not often applied to data languages (SQL) or DBMS (postgresql) etc. +Until now there have been little usages of formal methods towards SQL and DBMS, yet, the compilation chain of SQL queries is complex. + +\begin{figure}[h!] + \caption{SQL's compilation chain} + \label{sql-compil-chain} + \centering + \begin{center} + \includegraphics[scale=1]{img/compilchain.pdf}\\ + \end{center} +\end{figure} %Le poster est formatté avec LaTeX. Les instructions détaillées sont dans le fichier source et le source de ce poster peut servir d'exemple. %Le texte peut être formatté en une, deux ou trois colonnes. Ceci est un exemple de texte formatté sur une colonne. Compte tenu de la largeur du poster, il est préférable de limiter ce texte à quelques lignes. @@ -36,7 +45,12 @@ Data is everywhere etc. Proofs and formal methods not often applied to data lang \inputminted[bgcolor=darkBackground] {sql} {src/query_14.sql} -We parse SQL queries using the certified parser generator written by Jacques-Henri Jourdan and used in CompCert. At the end, we have an SQLCoq-compatible representation of the query. SQLCoq is a Coq library formalising SQL. +\begin{itemize} + \item SQL parser in menhir/OCamllex + \item certified using the CompCert parser generator + \item automatic translation into SQLCoq (in OCaml) +\end{itemize} +% We parse SQL queries using the certified parser generator written by Jacques-Henri Jourdan and used in CompCert. At the end, we have an SQLCoq-compatible representation of the query. SQLCoq is a Coq library formalising SQL. %Pour formatter le texte sur \emph{deux colonnes}, utiliser la macro \verb|\twocolsection{}| si vous souhaitez un titre de section qui fasse la largeur du poster, ou bien \verb|\twocoltext| pour ne pas afficher de titre. @@ -54,9 +68,13 @@ We parse SQL queries using the certified parser generator written by Jacques-Hen \section{Involving DBMS, from SQL to unified execution plan} -We give an SQL query to two DBMS (PostgreSQL and Oracle) and get the query execution plan, that is, the algorithms which are going to be used to fetch the data from the disk. +\begin{itemize} + \item PostgreSQL and Oracle query execution plan parser + \item both translated to our own unified plan format +\end{itemize} +%We give an SQL query to two DBMS (PostgreSQL and Oracle) and get the query execution plan, that is, the algorithms which are going to be used to fetch the data from the disk. -Then, we change the plans so they have the same format. We defined an unified execution plan format. +%sThen, we change the plans so they have the same format. We defined an unified execution plan format. %Les titres de sections sont formattés dans la couleur du thème du poster. %le trait sous le titre peut être désactivé / réactivé avec les commandes \verb|\titlerulefalse| et \verb|\titleruletrue|. @@ -84,9 +102,14 @@ Then, we change the plans so they have the same format. We defined an unified ex \columnbreak{} %........................................ -From a given plan, we build an Extended Algebra expression. ExtAlg is similar to Relationnal Algebra but more powerful. +\begin{itemize} + \item Extended Algebra (ExtAlg) is similar to Relationnal Algebra but more powerful + \item translation from an unified plan to an ExtAlg expression + \item automatic annotation of ExtAlg expression with algorithms + \item ability to execute our Coq version of those algorithms +\end{itemize} -Here, the expression is annotated with algorithms. Thus, we'll be able to go further by executing the algorithms which were formalized in Coq. +%Here, the expression is annotated with algorithms. Thus, we'll be able to go further by executing the algorithms which were formalized in Coq. %Vous pouvez insérer des images avec la commande habituelle \verb|\includegraphics|. @@ -112,7 +135,12 @@ Here, the expression is annotated with algorithms. Thus, we'll be able to go fur \twocolsection{Equivalence of two ExtAlg queries} %---------------------------------------- -Now we have the ExtAlg expression of the query from the plan the DBMS gave us. We also have the SQLCoq representation of the query. We can get the ExtAlg expression from the SQLCoq representation. We can show the equivalence of the two ExtAlg queries, by using normal forms on logical formulas, or using other Coq-proved equivalence on ExtAlg. +\begin{itemize} + \item translation from SQLCoq to ExtAlg + \item two ExtAlg expressions, one from the DBMS, one from the SQL query/SQLCoq + \item proof that two ExtAlg expression have the same semantic +\end{itemize} +%Now we have the ExtAlg expression of the query from the plan the DBMS gave us. We also have the SQLCoq representation of the query. We can get the ExtAlg expression from the SQLCoq representation. We can show the equivalence of the two ExtAlg queries, by using normal forms on logical formulas, or using other Coq-proved equivalence on ExtAlg. %\begin{cbox} %Pour mettre un paragraphe en évidence, vous pouvez utiliser l'environnement \verb|cbox| qui formatte le texte sur un fond de couleur jaune sable. %\end{cbox} @@ -125,7 +153,12 @@ Now we have the ExtAlg expression of the query from the plan the DBMS gave us. W \columnbreak{} %........................................ -With the equivalence of the two expressions, we are sure that the algorithms that the DMBS planned to use are corrects and that they won't change the semantic of the SQL query. We still have to prove that algorithms used in DBMS are correct, or to use our own written in Coq. +\begin{itemize} + \item strong guarantees about the fact that the DBMS kept the semantic of the SQL query + \item algorithms used by the DBMS have not been proved yet + \item Coq version of some algorithms +\end{itemize} +%With the equivalence of the two expressions, we are sure that the algorithms that the DMBS planned to use are corrects and that they won't change the semantic of the SQL query. We still have to prove that algorithms used in DBMS are correct, or to use our own written in Coq. %Il existe trois thèmes de poster : \verb|\redposter|, \verb|\blueposter| et \verb|\greenposter|. La couleur du thème est dans la variable %\verb|\highlightcolor|. Les autres couleurs prédéfinies sont : %\begin{itemize} diff --git a/src/query_14.extalg b/src/query_14.extalg index 97f72a5..c500c22 100644 --- a/src/query_14.extalg +++ b/src/query_14.extalg @@ -1,9 +1,9 @@ -⍵ { +Omega { _ Fine _ r.dday → r.dday, r.bid → r.bid, r.sid → r.sid, s.age → s.age, s.rating → s.rating, s.sname → s.sname, s.sid → s.sid _ x_0.s.sid = x_0.r.sid _ { - ⍵ { + Omega { _ Fine _ sid → s.sid, sname → s.sname, rating → s.rating, age → s.age _ ⊤ @@ -11,5 +11,5 @@ Seq Scan on sailors } } - × (DependentJoin) (Hash Join) + X (DependentJoin) (Hash Join) ...