Changeset: 347240b73f0c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=347240b73f0c
Modified Files:
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_gencode.c
        sql/benchmarks/tpch/load.sh
        sql/server/sql_semantic.c
        sql/test/BugTracker-2011/Tests/str_cast_exception.Bug-2847.stable.out
        sql/test/Tests/coalesce.stable.out
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check5.stable.out
        sql/test/mapi/Tests/php_monetdb.stable.out
Branch: Aug2011
Log Message:

fixed str_cast bug (supertype of string(0),string(nr) = string(0))

access idx columns with unique names, ie prefix by '%'.


diffs (truncated from 391 to 300 lines):

diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -2915,11 +2915,10 @@
                throw(SQL,"sql.append","Table missing");
        if (tpe == TYPE_bat)
                BATaccessBegin((BAT*)ins, USE_ALL, MMAP_SEQUENTIAL);    
-       c = mvc_bind_column(m, t, cname);
-       if (c) {
+       if (cname[0] != '%' && (c = mvc_bind_column(m, t, cname)) != NULL) {
                store_funcs.append_col(m->session->tr, c, ins, tpe);
-       } else {
-               sql_idx *i = mvc_bind_idx(m, s, cname);
+       } else if (cname[0] == '%') {
+               sql_idx *i = mvc_bind_idx(m, s, cname+1);
                if (i)
                        store_funcs.append_idx(m->session->tr, i, ins, tpe);
        }
@@ -2963,11 +2962,10 @@
                throw(SQL,"sql.update","Table missing");
        if (tpe == TYPE_bat)
                BATaccessBegin((BAT*)ins, USE_ALL, MMAP_SEQUENTIAL);    
-       c = mvc_bind_column(m, t, cname);
-       if (c) {
+       if (cname[0] != '%' && (c = mvc_bind_column(m, t, cname)) != NULL) {
                store_funcs.update_col(m->session->tr, c, ins, tpe, 0);
-       } else {
-               sql_idx *i = mvc_bind_idx(m, s, cname);
+       } else if (cname[0] == '%') {
+               sql_idx *i = mvc_bind_idx(m, s, cname+1);
                if (i)
                        store_funcs.update_idx(m->session->tr, i, ins, tpe);
        }
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1640,7 +1640,7 @@
                        getArg(q, 0) = sql->mvc_var= 
newTmpVariable(mb,TYPE_int);
                        q = pushSchema(mb, q, i->t);
                        q = pushStr(mb, q, i->t->base.name);
-                       q = pushStr(mb, q, i->base.name);
+                       q = pushStr(mb, q, sa_strconcat(sql->mvc->sa, "%", 
i->base.name));
                        q = pushArgument(mb, q, r);
                        sql->mvc_var = s->nr = getDestVar(q);
                } break;
diff --git a/sql/benchmarks/tpch/load.sh b/sql/benchmarks/tpch/load.sh
--- a/sql/benchmarks/tpch/load.sh
+++ b/sql/benchmarks/tpch/load.sh
@@ -39,4 +39,4 @@
 $SQL < c.sql-dec
 cat load-$SF-LOCKED.sql$T | sed -e s+PWD+$PWD/$dir+ | $SQL 
 #cat load-$SF.sql$T | sed -e s+PWD+$PWD/$dir+ 
-$SQL < alter.sql
+#$SQL < alter.sql
diff --git a/sql/server/sql_semantic.c b/sql/server/sql_semantic.c
--- a/sql/server/sql_semantic.c
+++ b/sql/server/sql_semantic.c
@@ -653,8 +653,12 @@
                                rdigits = digits2bits(rdigits);
                }
        }
-       digits = sql_max(idigits - i->scale, rdigits - r->scale);
-       sql_find_subtype(super, tpe, digits+scale, scale);
+       if (scale == 0 && (idigits == 0 || rdigits == 0)) {
+               sql_find_subtype(super, tpe, 0, 0);
+       } else {
+               digits = sql_max(idigits - i->scale, rdigits - r->scale);
+               sql_find_subtype(super, tpe, digits+scale, scale);
+       }
        return super;
 }
 
diff --git 
a/sql/test/BugTracker-2011/Tests/str_cast_exception.Bug-2847.stable.out 
b/sql/test/BugTracker-2011/Tests/str_cast_exception.Bug-2847.stable.out
--- a/sql/test/BugTracker-2011/Tests/str_cast_exception.Bug-2847.stable.out
+++ b/sql/test/BugTracker-2011/Tests/str_cast_exception.Bug-2847.stable.out
@@ -40,9 +40,9 @@
 #INSERT INTO "testschema"."test" VALUES ('OUTPUT','greet_person','3');
 [ 1    ]
 #SELECT "output_min_time_value_1" FROM "testschema"."test" WHERE "type" = 
'OUTPUT' AND "output" = 'greet_person' ;
-% . # table_name
+% testschema.test # table_name
 % output_min_time_value_1 # name
-% tinyint # type
+% bigint # type
 % 1 # length
 [ 3    ]
 #ROLLBACK;
