Changeset: 6e8dbd783d38 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6e8dbd783d38
Added Files:
        debian/monetdb5-server-hugeint.install
        debian/monetdb5-sql-hugeint.install
        sql/test/BugTracker-2015/Tests/alias.Bug-3704.sql
        sql/test/BugTracker-2015/Tests/alias.Bug-3704.stable.err
        sql/test/BugTracker-2015/Tests/alias.Bug-3704.stable.out
        sql/test/BugTracker-2015/Tests/assertHead.Bug-3706.sql
        sql/test/BugTracker-2015/Tests/assertHead.Bug-3706.stable.err
        sql/test/BugTracker-2015/Tests/assertHead.Bug-3706.stable.out
        sql/test/BugTracker-2015/Tests/case_aggr.Bug-3705.sql
        sql/test/BugTracker-2015/Tests/case_aggr.Bug-3705.stable.err
        sql/test/BugTracker-2015/Tests/case_aggr.Bug-3705.stable.out
        sql/test/BugTracker-2015/Tests/ifthenelse.Bug-3699.sql
        sql/test/BugTracker-2015/Tests/ifthenelse.Bug-3699.stable.err
        sql/test/BugTracker-2015/Tests/ifthenelse.Bug-3699.stable.out
        
sql/test/BugTracker-2015/Tests/insert_into_merge_table_crash.Bug-3703.sql
        
sql/test/BugTracker-2015/Tests/insert_into_merge_table_crash.Bug-3703.stable.err
        
sql/test/BugTracker-2015/Tests/insert_into_merge_table_crash.Bug-3703.stable.out
        sql/test/BugTracker-2015/Tests/project_rewrite.Bug-3693_2.sql
        sql/test/BugTracker-2015/Tests/project_rewrite.Bug-3693_2.stable.err
        sql/test/BugTracker-2015/Tests/project_rewrite.Bug-3693_2.stable.out
Modified Files:
        MonetDB.spec
        clients/Tests/exports.stable.out
        clients/mapiclient/eventparser.c
        clients/mapiclient/eventparser.h
        clients/mapiclient/tachograph.c
        debian/control
        debian/monetdb5-server.install
        debian/monetdb5-sql.install
        gdk/gdk_join.c
        gdk/gdk_logger.c
        gdk/gdk_logger.h
        gdk/gdk_select.c
        monetdb5/mal/mal.c
        monetdb5/mal/mal.h
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_runtime.c
        monetdb5/tools/Tests/mserver5--help.stable.err
        sql/backends/monet5/sql_upgrades.c
        sql/benchmarks/tpch/load.sh
        sql/common/Makefile.ag
        sql/common/sql_types.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/BugTracker-2015/Tests/All
        sql/test/leaks/Tests/check0_bam.stable.out.int128
        sql/test/leaks/Tests/check1_bam.stable.out
        sql/test/leaks/Tests/check1_bam.stable.out.int128
        sql/test/leaks/Tests/check2_bam.stable.out
        sql/test/leaks/Tests/check2_bam.stable.out.int128
        sql/test/leaks/Tests/check3_bam.stable.out
        sql/test/leaks/Tests/check3_bam.stable.out.int128
        sql/test/leaks/Tests/check4_bam.stable.out
        sql/test/leaks/Tests/check4_bam.stable.out.int128
        sql/test/leaks/Tests/check5_bam.stable.out
        sql/test/leaks/Tests/check5_bam.stable.out.int128
        sql/test/leaks/Tests/drop3_bam.stable.out.int128
        sql/test/leaks/Tests/select1_bam.stable.out.int128
        sql/test/leaks/Tests/select2_bam.stable.out.int128
        sql/test/leaks/Tests/temp1_bam.stable.out.int128
        sql/test/leaks/Tests/temp2_bam.stable.out.int128
        sql/test/leaks/Tests/temp3_bam.stable.out.int128
        sql/test/remote/Tests/ssbm.SQL.py
        sql/test/remote/Tests/ssbm.stable.out
        tools/merovingian/daemon/merovingian.c
        tools/mserver/mserver5.c
