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