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