Changeset: 48d7c14cb17d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=48d7c14cb17d Modified Files: MonetDB5/src/modules/mal/tablet_sql.mx sql/ChangeLog.Jun2010 sql/src/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err.Windows Branch: Oct2010 Log Message:
Merge with Jun2010 branch. diffs (263 lines): diff -r 33e3e1fdb08d -r 48d7c14cb17d MonetDB5/src/modules/mal/tablet_sql.mx --- a/MonetDB5/src/modules/mal/tablet_sql.mx Thu Sep 16 23:26:28 2010 +0200 +++ b/MonetDB5/src/modules/mal/tablet_sql.mx Fri Sep 17 10:09:57 2010 +0200 @@ -470,15 +470,16 @@ for (i = 0; i < 16; i++) ptask[i].cols = 0; + if ( task == 0){ + as->error = M5OutOfMemory; + return BUN_NONE; + } + /* trimming process should not be active during this process. */ /* on sf10 experiments it showed a slowdown of a factor 2 on */ /* large tables. Instead rely on madvise */ GDK_vm_trim = 0; - if ( task == 0){ - as->error = M5OutOfMemory; - return BUN_NONE; - } assert(rsep); assert(csep); assert(maxrow < 0 || maxrow <= (lng) BUN_MAX); @@ -622,7 +623,7 @@ The user should supply the correct number of fields. In the first phase we simply break the lines - at the record boundary. + at the record boundary. */ if ( quote == 0) { if (rseplen == 1) @@ -720,7 +721,7 @@ res = -1; } } - lio += GDKusec() -t1; /* line bread done */ + lio += GDKusec() -t1; /* line break done */ if ( task->next ){ if ( res == 0){ SQLworkdivider(task, ptask, (int) as->nr_attrs, threads); @@ -751,6 +752,14 @@ MT_down_sema(task->consumer, "tablet loader"); } + if (task->b->pos < task->b->len && cnt < (BUN) maxrow && task->ateof) { + GDKerror("Incomplete record at end of file.\n"); + /* indicate that we did read everything (even if we couldn't + deal with it */ + task->b->pos = task->b->len; + res = -1; + } + if (GDKdebug & GRPalgorithms) { if (cnt < (BUN) maxrow && maxrow > 0) /* providing a precise count is not always easy, instead consider maxrow as an upper bound */ @@ -822,6 +831,8 @@ #ifdef MLOCK_TST munlockall(); #endif + /* restore system setting */ + GDK_vm_trim = vmtrim; return BUN_NONE; } diff -r 33e3e1fdb08d -r 48d7c14cb17d sql/ChangeLog.Jun2010 --- a/sql/ChangeLog.Jun2010 Thu Sep 16 23:26:28 2010 +0200 +++ b/sql/ChangeLog.Jun2010 Fri Sep 17 10:09:57 2010 +0200 @@ -1,6 +1,10 @@ # ChangeLog file for sql # This file is updated with Maddlog +* Fri Sep 17 2010 Sjoerd Mullender <sjo...@acm.org> +- Fixed a bug where the server silently ignored the last record in a + COPY INTO if it was incomplete (e.g. missing a quote). + * Mon Aug 30 2010 Sjoerd Mullender <sjo...@acm.org> - Fixed a crash of the server when an extremely complex query is attempted. This is the latest incarnation of bug 104. diff -r 33e3e1fdb08d -r 48d7c14cb17d sql/src/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err --- a/sql/src/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err Thu Sep 16 23:26:28 2010 +0200 +++ b/sql/src/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err Fri Sep 17 10:09:57 2010 +0200 @@ -76,51 +76,21 @@ # 23:26:36 > mclient -lsql -i --host=eir --port=38510 # 23:26:36 > -MAPI = mone...@alf:32257 +MAPI = mone...@ottar:34319 QUERY = COPY 1 RECORDS INTO "news" FROM stdin USING DELIMITERS '\t', '\n', ''''; -ERROR = !SQLException:sql:End of string (') missing in "1 'dwerg.net word volwassen, er is eindelijk content - !en het voicemail archief begint al aardig vol te lopen. - !De commentaar en rating code voor de voicemails is ook - !al vrij aardig aan het vorderen. Dus dat beloofd nog - !wat.r - !<br /><br />r - !Mja, het is dat ik veel te veel - !tijd heb en het helemaal verkeerd indeel dat het - !allemaal nogal lang duurt, maar in principe is het nog - !maar een uurtje of 6 werk om het goed te krijgen. Zoals - !je kan zien heb ik bij de voicemails al wat leuke - !knopjes gezet, en het aantal voicemails dat je in 1 - !keer ziet verhoogd naar 15. Poepoe.r - !<br /><br - !/>r - !Het is me allemaal wat...r - !<br /><br - !/>r - !Muziek: Air 1 2002-02-22 00:21:00.000 - ! - !" at line 1 field 1 - !SQLException:importTable:failed to import table - !ERROR: End of string (') missing in "1 'dwerg.net word volwassen, er is eindelijk content - !ERROR: en het voicemail archief begint al aardig vol te lopen. - !ERROR: De commentaar en rating code voor de voicemails is ook - !ERROR: al vrij aardig aan het vorderen. Dus dat beloofd nog - !ERROR: wat.r - !ERROR: <br /><br />r - !ERROR: Mja, het is dat ik veel te veel - !ERROR: tijd heb en het helemaal verkeerd indeel dat het - !ERROR: allemaal nogal lang duurt, maar in principe is het nog - !ERROR: maar een uurtje of 6 werk om het goed te krijgen. Zoals - !ERROR: je kan zien heb ik bij de voicemails al wat leuke - !ERROR: knopjes gezet, en het aantal voicemails dat je in 1 - !ERROR: keer ziet verhoogd naar 15. Poepoe.r - !ERROR: <br /><br - !ERROR: />r - !ERROR: Het is me allemaal wat...r - !ERROR: <br /><br - !ERROR: />r - !ERROR: Muziek: Air 1 2002-02-22 00:21:00.000 - !ERROR: - !ERROR: " at line 1 field 1 + 1 'dwerg.net word volwassen, er is eindelijk content + en het voicemail archief begint al aardig vol te lopen. + De commentaar en rating code voor de voicemails is ook + al vrij aardig aan het vorderen. Dus dat beloofd nog + wat.r + <br /><br />r + Mja, het is dat ik veel te veel + tijd heb en het helemaal verkeerd indeel dat het + allemaal nogal lang duurt, maar in principe is het nog + maar een uurtje of 6 werk om het goed te krijgen. Zoals + je kan zie +ERROR = !SQLException:importTable:failed to import table + !ERROR: Incomplete record at end of file. # 23:26:36 > # 23:26:36 > Done. diff -r 33e3e1fdb08d -r 48d7c14cb17d sql/src/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err.Windows --- a/sql/src/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err.Windows Thu Sep 16 23:26:28 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -stderr of test 'hang_on_copy_into.SF-1100504` in directory 'src/test/BugDay_2005-11-09_2.9.3` itself: - - -# 23:26:36 > -# 23:26:36 > mserver5 "--config=/ufs/mk/candidate//Linux/etc/monetdb5.conf" --debug=10 --set gdk_nr_threads=0 --set "monet_mod_path=/ufs/mk/candidate//Linux/lib/MonetDB5:/ufs/mk/candidate//Linux/lib/MonetDB5/lib:/ufs/mk/candidate//Linux/lib/MonetDB5/bin" --set "gdk_dbfarm=/ufs/mk/candidate//Linux/var/MonetDB5/dbfarm" --set mapi_open=true --set xrpc_open=true --set mapi_port=38510 --set xrpc_port=45958 --set monet_prompt= --trace "--dbname=mTests_src_test_BugDay_2005-11-09_2.9.3" --set mal_listing=0 "--dbinit= include sql;" ; echo ; echo Over.. -# 23:26:36 > - -# builtin opt gdk_arch = 64bitx86_64-unknown-linux-gnu -# builtin opt gdk_version = 1.34.0 -# builtin opt prefix = /ufs/mk/candidate//Linux -# builtin opt exec_prefix = ${prefix} -# builtin opt gdk_dbname = tst -# builtin opt gdk_dbfarm = ${prefix}/var/MonetDB -# builtin opt gdk_debug = 8 -# builtin opt gdk_alloc_map = yes -# builtin opt gdk_vmtrim = yes -# builtin opt monet_admin = adm -# builtin opt monet_prompt = > -# builtin opt monet_welcome = yes -# builtin opt monet_mod_path = ${exec_prefix}/lib/MonetDB -# builtin opt monet_daemon = yes -# builtin opt host = localhost -# builtin opt mapi_port = 50000 -# builtin opt mapi_noheaders = no -# builtin opt mapi_debug = 0 -# builtin opt mapi_clients = 2 -# builtin opt sql_debug = 0 -# builtin opt standoff_ns = http://monetdb.cwi.nl/standoff -# builtin opt standoff_start = start -# builtin opt standoff_end = end -# config opt prefix = /ufs/mk/candidate//Linux -# config opt config = ${prefix}/etc/monetdb5.conf -# config opt prefix = /ufs/mk/candidate//Linux -# config opt exec_prefix = ${prefix} -# config opt gdk_dbfarm = ${prefix}/var/MonetDB5/dbfarm -# config opt gdk_dbname = demo -# config opt gdk_alloc_map = no -# config opt gdk_embedded = no -# config opt gdk_debug = 0 -# config opt monet_mod_path = ${exec_prefix}/lib/MonetDB5:${exec_prefix}/lib/MonetDB5/lib:${exec_prefix}/lib/MonetDB5/bin -# config opt monet_daemon = no -# config opt monet_welcome = yes -# config opt mero_msglog = ${prefix}/var/log/MonetDB/merovingian.log -# config opt mero_errlog = ${prefix}/var/log/MonetDB/merovingian.log -# config opt mero_pidfile = ${prefix}/var/run/MonetDB/merovingian.pid -# config opt mero_controlport = 50001 -# config opt mal_init = ${exec_prefix}/lib/MonetDB5/mal_init.mal -# config opt mal_listing = 2 -# config opt mapi_port = 50000 -# config opt mapi_autosense = false -# config opt mapi_open = false -# config opt sql_optimizer = accumulator_pipe -# config opt default_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,garbageCollector,dataflow,history,multiplex -# config opt accumulator_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,accumulators,garbageCollector,dataflow,history,multiplex -# config opt replication_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,garbageCollector,dataflow,history,replication,multiplex -# config opt recycler_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,deadcode,constants,commonTerms,joinPath,deadcode,recycle,reduce,garbageCollector,dataflow,history,multiplex -# config opt cracker_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,selcrack,deadcode,constants,commonTerms,joinPath,deadcode,reduce,garbageCollector,dataflow,history,multiplex -# config opt datacell_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,deadcode,constants,commonTerms,joinPath,datacell,deadcode,reduce,garbageCollector,dataflow,history,multiplex -# config opt octopus_pipe = inline,remap,evaluate,costModel,coercions,emptySet,mitosis,aliases,mergetable,deadcode,constants,commonTerms,joinPath,octopus,deadcode,reduce,garbageCollector,dataflow,history,multiplex -# config opt mitosis_pipe = inline,remap,evaluate,costModel,coercions,emptySet,mitosis,aliases,mergetable,deadcode,constants,commonTerms,joinPath,reorder,deadcode,reduce,garbageCollector,dataflow,history,multiplex -# cmdline opt config = /ufs/mk/candidate//Linux/etc/monetdb5.conf -# cmdline opt gdk_nr_threads = 0 -# cmdline opt monet_mod_path = /ufs/mk/candidate//Linux/lib/MonetDB5:/ufs/mk/candidate//Linux/lib/MonetDB5/lib:/ufs/mk/candidate//Linux/lib/MonetDB5/bin -# cmdline opt gdk_dbfarm = /ufs/mk/candidate//Linux/var/MonetDB5/dbfarm -# cmdline opt mapi_open = true -# cmdline opt xrpc_open = true -# cmdline opt mapi_port = 38510 -# cmdline opt xrpc_port = 45958 -# cmdline opt monet_prompt = -# cmdline opt gdk_dbname = mTests_src_test_BugDay_2005-11-09_2.9.3 -# cmdline opt mal_listing = 0 -#warning: please don't forget to set your vault key! -#(see /ufs/mk/candidate//Linux/etc/monetdb5.conf) - -# 23:26:36 > -# 23:26:36 > mclient -lsql -i --host=eir --port=38510 -# 23:26:36 > - -MAPI = mone...@eir:38510 -QUERY = COPY 1 RECORDS INTO "news" FROM stdin USING DELIMITERS '\t', '\n', ''''; -ERROR = !SQLException:sql:End of string (') missing in "1 'dwerg.net word volwassen, er is eindelijk content - !en het voicemail archief begint al aardig vol te lopen. - !De commentaar en rating code voor de voicemails is ook - !al vrij aardig aan het vorderen. Dus dat beloofd nog - !wat.r - !<br /><br />r - !Mja, het is dat ik veel te veel - !tijd heb en het helemaal verkeerd indeel dat het - !allemaal nogal lang duurt, maar in principe is het nog - !maar een uurtje of 6 werk om het goed te krijgen. Zoals - !je kan zien heb ik bij de voicemails al wat leuke - !kno" - !SQLException:importTable:failed to import table - !ERROR: End of string (') missing in "1 'dwerg.net word volwassen, er is eindelijk content - !ERROR: en het voicemail archief begint al aardig vol te lopen. - !ERROR: De commentaar en rating code voor de voicemails is ook - !ERROR: al vrij aardig aan het vorderen. Dus dat beloofd nog - !ERROR: wat.r - !ERROR: <br /><br />r - !ERROR: Mja, het is dat ik veel te veel - !ERROR: tijd heb en het helemaal verkeerd indeel dat het - !ERROR: allemaal nogal lang duurt, maar in principe is het nog - !ERROR: maar een uurtje of 6 werk om het goed te krijgen. Zoals - !ERROR: je kan zien heb ik bij de voicemails al wat leuke - !ERROR: kno" - -# 23:26:36 > -# 23:26:36 > Done. -# 23:26:36 > - _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list