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

Reply via email to