diff --git a/sql/test/Tests/coalesce.stable.out 
b/sql/test/Tests/coalesce.stable.out
--- a/sql/test/Tests/coalesce.stable.out
+++ b/sql/test/Tests/coalesce.stable.out
@@ -70,7 +70,7 @@
 % . # table_name
 % isnull_single_value # name
 % char # type
-% 1 # length
+% 0 # length
 [ "x"  ]
 % sys.coalescetest,    sys.coalescetest,       sys.coalescetest # table_name
 % id,  name,   age  # name
diff --git a/sql/test/leaks/Tests/check1.stable.out 
b/sql/test/leaks/Tests/check1.stable.out
--- a/sql/test/leaks/Tests/check1.stable.out
+++ b/sql/test/leaks/Tests/check1.stable.out
@@ -36,9 +36,9 @@
 [ "oid",       "bit",  58      ]
 [ "oid",       "bit",  58      ]
 [ "oid",       "bit",  295     ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
@@ -85,14 +85,14 @@
 [ "oid",       "int",  295     ]
 [ "oid",       "int",  295     ]
 [ "oid",       "int",  295     ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
 [ "oid",       "lng",  0       ]
 [ "oid",       "lng",  0       ]
 [ "oid",       "lng",  0       ]
@@ -167,11 +167,11 @@
 [ "oid",       "str",  295     ]
 [ "oid",       "str",  295     ]
 [ "oid",       "str",  295     ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  3155    ]
-[ "oid",       "str",  3155    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  3157    ]
+[ "oid",       "str",  3157    ]
 [ "oid",       "timestamp",    0       ]
 [ "oid",       "timestamp",    0       ]
 [ "oid",       "wrd",  0       ]
diff --git a/sql/test/leaks/Tests/check2.stable.out 
b/sql/test/leaks/Tests/check2.stable.out
--- a/sql/test/leaks/Tests/check2.stable.out
+++ b/sql/test/leaks/Tests/check2.stable.out
@@ -36,9 +36,9 @@
 [ "oid",       "bit",  58      ]
 [ "oid",       "bit",  58      ]
 [ "oid",       "bit",  295     ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
@@ -85,14 +85,14 @@
 [ "oid",       "int",  295     ]
 [ "oid",       "int",  295     ]
 [ "oid",       "int",  295     ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
 [ "oid",       "lng",  0       ]
 [ "oid",       "lng",  0       ]
 [ "oid",       "lng",  0       ]
@@ -167,11 +167,11 @@
 [ "oid",       "str",  295     ]
 [ "oid",       "str",  295     ]
 [ "oid",       "str",  295     ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  3155    ]
-[ "oid",       "str",  3155    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  3157    ]
+[ "oid",       "str",  3157    ]
 [ "oid",       "timestamp",    0       ]
 [ "oid",       "timestamp",    0       ]
 [ "oid",       "wrd",  0       ]
diff --git a/sql/test/leaks/Tests/check3.stable.out 
b/sql/test/leaks/Tests/check3.stable.out
--- a/sql/test/leaks/Tests/check3.stable.out
+++ b/sql/test/leaks/Tests/check3.stable.out
@@ -36,9 +36,9 @@
 [ "oid",       "bit",  59      ]
 [ "oid",       "bit",  59      ]
 [ "oid",       "bit",  297     ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
@@ -85,14 +85,14 @@
 [ "oid",       "int",  297     ]
 [ "oid",       "int",  297     ]
 [ "oid",       "int",  297     ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
 [ "oid",       "lng",  0       ]
 [ "oid",       "lng",  0       ]
 [ "oid",       "lng",  0       ]
@@ -167,11 +167,11 @@
 [ "oid",       "str",  297     ]
 [ "oid",       "str",  297     ]
 [ "oid",       "str",  297     ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  1148    ]
-[ "oid",       "str",  3155    ]
-[ "oid",       "str",  3155    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  1149    ]
+[ "oid",       "str",  3157    ]
+[ "oid",       "str",  3157    ]
 [ "oid",       "timestamp",    0       ]
 [ "oid",       "timestamp",    0       ]
 [ "oid",       "wrd",  0       ]
diff --git a/sql/test/leaks/Tests/check4.stable.out 
b/sql/test/leaks/Tests/check4.stable.out
--- a/sql/test/leaks/Tests/check4.stable.out
+++ b/sql/test/leaks/Tests/check4.stable.out
@@ -36,9 +36,9 @@
 [ "oid",       "bit",  60      ]
 [ "oid",       "bit",  60      ]
 [ "oid",       "bit",  299     ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
-[ "oid",       "bit",  1148    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
+[ "oid",       "bit",  1149    ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
 [ "oid",       "int",  0       ]
@@ -85,14 +85,14 @@
 [ "oid",       "int",  299     ]
 [ "oid",       "int",  299     ]
 [ "oid",       "int",  299     ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  1148    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
-[ "oid",       "int",  3155    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  1149    ]
+[ "oid",       "int",  3157    ]
+[ "oid",       "int",  3157    ]
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to