Changeset: dc198a96657a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dc198a96657a
Modified Files:
Branch: default
Log Message:
Merge git master into default
diffs (truncated from 2388 to 300 lines):
diff -r 5afb63be5387 -r dc198a96657a pathfinder/compiler/Makefile.ag
--- a/pathfinder/compiler/Makefile.ag Wed Jun 16 09:02:46 2010 +0200
+++ b/pathfinder/compiler/Makefile.ag Wed Jun 16 11:49:23 2010 +0200
@@ -41,6 +41,7 @@
env.c \
oops.c \
pfstrings.c \
+ plan_bundle.c \
qname.c \
scope.c \
timer.c \
@@ -53,6 +54,7 @@
env.c \
oops.c \
pfstrings.c \
+ plan_bundle.c \
qname.c \
timer.c
}
@@ -76,7 +78,7 @@
sql/libsql \
#
xmlimport/libxmlimport \
- utils/libstringutils \
+ utils/libstringutils \
#
$(LIBGC_LDADD) $(LIBGC_LIBS) \
$(LIBXML2_LDADD) $(LIBXML2_LIBS) \
@@ -102,8 +104,9 @@
algebra/liblogical \
debug/liblogdebug \
libcompiler3 \
- utils/libstringutils \
+ utils/libstringutils \
semantics/libns \
+ semantics/liboptions \
mem/libmem \
$(LIBGC_LDADD) $(LIBGC_LIBS) \
$(LIBXML2_LDADD) $(LIBXML2_LIBS) \
@@ -129,8 +132,9 @@
sql/libsql \
debug/libprettyp \
libcompiler3 \
- utils/libstringutils \
+ utils/libstringutils \
semantics/libns \
+ semantics/liboptions \
mem/libmem \
$(LIBGC_LDADD) $(LIBGC_LIBS) \
$(LIBXML2_LDADD) $(LIBXML2_LIBS) \
@@ -140,4 +144,34 @@
main_sql.c
}
+# PF/Ferry library that reads in a Logical Algbra plan in XML format,
+# optimizes it, and provides various output formats (DOT, XML, SQL).
+#
+# (Note that the linker requires all used symbols to be listed
+# before their definition, which makes e.g., libmem a good candidate
+# for the last item of the list.)
+lib_pf_ferry = {
+ LIBS = \
+ ./algebra/liblogopt \
+ ./algebra/map/libmap \
+ ./algebra/opt/libopt \
+ ./algebra/prop/libprop \
+ ./xmlimport/libxmlimport \
+ ./algebra/liblogical \
+ ./sql/libsql \
+ ./debug/libprettyp \
+ ./debug/liblogdebug \
+ ./libcompiler3 \
+ ./utils/libstringutils \
+ ./semantics/libns \
+ ./semantics/liboptions \
+ ./mem/libmem_embedded \
+ $(LIBGC_LDADD) $(LIBGC_LIBS) \
+ $(LIBXML2_LDADD) $(LIBXML2_LIBS) \
+ $(SOCKET_LIBS) $(DL_LIBS)
+
+ SOURCES = \
+ pf_ferry.c
+}
+
EXTRA_DIST = win32_getopt.c
diff -r 5afb63be5387 -r dc198a96657a pathfinder/compiler/compile.c
--- a/pathfinder/compiler/compile.c Wed Jun 16 09:02:46 2010 +0200
+++ b/pathfinder/compiler/compile.c Wed Jun 16 11:49:23 2010 +0200
@@ -61,7 +61,6 @@
#include "options.h" /* extract option declarations from parse tree */
#include "xquery_fo.h" /* built-in XQuery F&O */
#include "func_chk.h" /* function resolution */
-#include "prettyp.h"
#include "abssynprint.h"
#include "coreprint.h"
#include "logdebug.h"
@@ -301,17 +300,17 @@
int
PFcompile (char *url, FILE *pfout, PFstate_t *status)
{
- PFpnode_t *proot = NULL;
- PFcnode_t *croot = NULL;
+ PFpnode_t *proot = NULL;
+ PFcnode_t *croot = NULL;
/* We either have a plan bundle in @a lapb
or a logical query plan in @a laroot. */
- PFla_pb_t *lapb = NULL;
- PFla_op_t *laroot = NULL;
- PFpa_op_t *paroot = NULL;
- PFmil_t *mroot = NULL;
- PFarray_t *mil_program = NULL;
- char *xquery = NULL;
- int module_base;
+ PFla_pb_t *lapb = NULL;
+ PFla_op_t *laroot = NULL;
+ PFpa_op_t *paroot = NULL;
+ PFmil_t *mroot = NULL;
+ PFchar_array_t *mil_program = NULL;
+ char *xquery = NULL;
+ int module_base;
/* elapsed time for compiler phase */
long tm, tm_first = 0;
@@ -680,46 +679,26 @@
/* Split Point: SQL Code Generation */
/************************************/
if (status->output_format == PFoutput_format_sql) {
- unsigned int i = 0, c;
- /* plan bundle emits SQL code wrapped in XML tags */
- if (lapb)
- fprintf (pfout, "<query_plan_bundle>\n");
- /* If we have a plan bundle we have to generate
- a SQL query for each query plan. */
- do {
- /* plan bundle emits SQL code wrapped in XML tags
- with additional column and linking information */
- if (lapb) {
- laroot = PFla_pb_op_at (lapb, i);
- assert (laroot->kind == la_serialize_rel);
+ PFchar_array_t *sql_str = PFchar_array (4096);
- fprintf (pfout, "<query_plan id=\"%i\"",
- PFla_pb_id_at (lapb, i));
- if (PFla_pb_idref_at (lapb, i) != -1)
- fprintf (pfout, " idref=\"%i\" colref=\"%i\"",
- PFla_pb_idref_at (lapb, i),
- PFla_pb_colref_at (lapb, i));
- fprintf (pfout, ">\n");
- fprintf (pfout,
- "<schema>\n"
- " <column name=\"%s\" function=\"iter\"/>\n",
- PFcol_str (laroot->sem.ser_rel.iter));
- for (c = 0; c < clsize (laroot->sem.ser_rel.items); c++)
- fprintf (pfout,
- " <column name=\"%s\" new=\"false\""
- " function=\"item\""
- " position=\"%u\"/>\n",
- PFcol_str (clat (laroot->sem.ser_rel.items, c)),
- c);
- fprintf (pfout, "</schema>\n"
- "<query>"
+ /**
+ * Iterate over the plan_bundle list lapb and bind every item to
laroot_.
+ *
+ * BEWARE: macro has to be used in combination with macro PFla_pb_end.
+ */
+ PFla_pb_foreach (sql_str, laroot_, lapb, laroot)
+
+
+
+ /* plan bundle emits SQL code wrapped in XML tags */
+ if (lapb)
+ PFarray_printf (sql_str,
+ " <query>"
"<![CDATA[\n");
- i++;
- }
/* generate the SQL code */
tm = PFtimer_start ();
- PFsql_t *sqlroot = PFlalg2sql(laroot);
+ PFsql_t *sqlroot = PFlalg2sql(laroot_);
tm = PFtimer_stop (tm);
if (status->timing)
PFlog ("Compilation to SQL:\t\t\t %s", PFtimer_str (tm));
@@ -739,23 +718,28 @@
/* serialize the internal SQL query tree */
tm = PFtimer_start ();
- PFsql_print (pfout, sqlroot);
+ PFsql_print (sql_str, sqlroot);
tm = PFtimer_stop (tm);
if (status->timing)
PFlog ("SQL Code generation:\t\t\t %s", PFtimer_str (tm));
/* plan bundle emits SQL code wrapped in XML tags */
if (lapb)
- fprintf (pfout, "]]>"
- "</query>\n"
- "</query_plan>\n");
+ PFarray_printf (sql_str,
+ "]]>"
+ "</query>\n");
- /* iterate over the plans in the plan bundle */
- } while (lapb && i < PFla_pb_size (lapb));
- /* plan bundle emits SQL code wrapped in XML tags */
- if (lapb)
- fprintf (pfout, "</query_plan_bundle>\n");
+
+ /**
+ * Iterate over the plan_bundle list lapb and bind every item to
laroot_.
+ *
+ * BEWARE: macro has to be used in combination with macro
PFla_pb_foreach.
+ */
+ PFla_pb_foreach_end (sql_str, lapb)
+
+ /* print the resulting string to the output stream */
+ fputs (sql_str->base, pfout);
goto bailout;
}
@@ -919,26 +903,28 @@
/* print algebra tree if requested */
if (status->print_la_tree) {
+ PFchar_array_t *out_str = PFchar_array (4096);
if (laroot) {
if (status->print_pretty) {
PFinfo (OOPS_WARNING,
"Cannot prettyprint logical algebra tree. Sorry.");
}
if (status->print_dot)
- PFla_dot (pfout, laroot, status->format);
+ PFla_dot (out_str, laroot, status->format);
if (status->print_xml)
- PFla_xml (pfout, laroot, status->format);
+ PFla_xml (out_str, laroot, status->format);
}
else if (lapb) {
if (status->print_dot)
- PFla_dot_bundle (pfout, lapb, status->format);
+ PFla_dot_bundle (out_str, lapb, status->format);
if (status->print_xml)
- PFla_xml_bundle (pfout, lapb, status->format);
+ PFla_xml_bundle (out_str, lapb, status->format);
}
else
PFinfo (OOPS_NOTICE,
"logical algebra tree not available "
"at this point of compilation");
+ fputs (out_str->base, pfout);
}
/* print MIL algebra tree if requested */
@@ -990,10 +976,10 @@
long timing;
int module_base;
/* for ALGEBRA (PFoutput_format_mil) & SQL (PFoutput_format_sql) */
- PFla_op_t *laroot = NULL;
- PFpa_op_t *paroot = NULL;
- PFmil_t *mroot = NULL;
- PFarray_t *serialized_mil_code = NULL;
+ PFla_op_t *laroot = NULL;
+ PFpa_op_t *paroot = NULL;
+ PFmil_t *mroot = NULL;
+ PFchar_array_t *serialized_mil_code = NULL;
PFguide_list_t *guide_list = NULL; /* guide list */
/* for MILPRINT_SUMMER (PFoutput_format_milprint_summer) */
char *intern_prologue = NULL,
diff -r 5afb63be5387 -r dc198a96657a pathfinder/compiler/debug/abssynprint.c
--- a/pathfinder/compiler/debug/abssynprint.c Wed Jun 16 09:02:46 2010 +0200
+++ b/pathfinder/compiler/debug/abssynprint.c Wed Jun 16 11:49:23 2010 +0200
@@ -563,11 +563,14 @@
void
PFabssyn_pretty (FILE *f, PFpnode_t *t, bool qnames_resolved)
{
+ PFchar_array_t *a = PFchar_array (500);
+
PFprettyprintf ("%c", START_BLOCK);
abssyn_pretty (t, qnames_resolved);
PFprettyprintf ("%c", END_BLOCK);
- (void) PFprettyp (f);
+ PFprettyp (a);
+ fputs (a->base, f);
fputc ('\n', f);
}
diff -r 5afb63be5387 -r dc198a96657a pathfinder/compiler/debug/coreprint.c
--- a/pathfinder/compiler/debug/coreprint.c Wed Jun 16 09:02:46 2010 +0200
+++ b/pathfinder/compiler/debug/coreprint.c Wed Jun 16 11:49:23 2010 +0200
@@ -51,7 +51,6 @@
/* PFesc_string */
#include "pfstrings.h"
-#include "prettyp.h"
#include <assert.h>
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list