Should I build a new release candidate with this fix included?
On 2010-04-25 12:07, Niels Nes wrote:
> Update of /cvsroot/monetdb/MonetDB5/src/modules/mal
> In directory
> sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv6881/src/modules/mal
>
> Modified Files:
> Tag: Feb2010
> tablet_sql.mx
> Log Message:
> fixed bug in loader, now (again) we handle embedded seperators properly
>
>
> Index: tablet_sql.mx
> ===================================================================
> RCS file: /cvsroot/monetdb/MonetDB5/src/modules/mal/tablet_sql.mx,v
> retrieving revision 1.44
> retrieving revision 1.44.2.1
> diff -u -d -r1.44 -r1.44.2.1
> --- tablet_sql.mx 10 Jan 2010 14:16:36 -0000 1.44
> +++ tablet_sql.mx 25 Apr 2010 10:07:29 -0000 1.44.2.1
> @@ -448,11 +448,10 @@
> int res = 0; /* < 0: error, > 0: success, ==
> 0: continue processing */
> int j;
> BUN i;
> - char q=0;
> size_t rseplen;
> READERtask *task= (READERtask*) GDKzalloc(sizeof(READERtask));
> READERtask ptask[16];
> - int threads= GDKnr_threads < 16? GDKnr_threads: 16;
> + int threads= (!maxrow || maxrow > (1<<16)) ? (GDKnr_threads < 16?
> GDKnr_threads: 16):1;
> lng lio =0, tio, t1 = 0, total=0, iototal=0;
> int vmtrim = GDK_vm_trim;
>
> @@ -603,6 +602,7 @@
> rethink the matter. */
> e = s;
> while (s < end && (maxrow < 0 || cnt < (BUN) maxrow) ) {
> + char q=0;
> /* tokenize the record completely
> the format of the input should comply to
> the following grammar rule
> @@ -617,55 +617,50 @@
> */
> if ( quote == 0) {
> if (rseplen == 1)
> - for ( ; *e ; e++)
> - {
> + for ( ; *e ; e++) {
> if ( *e == '\\' ){
> e++;
> continue;
> }
> if (*e == *rsep )
> - break;
> + break;
> }
> else
> - for ( ; *e ; e++)
> - {
> + for ( ; *e ; e++) {
> if ( *e == '\\' ) {
> e++;
> continue;
> }
> if (*e == *rsep && strncmp(e,
> rsep, rseplen) == 0)
> - break;
> + break;
> }
> if ( *e == 0)
> e = 0; /* nonterminated record, we
> need more */
> - } else
> - if ( rseplen == 1 ) {
> - for ( ; *e ; e++)
> - {
> + } else if ( rseplen == 1 ) {
> + for ( ; *e ; e++) {
> if (*e == q)
> - q = 0;
> - else if (*e == quote)
> - q = *e;
> - else if (*e == '\\') {
> - if (e[1])
> - e++;
> - } else if (*e == *rsep )
> - break;
> + q = 0;
> + else if (*e == quote)
> + q = *e;
> + else if (*e == '\\') {
> + if (e[1])
> + e++;
> + } else if (!q && *e == *rsep )
> + break;
> }
> if ( *e == 0)
> e = 0; /* nonterminated record, we
> need more */
> } else {
> - for ( ; *e ; e++)
> - {
> + for ( ; *e ; e++) {
> if (*e == q)
> - q = 0;
> - else if (*e == quote)
> - q = *e;
> - else if (*e == '\\') {
> - if (e[1])
> - e++;
> - } else if (*e == *rsep && strncmp(e,
> rsep, rseplen) == 0 )
> - break;
> + q = 0;
> + else if (*e == quote)
> + q = *e;
> + else if (*e == '\\') {
> + if (e[1])
> + e++;
> + } else if (!q && *e == *rsep &&
> strncmp(e, rsep, rseplen) == 0 )
> + break;
> }
> if (*e == 0 )
> e = 0; /* nonterminated record, we
> need more */
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Monetdb-checkins mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
--
Sjoerd Mullender
------------------------------------------------------------------------------
_______________________________________________
Monetdb-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-developers