Changeset: 987cb8190f4e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=987cb8190f4e
Modified Files:
sql/backends/monet5/sql_result.mx
sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.err
sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.out
sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
sql/test/BugTracker-2009/Tests/decimal_needs_truncation.SF-2605686.stable.out
sql/test/BugTracker-2009/Tests/prepare_commit_execute.SF-2606020.stable.out
sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.out
sql/test/BugTracker-2010/Tests/crash_with_prepare_statement.Bug-2549.stable.out
sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
sql/test/BugTracker-2010/Tests/prepare_on_boolean_bug.Bug-2581.stable.out
sql/test/BugTracker-2010/Tests/prepare_statements_crash_server.Bug-2599.stable.out
sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out.32bit
sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
sql/test/BugTracker/Tests/decimal_prepare.SF-1655818.stable.out
sql/test/BugTracker/Tests/large_prepare.SF-1363729.stable.out
sql/test/BugTracker/Tests/large_prepare_2.SF-1363729.stable.out
sql/test/BugTracker/Tests/prepare_decimal_float.SF-1675795.stable.out
Branch: Aug2011
Log Message:
sql: calculate widths of prepare columns.
diffs (truncated from 351 to 300 lines):
diff --git a/sql/backends/monet5/sql_result.mx
b/sql/backends/monet5/sql_result.mx
--- a/sql/backends/monet5/sql_result.mx
+++ b/sql/backends/monet5/sql_result.mx
@@ -605,18 +605,45 @@ mvc_export_prepare(mvc *c, stream *out,
{
node *n;
int len = c->params ? list_length(c->params) : 0;
+ size_t len1 = 0; /* column widths */
+ int len2 = 1, len3 = 1;
+ sql_arg *a;
+ sql_subtype *t;
if (!out)
return 0;
+ /* calculate column widths */
+ if (c->params) {
+ unsigned int max2 = 10, max3 = 10; /* to help calculate widths
*/
+
+ for (n = c->params->h; n; n = n->next) {
+ size_t slen;
+
+ a = n->data;
+ t = &a->type;
+ slen = strlen(t->type->sqlname);
+ if (slen > len1)
+ len1 = slen;
+ while (t->digits >= max2) {
+ len2++;
+ max2 *= 10;
+ }
+ while (t->scale >= max3) {
+ len3++;
+ max3 *= 10;
+ }
+ }
+ }
+
/* write header, query type: Q_PREPARE */
if (mnstr_printf(out,
"&5 %d %d 3 %d\n" /* TODO: add type here: r(esult) or u(pdate)
*/
- "%% .prepare, .prepare, .prepare # table_name\n"
- "%% type, digits, scale # name\n"
- "%% varchar, int, int # type\n"
- "%% 0, 0, 0 # length\n",
- q->id, len, len) < 0) {
+ "%% .prepare,\t.prepare,\t.prepare # table_name\n"
+ "%% type,\tdigits,\tscale # name\n"
+ "%% varchar,\tint,\tint # type\n"
+ "%% " SZFMT ",\t%d,\t%d # length\n",
+ q->id, len, len, len1, len2, len3) < 0) {
return -1;
}
@@ -626,12 +653,12 @@ mvc_export_prepare(mvc *c, stream *out,
q->paramlen = len;
q->params = SA_NEW_ARRAY(q->sa, sql_subtype, len);
for (n = c->params->h, i=0; n; n = n->next, i++) {
- sql_arg *a = n->data;
- sql_subtype *t = &a->type;
+ a = n->data;
+ t = &a->type;
if (t) {
if (mnstr_printf(out,
- "[ \"%s\", %d, %d ]\n",
+ "[ \"%s\",\t%d,\t%d\t]\n",
t->type->sqlname,
t->digits,
t->scale
diff --git
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.err
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.err
---
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.err
+++
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.err
@@ -10,10 +10,10 @@ stderr of test 'prepare-where.SF-1238867
# 13:00:07 > Mtimeout -timeout 60 MapiClient -lsql -u monetdb -P monetdb
--host=localhost --port=41457 <
prepare-where.SF-1238867.1238959.1238965.1240124.sql
# 13:00:07 >
-MAPI = monetdb@localhost:35781
+MAPI = monetdb@ottar:34070
QUERY = prepare select * from env() as env where ? = ?;
ERROR = !Cannot have a parameter (?) on both sides of an expression
-MAPI = monetdb@localhost:35781
+MAPI = monetdb@ottar:34070
QUERY = prepare select ? from env() as env;
ERROR = !SELECT: subquery result missing
diff --git
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.out
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.out
---
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.out
+++
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.out
@@ -21,12 +21,12 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "tinyint", 8, 0 ]
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 4, 1 # length
[ "varchar", 1024, 0 ]
# 13:00:07 >
diff --git
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
---
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
+++
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
@@ -22,7 +22,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 4, 1, 1 # length
[ "char", 0, 0 ]
% sys.t1234205 # table_name
% name # name
@@ -34,7 +34,8 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 0, 1, 1 # length
+#execute 2 ();
% sys.t1234205 # table_name
% name # name
% varchar # type
diff --git
a/sql/test/BugTracker-2009/Tests/decimal_needs_truncation.SF-2605686.stable.out
b/sql/test/BugTracker-2009/Tests/decimal_needs_truncation.SF-2605686.stable.out
---
a/sql/test/BugTracker-2009/Tests/decimal_needs_truncation.SF-2605686.stable.out
+++
b/sql/test/BugTracker-2009/Tests/decimal_needs_truncation.SF-2605686.stable.out
@@ -33,7 +33,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "decimal", 5, 4 ]
[ 1 ]
% sys.testdec # table_name
diff --git
a/sql/test/BugTracker-2009/Tests/prepare_commit_execute.SF-2606020.stable.out
b/sql/test/BugTracker-2009/Tests/prepare_commit_execute.SF-2606020.stable.out
---
a/sql/test/BugTracker-2009/Tests/prepare_commit_execute.SF-2606020.stable.out
+++
b/sql/test/BugTracker-2009/Tests/prepare_commit_execute.SF-2606020.stable.out
@@ -27,7 +27,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 4, 2, 1 # length
[ "int", 32, 0 ]
[ "clob", 0, 0 ]
[ 1 ]
diff --git
a/sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.out
b/sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.out
--- a/sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.out
+++ b/sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.out
@@ -27,7 +27,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 2, 1 # length
[ "bigint", 64, 0 ]
[ "decimal", 5, 5 ]
[ "decimal", 5, 5 ]
diff --git
a/sql/test/BugTracker-2010/Tests/crash_with_prepare_statement.Bug-2549.stable.out
b/sql/test/BugTracker-2010/Tests/crash_with_prepare_statement.Bug-2549.stable.out
---
a/sql/test/BugTracker-2010/Tests/crash_with_prepare_statement.Bug-2549.stable.out
+++
b/sql/test/BugTracker-2010/Tests/crash_with_prepare_statement.Bug-2549.stable.out
@@ -29,7 +29,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 2, 1 # length
[ "int", 32, 0 ]
[ "decimal", 8, 0 ]
[ "int", 32, 0 ]
diff --git
a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
--- a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
+++ b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
@@ -27,7 +27,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 3, 2, 1 # length
[ "wrd", 64, 0 ]
#exec 0 (1);
% sys.rr # table_name
diff --git
a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
--- a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
+++ b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit
@@ -27,7 +27,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 3, 2, 1 # length
[ "wrd", 32, 0 ]
#exec 0 (1);
% sys.rr # table_name
diff --git
a/sql/test/BugTracker-2010/Tests/prepare_on_boolean_bug.Bug-2581.stable.out
b/sql/test/BugTracker-2010/Tests/prepare_on_boolean_bug.Bug-2581.stable.out
--- a/sql/test/BugTracker-2010/Tests/prepare_on_boolean_bug.Bug-2581.stable.out
+++ b/sql/test/BugTracker-2010/Tests/prepare_on_boolean_bug.Bug-2581.stable.out
@@ -26,7 +26,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "boolean", 1, 0 ]
[ "boolean", 1, 0 ]
diff --git
a/sql/test/BugTracker-2010/Tests/prepare_statements_crash_server.Bug-2599.stable.out
b/sql/test/BugTracker-2010/Tests/prepare_statements_crash_server.Bug-2599.stable.out
---
a/sql/test/BugTracker-2010/Tests/prepare_statements_crash_server.Bug-2599.stable.out
+++
b/sql/test/BugTracker-2010/Tests/prepare_statements_crash_server.Bug-2599.stable.out
@@ -27,25 +27,25 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "tinyint", 8, 0 ]
#prepare select * from t_2599 where a>2*?+1;
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "tinyint", 8, 0 ]
#prepare select * from t_2599 where a>?+1;
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "tinyint", 8, 0 ]
#prepare select * from t_2599 where a>1+?*2;
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 7, 1, 1 # length
[ "tinyint", 8, 0 ]
# 15:41:23 >
diff --git
a/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
b/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
--- a/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
+++ b/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
@@ -71,7 +71,7 @@ stderr of test 'prepare_stmt.Bug-2533.Bu
# 09:32:45 > mclient -lsql -ftest -i -e --host=rig --port=33580
# 09:32:45 >
-MAPI = monetdb@alf:32346
+MAPI = monetdb@ottar:34070
QUERY = exec 1(2.3);
ERROR = !SQLException:sql.prepare:wrong type for argument 1 of prepared
statement: decimal, expected wrd
diff --git
a/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
b/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
--- a/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
+++ b/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
@@ -27,7 +27,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 3, 2, 1 # length
[ "wrd", 64, 0 ]
#exec 0(4);
% ._tables # table_name
diff --git
a/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out.32bit
b/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out.32bit
---
a/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out.32bit
+++
b/sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out.32bit
@@ -27,7 +27,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 3, 2, 1 # length
[ "wrd", 32, 0 ]
#exec 0(1);
% ._tables # table_name
diff --git a/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
b/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
--- a/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
+++ b/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
@@ -79,7 +79,7 @@ stderr of test 'bind_with_cast.SF-172093
# 19:38:47 > mclient -lsql -umonetdb -Pmonetdb --host=alf --port=37754
# 19:38:47 >
-MAPI = monetdb@rig:37922
+MAPI = monetdb@ottar:34070
QUERY = exec 0('100');
ERROR = !SQLException:sql.prepare:wrong type for argument 1 of prepared
statement: char, expected int
diff --git a/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
b/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
--- a/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
+++ b/sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
@@ -21,7 +21,7 @@ Ready.
% .prepare, .prepare, .prepare # table_name
% type, digits, scale # name
% varchar, int, int # type
-% 0, 0, 0 # length
+% 3, 2, 1 # length
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list