Branch: rdf
Log Message:

Merge with default


diffs (truncated from 3935 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -637,7 +637,8 @@ fi
 %if %{?with_rintegration:1}%{!?with_rintegration:0}
 %exclude %{_libdir}/monetdb5/rapi.mal
 %endif
-%exclude %{_libdir}/monetdb5/sql.mal
+%exclude %{_libdir}/monetdb5/sql*.mal
+%exclude %{_libdir}/monetdb5/*_hge.mal
 %{_libdir}/monetdb5/*.mal
 %if %{?with_geos:1}%{!?with_geos:0}
 %exclude %{_libdir}/monetdb5/autoload/*_geom.mal
@@ -665,6 +666,26 @@ fi
 %{_libdir}/monetdb5/*.so
 %doc %{_mandir}/man1/mserver5.1.gz
 
+%package -n MonetDB5-server-hugeint
+Summary: MonetDB - 128-bit integer support for MonetDB5-server
+Group: Application/Databases
+Requires: MonetDB5-server
+
+%description -n MonetDB5-server-hugeint
+MonetDB is a database management system that is developed from a
+main-memory perspective with use of a fully decomposed storage model,
+automatic index management, extensibility of data types and search
+accelerators.  It also has an SQL frontend.
+
+This package provides HUGEINT (128-bit integer) support for the
+MonetDB5-server component.
+
+%files -n MonetDB5-server-hugeint
+%exclude %{_libdir}/monetdb5/sql*_hge.mal
+%{_libdir}/monetdb5/*_hge.mal
+%exclude %{_libdir}/monetdb5/autoload/??_sql_hge.mal
+%{_libdir}/monetdb5/autoload/*_hge.mal
+
 %package -n MonetDB5-server-devel
 Summary: MonetDB development files
 Group: Applications/Databases
@@ -745,7 +766,7 @@ systemd-tmpfiles --create %{_sysconfdir}
 %exclude %{_sysconfdir}/tmpfiles.d/monetdbd.conf
 %endif
 %config(noreplace) %{_localstatedir}/monetdb5/dbfarm/.merovingian_properties
-%{_libdir}/monetdb5/autoload/??_sql*.mal
+%{_libdir}/monetdb5/autoload/??_sql.mal
 %{_libdir}/monetdb5/lib_sql.so
 %{_libdir}/monetdb5/*.sql
 %dir %{_libdir}/monetdb5/createdb
@@ -756,8 +777,9 @@ systemd-tmpfiles --create %{_sysconfdir}
 %if %{?with_samtools:1}%{!?with_samtools:0}
 %exclude %{_libdir}/monetdb5/createdb/*_bam.sql
 %endif
-# %exclude %{_libdir}/monetdb5/createdb/*_rdf.sql
-%{_libdir}/monetdb5/createdb/*
+%exclude %{_libdir}/monetdb5/createdb/*_hge.sql
+%{_libdir}/monetdb5/createdb/*.sql
+%exclude %{_libdir}/monetdb5/sql*_hge.mal
 %{_libdir}/monetdb5/sql*.mal
 %doc %{_mandir}/man1/monetdb.1.gz
 %doc %{_mandir}/man1/monetdbd.1.gz
@@ -771,6 +793,27 @@ systemd-tmpfiles --create %{_sysconfdir}
 %{_datadir}/doc/MonetDB-SQL-%{version}/*
 %endif
 
+%package SQL-server5-hugeint
+Summary: MonetDB5 128 bit integer (hugeint) support for SQL
+Group: Applications/Databases
+Requires: MonetDB5-server-hugeint = %{version}-%{release}
+Requires: MonetDB-SQL-server5 = %{version}-%{release}
+
+%description SQL-server5-hugeint
+MonetDB is a database management system that is developed from a
+main-memory perspective with use of a fully decomposed storage model,
+automatic index management, extensibility of data types and search
+accelerators.  It also has an SQL frontend.
+
+This package provides HUGEINT (128-bit integer) support for the SQL
+frontend of MonetDB.
+
+%files SQL-server5-hugeint
+%defattr(-,root,root)
+%{_libdir}/monetdb5/autoload/??_sql_hge.mal
+%{_libdir}/monetdb5/createdb/*_hge.sql
+%{_libdir}/monetdb5/sql*_hge.mal
+
 %package -n python-monetdb
 Summary: Native MonetDB client Python API
 Group: Applications/Databases
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2271,6 +2271,7 @@ int hasSameArguments(MalBlkPtr mb, Instr
 int hasSameSignature(MalBlkPtr mb, InstrPtr p, InstrPtr q, int stop);
 int hasSideEffects(InstrPtr p, int strict);
 str hashRef;
+int have_hge;
 int headProp;
 str hgeRef;
 int hlbProp;
@@ -2396,7 +2397,7 @@ int mal_init(void);
 MT_Lock mal_profileLock;
 str mal_quote(const char *msg, size_t size);
 MT_Lock mal_remoteLock;
-char *mal_trace;
+int mal_trace;
 void mal_unquote(char *msg);
 str manifoldRef;
 str mapiRef;
diff --git a/clients/mapiclient/eventparser.c b/clients/mapiclient/eventparser.c
--- a/clients/mapiclient/eventparser.c
+++ b/clients/mapiclient/eventparser.c
@@ -13,46 +13,62 @@
 char *statenames[]= {"","start","done","action","ping","wait","system"};
 
 char *malarguments[MAXMALARGS];
-int malargtop;
+char *maltypes[MAXMALARGS];
+int malpc[MAXMALARGS];
+int malcount[MAXMALARGS];
+int malargc;
+int malretc;
 char *malvariables[MAXMALARGS];
 int malvartop;
-int debug;
+int debug=0;
 char *monetdb_characteristics;
 
 void
 clearArguments(void)
 {
        int i;
-       for(i = 0; i < malargtop; i++)
-       if( malarguments[i])
+       for(i = 0; i < malargc; i++)
+       if( malarguments[i]){
                free(malarguments[i]);
-       malargtop = 0;
+               malarguments[i] = 0;
+       }
+       malargc = 0;
+       malretc = 0;
        for(i = 0; i < malvartop; i++)
-       if( malvariables[i])
+       if( malvariables[i]){
                free(malvariables[i]);
+               malvariables[i] = 0;
+               free(maltypes[i]);
+               maltypes[i] = 0;
+       }
        malvartop = 0;
 }
 
 static void
-parseArguments(char *call)
+parseArguments(char *call, int m)
 {
-       int i;
+       int i, argc= m < 0? -1:0;
        char  *c = call, *l, ch;
        char *v, *w;
        
-       malargtop = 0;
-       malvartop = 0;
        if( debug)
                fprintf(stderr,"%s\n",call);
-       memset(malarguments, 0, sizeof(malarguments));
-       memset(malvariables, 0, sizeof(malvariables));
-       for( ; c && *c && malargtop < MAXMALARGS;  c++){
-               if (*c ==')')
-                       break;
-               if (*c == ',')
-                       continue;
+       // also skip keywords
+       if( strncmp(c,"function ",10) == 0 ) c +=10;
+       if( strncmp(c,"end ",4) == 0 ) c +=4;
+       if( strncmp(c,"barrier ",8) == 0 ) c +=8;
+       if( strncmp(c,"redo ",5) == 0 ) c +=5;
+       if( strncmp(c,"leave ",6) == 0 ) c +=6;
+       if( strncmp(c,"return ",7) == 0 ) c +=7;
+       if( strncmp(c,"yield ",6) == 0 ) c +=6;
+       if( strncmp(c,"catch ",6) == 0 ) c +=6;
+       if( strncmp(c,"raise ",6) == 0 ) c +=6;
+
+       if( *c == '(') c++;
+       if (*c !=')')
+       for( ; c && *c && malargc < MAXMALARGS;  c++){
                if(isalpha((int)*c) &&  strncmp(c,"nil",3) && 
strncmp(c,"true",4) && strncmp(c,"false",5) ){
-                       // remember variable in its own structure
+                       // remember variable in its own structure, it ends with 
:=
                        v=  c;
                        c= strchr(c,'=');
                        if( c == 0)
@@ -61,6 +77,7 @@ parseArguments(char *call)
                        malvariables[malvartop++] = strdup(v);
                        c++;
                }
+               // all arguments have a value
                if (*c && *c== '\\' && *(c+1) =='"'){
                        c++; c++;
                        // parse string skipping escapes
@@ -69,31 +86,58 @@ parseArguments(char *call)
                                if( *l == '\\') l++;
                        }
                        *l= 0;
-                       malarguments[malargtop++] = strdup(c);
+                       malarguments[malargc] = strdup(c);
                        c= l+1;
-                       // we could find a type descriptor here, which we skip
-                       while( *c && *c !=',' && *c !=')') c++;
+                       // we skip to the type or end of term
+                       while( *c && *c != ':' && *c !=',' && *c !=')' && *c != 
';') c++;
+               } else if(*c =='<') {
+                       // extract BAT count
+                       l=c;
+                       while(*c && *c != '>') c++;
+                       c++;
+                       *c =0;
+                       malarguments[malargc] = strdup(l);
+                       *c = '[';
+                       malcount[malargc]=atoi(c+1);
+                       while( *c && *c != ':' && *c !=',' && *c !=')' && *c != 
';') c++;
+                       if( *c == ';') break;
                } else if(*c) {
-                       l = strchr(c, ch = ',');
-                       if( l == 0){
-                               l = strchr(c, ch = ')');
-                               break;
-                               }
-                       *l=0;
-                       // we could find a type descriptor as well, which we 
skip
-                       w= strchr(c,':');
-                       if( w) *w = 0;
-                       malarguments[malargtop++] = strdup(c);
-                       *l=ch;
-                       c= l;
-                       l = strchr(malarguments[malargtop-1],')');
-                       if(l)
-                               *l =0;
+                       l=c;
+                       while( *c && *c != ':' && *c !=',' && *c !=')' && *c != 
';') c++;
+                       ch = *c;
+                       *c=0;
+                       malarguments[malargc] = strdup(l);
+                       *c = ch;
+                       if( ch == ';') break;
                }
+               // consume the type and bat count
+               if (*c == ':'){
+                       if( strncmp(c,":bat[:oid,:",11) == 0){
+                               c+= 10;
+                               *c = '[';
+                               w=c;
+                               while(*c && *c != ']') c++;
+                       } else
+                               w= c+1;
+                       while(*c && *c != ';' && *c != '{' && *c != ',' && *c 
!= ')' ) c++;
+                       ch = *c;
+                       *c =0;
+                       malpc[malargc] = argc;
+                       argc+= m;
+                       maltypes[malargc++] = strdup(w);
+                       *c = ch;
+                       if( ch == ';') break;
+               } else malargc++;
+               if( *c == '{') {
+                       while(*c && *c != '}') c++;
+                       c++;
+               }
+               if (*c == 0 || *c ==')' )
+                       break;
        }
        if( debug){
-               for(i=0; i < malargtop; i++)
-                       fprintf(stderr,"arg[%d] %s\n",i,malarguments[i]);
+               for(i=0; i < malargc; i++)
+                       fprintf(stderr,"arg[%d] %s %s %d\n",i,malarguments[i], 
maltypes[i], malcount[i]);
                for(i=0; i < malvartop; i++)
                        fprintf(stderr,"var[%d] %s\n",i,malvariables[i]);
        }
@@ -105,6 +149,10 @@ eventparser(char *row, EventRecord *ev)
        char *c, *cc, *v =0;
        struct tm stm;
 
+       malargc = 0;
+       malvartop = 0;
+       memset(malarguments, 0, sizeof(malarguments));
+       memset(malvariables, 0, sizeof(malvariables));
        /* check basic validaty first */
        if (row[0] =='#'){
                return 0;
@@ -267,8 +315,13 @@ eventparser(char *row, EventRecord *ev)
        } else
        if( *c != '[')
        {
-               c = strstr(c + 1, ":=");
+               v=c;
+               c = strstr(c + 1, ":= ");
                if (c) {
+                       *c = 0;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to