Changeset: cf7e72e10d2d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cf7e72e10d2d Added Files: sql/test/BugTracker-2015/Tests/negative_oid_crash.Bug-3667.sql sql/test/BugTracker-2015/Tests/negative_oid_crash.Bug-3667.stable.err sql/test/BugTracker-2015/Tests/negative_oid_crash.Bug-3667.stable.out Modified Files: sql/backends/monet5/UDF/Tests/udf-fuse.stable.out sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_result.c sql/backends/monet5/vaults/fits.c sql/benchmarks/ssbm/Tests/01-explain.stable.out sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/02-explain.stable.out sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/03-explain.stable.out sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 sql/benchmarks/tpch/Tests/06-explain.stable.out sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 sql/benchmarks/tpch/Tests/14-explain.stable.out sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/benchmarks/tpch/Tests/19-explain.stable.out sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 sql/common/sql_types.c sql/common/sql_types.h sql/test/BugTracker-2015/Tests/All sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out Branch: default Log Message:
merged with Oct2014 diffs (truncated from 494 to 300 lines): diff --git a/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out b/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out --- a/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out +++ b/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out @@ -30,7 +30,7 @@ Ready. % 73 # length function user.s2_1{autoCommit=true}(A0:bte,A1:bte):void; X_4 := udf.fuse(A0,A1); - sql.exportValue(1,".L","fuse_single_value","smallint",16,0,6,X_4,""); + sql.exportValue(1,".L","fuse_single_value","smallint",16,0,7,X_4,""); end s2_1; # querylog.define("explain select fuse(1,2);","default_pipe") #select fuse(1,2); @@ -46,7 +46,7 @@ end s2_1; % 70 # length function user.s3_1{autoCommit=true}(A0:sht,A1:sht):void; X_4 := udf.fuse(A0,A1); - sql.exportValue(1,".L","fuse_single_value","int",32,0,6,X_4,""); + sql.exportValue(1,".L","fuse_single_value","int",32,0,7,X_4,""); end s3_1; # querylog.define("explain select fuse(1000,2000);","default_pipe") #select fuse(1000,2000); @@ -62,7 +62,7 @@ end s3_1; % 76 # length function user.s4_1{autoCommit=true}(A0:int,A1:int):void; X_4 := udf.fuse(A0,A1); - sql.exportValue(1,".L","fuse_single_value","bigint",64,0,6,X_4,""); + sql.exportValue(1,".L","fuse_single_value","bigint",64,0,7,X_4,""); end s4_1; # querylog.define("explain select fuse(1000000,2000000);","default_pipe") #select fuse(1000000,2000000); diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -1289,7 +1289,7 @@ rel2bin_table( mvc *sql, sql_rel *rel, l l = sa_list(sql->sa); for (argc = 0; argc < sql->argc; argc++) { atom *a = sql->args[argc]; - stmt *s = stmt_atom(sql->sa, a); + stmt *s = stmt_varnr(sql->sa, argc, &a->tpe); char nme[16]; snprintf(nme, 16, "A%d", argc); diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c --- a/sql/backends/monet5/sql_result.c +++ b/sql/backends/monet5/sql_result.c @@ -1393,7 +1393,7 @@ export_length(stream *s, int mtype, int } ok = mvc_send_int(s, l); } - } else if (eclass == EC_NUM) { + } else if (eclass == EC_NUM || eclass == EC_POS) { count = 0; if (bid) { BAT *b = BATdescriptor(bid); diff --git a/sql/backends/monet5/vaults/fits.c b/sql/backends/monet5/vaults/fits.c --- a/sql/backends/monet5/vaults/fits.c +++ b/sql/backends/monet5/vaults/fits.c @@ -227,7 +227,7 @@ str FITSexportTable(Client cntxt, MalBlk colname = (str *) GDKmalloc(columns * sizeof(str)); tform = (str *) GDKmalloc(columns * sizeof(str)); - /* mnstr_printf(GDKout,"Number of columns: %d\n", columns);*/ + /* fprintf(stderr,"Number of columns: %d\n", columns);*/ tables = mvc_bind_table(m, sch, "_tables"); col = mvc_bind_column(m, tables, "name"); @@ -274,7 +274,7 @@ str FITSexportTable(Client cntxt, MalBlk nrows = store_funcs.count_col(tr, col, 1); snprintf(filename,BUFSIZ,"\n%s.fit",tname); - mnstr_printf(GDKout, "Filename: %s\n", filename); + fprintf(stderr, "Filename: %s\n", filename); remove(filename); @@ -529,15 +529,15 @@ str FITSexportTable(Client cntxt, MalBlk /* print all the times that were needed to export each one of the columns - mnstr_printf(GDKout, "\n\n"); - if (texportboolean > 0) mnstr_printf(GDKout, "%d Boolean\tcolumn(s) exported in %d ms\n", boolcols, texportboolean); - if (texportchar > 0) mnstr_printf(GDKout, "%d Char\t\tcolumn(s) exported in %d ms\n", charcols, texportchar); - if (texportstring > 0) mnstr_printf(GDKout, "%d String\tcolumn(s) exported in %d ms\n", strcols, texportstring); - if (texportshort > 0) mnstr_printf(GDKout, "%d Short\t\tcolumn(s) exported in %d ms\n", shortcols, texportshort); - if (texportint > 0) mnstr_printf(GDKout, "%d Integer\tcolumn(s) exported in %d ms\n", intcols, texportint); - if (texportlong > 0) mnstr_printf(GDKout, "%d Long\t\tcolumn(s) exported in %d ms\n", longcols, texportlong); - if (texportfloat > 0) mnstr_printf(GDKout, "%d Float\t\tcolumn(s) exported in %d ms\n", floatcols, texportfloat); - if (texportdouble > 0) mnstr_printf(GDKout, "%d Double\tcolumn(s) exported in %d ms\n", doublecols, texportdouble); + fprintf(stderr, "\n\n"); + if (texportboolean > 0) fprintf(stderr, "%d Boolean\tcolumn(s) exported in %d ms\n", boolcols, texportboolean); + if (texportchar > 0) fprintf(stderr, "%d Char\t\tcolumn(s) exported in %d ms\n", charcols, texportchar); + if (texportstring > 0) fprintf(stderr, "%d String\tcolumn(s) exported in %d ms\n", strcols, texportstring); + if (texportshort > 0) fprintf(stderr, "%d Short\t\tcolumn(s) exported in %d ms\n", shortcols, texportshort); + if (texportint > 0) fprintf(stderr, "%d Integer\tcolumn(s) exported in %d ms\n", intcols, texportint); + if (texportlong > 0) fprintf(stderr, "%d Long\t\tcolumn(s) exported in %d ms\n", longcols, texportlong); + if (texportfloat > 0) fprintf(stderr, "%d Float\t\tcolumn(s) exported in %d ms\n", floatcols, texportfloat); + if (texportdouble > 0) fprintf(stderr, "%d Double\tcolumn(s) exported in %d ms\n", doublecols, texportdouble); */ fits_close_file(fptr, &status); @@ -597,7 +597,7 @@ str FITSdirpat(Client cntxt, MalBlkPtr m snprintf(fulldirectory, BUFSIZ, "%s%s", dir, pat); glob(fulldirectory, GLOB_DOOFFS, NULL, &globbuf); - /* mnstr_printf(GDKout,"#fulldir: %s \nSize: %lu\n",fulldirectory, globbuf.gl_pathc);*/ + /* fprintf(stderr,"#fulldir: %s \nSize: %lu\n",fulldirectory, globbuf.gl_pathc);*/ if (globbuf.gl_pathc == 0) throw(MAL, "listdir", "Couldn't open the directory or there are no files that match the pattern"); @@ -902,14 +902,14 @@ str FITSloadTable(Client cntxt, MalBlkPt fits_get_coltype(fptr, j, &tpcode[j - 1], &rep[j - 1], &wid[j - 1], &status); fits2subtype(&tpe, tpcode[j - 1], rep[j - 1], wid[j - 1]); - /* mnstr_printf(cntxt->fdout,"#%d %ld %ld - M: %s\n", tpcode[j-1], rep[j-1], wid[j-1], tpe.type->sqlname); */ + /* fprintf(stderr,"#%d %ld %ld - M: %s\n", tpcode[j-1], rep[j-1], wid[j-1], tpe.type->sqlname); */ mvc_create_column(m, tbl, cname[j - 1], &tpe); } /* data load */ fits_get_num_rows(fptr, &rows, &status); - mnstr_printf(cntxt->fdout,"#Loading %ld rows in table %s\n", rows, tname); + fprintf(stderr,"#Loading %ld rows in table %s\n", rows, tname); for (j = 1; j <= cnum; j++) { BAT *tmp = NULL; int time0 = GDKms(); @@ -952,7 +952,7 @@ str FITSloadTable(Client cntxt, MalBlkPt for(i = 0; i < bsize ; i++) GDKfree(v[i]); GDKfree(v); - mnstr_printf(cntxt->fdout,"#String column load %d ms, BUNappend %d ms\n", tloadtm, tattachtm); + fprintf(stderr,"#String column load %d ms, BUNappend %d ms\n", tloadtm, tattachtm); } if (status) { @@ -961,9 +961,9 @@ str FITSloadTable(Client cntxt, MalBlkPt msg = createException(MAL, "fits.loadtable", "Cannot load column %s of %s table: %s.\n", cname[j - 1], tname, buf); break; } - mnstr_printf(cntxt->fdout,"#Column %s loaded for %d ms\t", cname[j-1], GDKms() - time0); + fprintf(stderr,"#Column %s loaded for %d ms\t", cname[j-1], GDKms() - time0); store_funcs.append_col(m->session->tr, col, tmp, TYPE_bat); - mnstr_printf(cntxt->fdout,"#Total %d ms\n", GDKms() - time0); + fprintf(stderr,"#Total %d ms\n", GDKms() - time0); BBPunfix(tmp->batCacheid); } diff --git a/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 b/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 --- a/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 +++ b/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 @@ -78,7 +78,7 @@ function user.s2_1{autoCommit=true}(A0:i X_61 := algebra.leftfetchjoin(X_47,X_60); X_62:bat[:oid,:hge] := batcalc.*(X_59,X_61); X_63:hge := aggr.sum(X_62); - sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,6,X_63,""); + sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,7,X_63,""); end s2_1; # querylog.define("explain\nselect sum(lo_extendedprice*lo_discount) as revenue\n\tfrom lineorder, dwdate\n\twhere lo_orderdate = d_datekey\n\t\tand d_year = 1993\n\t\tand lo_discount between 1 and 3\n\t\tand lo_quantity < 25;","sequential_pipe") diff --git a/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 b/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 --- a/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 +++ b/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 @@ -78,7 +78,7 @@ function user.s2_1{autoCommit=true}(A0:i X_61 := algebra.leftfetchjoin(X_47,X_60); X_62:bat[:oid,:hge] := batcalc.*(X_59,X_61); X_63:hge := aggr.sum(X_62); - sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,6,X_63,""); + sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,7,X_63,""); end s2_1; # querylog.define("explain\nselect sum(lo_extendedprice*lo_discount) as revenue\n\tfrom lineorder, dwdate\n\twhere lo_orderdate = d_datekey\n\t\tand d_yearmonthnum = 199401\n\t\tand lo_discount between 4 and 6\n\t\tand lo_quantity between 26 and 35;","sequential_pipe") diff --git a/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 b/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 --- a/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 +++ b/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 @@ -85,7 +85,7 @@ function user.s2_1{autoCommit=true}(A0:i X_70 := algebra.leftfetchjoin(X_55,X_69); X_71:bat[:oid,:hge] := batcalc.*(X_68,X_70); X_72:hge := aggr.sum(X_71); - sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,6,X_72,""); + sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,7,X_72,""); end s2_1; # querylog.define("explain\nselect sum(lo_extendedprice*lo_discount) as revenue\n\tfrom lineorder, dwdate\n\twhere lo_orderdate = d_datekey\n\t\tand d_weeknuminyear = 6 and d_year = 1994\n\t\tand lo_discount between 5 and 7\n\t\tand lo_quantity between 36 and 40;","sequential_pipe") diff --git a/sql/benchmarks/tpch/Tests/06-explain.stable.out b/sql/benchmarks/tpch/Tests/06-explain.stable.out --- a/sql/benchmarks/tpch/Tests/06-explain.stable.out +++ b/sql/benchmarks/tpch/Tests/06-explain.stable.out @@ -75,7 +75,7 @@ function user.s2_1{autoCommit=true}(A0:d X_55 := sql.projectdelta(X_45,X_14,X_17,r1_17,X_20); X_56:bat[:oid,:lng] := batcalc.*(X_54,X_55); X_57:lng := aggr.sum(X_56); - sql.exportValue(1,"sys.L1","revenue","decimal",19,4,8,X_57,""); + sql.exportValue(1,"sys.L1","revenue","decimal",19,4,9,X_57,""); end s2_1; # querylog.define("explain select\n\tsum(l_extendedprice * l_discount) as revenue\nfrom\n\tlineitem\nwhere\n\tl_shipdate >= date \\'1994-01-01\\'\n\tand l_shipdate < date \\'1994-01-01\\' + interval \\'1\\' year\n\tand l_discount between 0.06 - 0.01 and 0.06 + 0.01\n\tand l_quantity < 24;","sequential_pipe") diff --git a/sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 b/sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 --- a/sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 +++ b/sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 @@ -76,7 +76,7 @@ function user.s2_1{autoCommit=true}(A0:d X_57 := sql.projectdelta(X_45,X_14,X_17,r1_17,X_20); X_58:bat[:oid,:hge] := batcalc.*(X_55,X_57); X_59:hge := aggr.sum(X_58); - sql.exportValue(1,"sys.L1","revenue","decimal",30,4,8,X_59,""); + sql.exportValue(1,"sys.L1","revenue","decimal",30,4,9,X_59,""); end s2_1; # querylog.define("explain select\n\tsum(l_extendedprice * l_discount) as revenue\nfrom\n\tlineitem\nwhere\n\tl_shipdate >= date \\'1994-01-01\\'\n\tand l_shipdate < date \\'1994-01-01\\' + interval \\'1\\' year\n\tand l_discount between 0.06 - 0.01 and 0.06 + 0.01\n\tand l_quantity < 24;","sequential_pipe") diff --git a/sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 b/sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 --- a/sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 +++ b/sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 @@ -48,12 +48,12 @@ function user.s2_1{autoCommit=true}(A0:s X_14:bat[:oid,:date] := sql.bind(X_10,"sys","lineitem","l_shipdate",0); X_11:bat[:oid,:oid] := sql.tid(X_10,"sys","lineitem"); X_22 := mtime.addmonths(A6,A7); - X_114 := algebra.subselect(X_14,X_11,A5,X_22,true,false,false); + X_115 := algebra.subselect(X_14,X_11,A5,X_22,true,false,false); (X_17,r1_18) := sql.bind(X_10,"sys","lineitem","l_shipdate",2); - X_115 := algebra.subselect(r1_18,nil:bat[:oid,:oid],A5,X_22,true,false,false); + X_116 := algebra.subselect(r1_18,nil:bat[:oid,:oid],A5,X_22,true,false,false); X_20:bat[:oid,:date] := sql.bind(X_10,"sys","lineitem","l_shipdate",1); - X_117 := algebra.subselect(X_20,X_11,A5,X_22,true,false,false); - X_23 := sql.subdelta(X_114,X_11,X_17,X_115,X_117); + X_118 := algebra.subselect(X_20,X_11,A5,X_22,true,false,false); + X_23 := sql.subdelta(X_115,X_11,X_17,X_116,X_118); X_25:bat[:oid,:oid] := sql.bind_idxbat(X_10,"sys","lineitem","lineitem_l_partkey_fkey",0); (X_27,r1_33) := sql.bind_idxbat(X_10,"sys","lineitem","lineitem_l_partkey_fkey",2); X_29:bat[:oid,:oid] := sql.bind_idxbat(X_10,"sys","lineitem","lineitem_l_partkey_fkey",1); @@ -92,7 +92,7 @@ function user.s2_1{autoCommit=true}(A0:s X_84:hge := aggr.sum(X_83); X_85 := calc./(X_77,X_84); X_86 := calc.*(A0,X_85); - sql.exportValue(1,".L2","promo_revenue","decimal",39,2,8,X_86,""); + sql.exportValue(1,".L2","promo_revenue","decimal",39,2,9,X_86,""); end s2_1; # querylog.define("explain select\n\t100.00 * sum(case\n\t\twhen p_type like \\'PROMO%\\'\n\t\t\tthen l_extendedprice * (1 - l_discount)\n\t\telse 0\n\tend) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue\nfrom\n\tlineitem,\n\tpart\nwhere\n\tl_partkey = p_partkey\n\tand l_shipdate >= date \\'1995-09-01\\'\n\tand l_shipdate < date \\'1995-09-01\\' + interval \\'1\\' month;","sequential_pipe") diff --git a/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 b/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 --- a/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 +++ b/sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 @@ -112,7 +112,7 @@ function user.s2_1{autoCommit=true}(A0:b X_105 := calc.lng(2,X_103,18,5); X_109 := calc.lng(1,A0,15,2); X_111 := calc./(X_105,X_109); - sql.exportValue(1,"sys.L3","avg_yearly","decimal",18,3,8,X_111,""); + sql.exportValue(1,"sys.L3","avg_yearly","decimal",18,3,9,X_111,""); end s2_1; # querylog.define("explain select\n\tsum(l_extendedprice) / 7.0 as avg_yearly\nfrom\n\tlineitem,\n\tpart\nwhere\n\tp_partkey = l_partkey\n\tand p_brand = \\'Brand#23\\'\n\tand p_container = \\'MED BOX\\'\n\tand l_quantity < (\n\t\tselect\n\t\t\t0.2 * avg(l_quantity)\n\t\tfrom\n\t\t\tlineitem\n\t\twhere\n\t\t\tl_partkey = p_partkey\n\t);","sequential_pipe") diff --git a/sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 b/sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 --- a/sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 +++ b/sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 @@ -218,7 +218,7 @@ function user.s2_1{autoCommit=true}(A0:b X_264:bat[:oid,:lng] := batcalc.-(X_255,X_263); X_265:bat[:oid,:hge] := batcalc.*(X_253,X_264); X_266:hge := aggr.sum(X_265); - sql.exportValue(1,"sys.L1","revenue","decimal",33,4,8,X_266,""); + sql.exportValue(1,"sys.L1","revenue","decimal",33,4,9,X_266,""); end s2_1; # querylog.define("explain select\n\tsum(l_extendedprice* (1 - l_discount)) as revenue\nfrom\n\tlineitem,\n\tpart\nwhere\n\t(\n\t\tp_partkey = l_partkey\n\t\tand p_brand = \\'Brand#12\\'\n\t\tand p_container in (\\'SM CASE\\', \\'SM BOX\\', \\'SM PACK\\', \\'SM PKG\\')\n\t\tand l_quantity >= 1 and l_quantity <= 1 + 10\n\t\tand p_size between 1 and 5\n\t\tand l_shipmode in (\\'AIR\\', \\'AIR REG\\')\n\t\tand l_shipinstruct = \\'DELIVER IN PERSON\\'\n\t)\n\tor\n\t(\n\t\tp_partkey = l_partkey\n\t\tand p_brand = \\'Brand#23\\'\n\t\tand p_container in (\\'MED BAG\\', \\'MED BOX\\', \\'MED PKG\\', \\'MED PACK\\')\n\t\tand l_quantity >= 10 and l_quantity <= 10 + 10\n\t\tand p_size between 1 and 10\n\t\tand l_shipmode in (\\'AIR\\', \\'AIR REG\\')\n\t\tand l_shipinstruct = \\'DELIVER IN PERSON\\'\n\t)\n\tor\n\t(\n\t\tp_partkey = l_partkey\n\t\tand p_brand = \\'Brand#34\\'\n\t\tand p_container in (\\'LG CASE\\', \\'LG BOX\\', \\'LG PACK\\', \\'LG PKG\\')\n\t\tand l_quantity >= 20 and l_quant ity <= 20 + 10\n\t\tand p_size between 1 and 15\n\t\tand l_shipmode in (\\'AIR\\', \\'AIR REG\\')\n\t\tand l_shipinstruct = \\'DELIVER IN PERSON\\'\n\t);","sequential_pipe") diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -101,20 +101,21 @@ int bits2digits(int bits) /* 3 casts are allowed (requires dynamic checks) (sofar not used) */ static int convert_matrix[EC_MAX][EC_MAX] = { -/* EC_ANY */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, /* NULL */ -/* EC_TABLE */ { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* EC_BIT */ { 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0 }, -/* EC_CHAR */ { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, -/* EC_STRING */ { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, -/* EC_BLOB */ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* EC_NUM */ { 0, 0, 2, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0 }, -/* EC_INTERVAL*/{ 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0 }, -/* EC_DEC */ { 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0 }, -/* EC_FLT */ { 0, 0, 0, 1, 1, 0, 1, 3, 1, 1, 0, 0, 0, 0 }, -/* EC_TIME */ { 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0 }, -/* EC_DATE */ { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 3, 0 }, -/* EC_TSTAMP */ { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, -/* EC_EXTERNAL*/{ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +/* EC_ANY */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, /* NULL */ +/* EC_TABLE */ { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +/* EC_BIT */ { 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0 }, +/* EC_CHAR */ { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, +/* EC_STRING */ { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, +/* EC_BLOB */ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +/* EC_POS */ { 0, 0, 2, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, +/* EC_NUM */ { 0, 0, 2, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, +/* EC_INTERVAL*/{ 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0 }, +/* EC_DEC */ { 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, +/* EC_FLT */ { 0, 0, 0, 1, 1, 0, 1, 1, 3, 1, 1, 0, 0, 0, 0 }, +/* EC_TIME */ { 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 }, +/* EC_DATE */ { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0 }, +/* EC_TSTAMP */ { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, +/* EC_EXTERNAL*/{ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; int sql_type_convert (int from, int to) @@ -1145,13 +1146,16 @@ sqltypeinit( sql_allocator *sa) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list