Changeset: 46ab29b898c2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=46ab29b898c2
Modified Files:
sql/backends/monet5/sql_result.c
sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
Branch: Feb2013
Log Message:
fixed bug 3382 (added test to Bug 2552, which are very related)
diffs (134 lines):
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
@@ -739,14 +739,15 @@ mvc_export_prepare(mvc *c, stream *out,
int len2 = 1, len3 = 1;
sql_arg *a;
sql_subtype *t;
+ sql_rel *r = q->rel;
if (!out)
return 0;
- if (is_project(q->rel->op) && q->rel->exps) {
+ if (is_topn(r->op))
+ r = r->l;
+ if (r && is_project(r->op) && r->exps) {
unsigned int max2 = 10, max3 = 10; /* to help calculate widths
*/
- sql_rel *r = q->rel;
-
nrows += list_length(r->exps);
for (n = r->exps->h; n; n = n->next) {
@@ -815,9 +816,7 @@ mvc_export_prepare(mvc *c, stream *out,
return -1;
}
- if (is_project(q->rel->op) && q->rel->exps) {
- sql_rel *r = q->rel;
-
+ if (r && is_project(r->op) && r->exps) {
for (n = r->exps->h; n; n = n->next) {
char *name, *rname, *schema = NULL;
sql_exp *e = n->data;
diff --git a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
--- a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
+++ b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
@@ -4,3 +4,6 @@ prepare select * from rr limit ?;
exec ** (1);
drop table rr;
+
+prepare select * from tables limit 42;
+exec ** ();
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
@@ -28,7 +28,8 @@ Ready.
% .prepare, .prepare, .prepare, .prepare, .prepare,
.prepare # table_name
% type, digits, scale, schema, table, column # name
% varchar, int, int, str, str, str # type
-% 3, 2, 1, 0, 0, 0 # length
+% 3, 3, 1, 0, 2, 2 # length
+[ "int", 32, 0, "", "rr", "id" ]
[ "wrd", 64, 0, NULL, NULL, NULL ]
#exec 3 (1);
% sys.rr # table_name
@@ -36,8 +37,61 @@ Ready.
% int # type
% 1 # length
[ 1 ]
+#drop table rr;
+#prepare select * from tables limit 42;
+#prepare select * from tables limit 42;
+% .prepare, .prepare, .prepare, .prepare, .prepare,
.prepare # table_name
+% type, digits, scale, schema, table, column # name
+% varchar, int, int, str, str, str # type
+% 8, 4, 1, 0, 6, 13 # length
+[ "int", 32, 0, "", "tables", "id" ]
+[ "varchar", 1024, 0, "", "tables", "name" ]
+[ "int", 32, 0, "", "tables", "schema_id" ]
+[ "varchar", 2048, 0, "", "tables", "query" ]
+[ "smallint", 16, 0, "", "tables", "type" ]
+[ "boolean", 1, 0, "", "tables", "system" ]
+[ "smallint", 16, 0, "", "tables", "commit_action" ]
+[ "boolean", 1, 0, "", "tables", "readonly" ]
+[ "tinyint", 8, 0, "", "tables", "temporary" ]
+#exec 2 ();
+% .tables, .tables, .tables, .tables, .tables,
.tables, .tables, .tables, .tables # table_name
+% id, name, schema_id, query, type, system, commit_action,
readonly, temporary # name
+% int, varchar, int, varchar, smallint, boolean,
smallint, boolean, tinyint # type
+% 4, 17, 4, 496, 1, 5, 1, 5, 1 # length
+[ 2001, "schemas", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2006, "types", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2015, "functions", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2024, "args", 2000, NULL, 0, true, 0, false, 0
]
+[ 2032, "sequences", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2042, "dependencies", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2046, "connections", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2055, "_tables", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2064, "_columns", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2075, "keys", 2000, NULL, 0, true, 0, false, 0
]
+[ 2082, "idxs", 2000, NULL, 0, true, 0, false, 0
]
+[ 2087, "triggers", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2098, "objects", 2000, NULL, 0, true, 0, false,
0 ]
+[ 2103, "_tables", 2102, NULL, 0, true, 2, false,
0 ]
+[ 2112, "_columns", 2102, NULL, 0, true, 2, false,
0 ]
+[ 2123, "keys", 2102, NULL, 0, true, 2, false, 0
]
+[ 2130, "idxs", 2102, NULL, 0, true, 2, false, 0
]
+[ 2135, "triggers", 2102, NULL, 0, true, 2, false,
0 ]
+[ 2146, "objects", 2102, NULL, 0, true, 2, false,
0 ]
+[ 5075, "tables", 2000, "SELECT * FROM (SELECT p.*, 0 AS
\"temporary\" FROM \"sys\".\"_tables\" AS p UNION ALL SELECT t.*, 1 AS
\"temporary\" FROM \"tmp\".\"_tables\" AS t) AS tables where tables.type <>
2;", 1, true, 0, false, 0 ]
+[ 5085, "columns", 2000, "SELECT * FROM (SELECT p.* FROM
\"sys\".\"_columns\" AS p UNION ALL SELECT t.* FROM \"tmp\".\"_columns\" AS t)
AS columns;", 1, true, 0, false, 0 ]
+[ 5105, "db_user_info", 2000, NULL, 0, true, 0, false,
0 ]
+[ 5113, "users", 2000, "SELECT u.\"name\" AS \"name\",
ui.\"fullname\", ui.\"default_schema\" FROM db_users() AS u LEFT JOIN
\"sys\".\"db_user_info\" AS ui ON u.\"name\" = ui.\"name\" ;", 1, true,
0, false, 0 ]
+[ 5117, "user_role", 2000, NULL, 0, true, 0, false,
0 ]
+[ 5120, "auths", 2000, NULL, 0, true, 0, false,
0 ]
+[ 5124, "privileges", 2000, NULL, 0, true, 0, false,
0 ]
+[ 5277, "queryhistory", 2000, NULL, 0, true, 0, false,
0 ]
+[ 5291, "callhistory", 2000, NULL, 0, true, 0, false,
0 ]
+[ 5308, "querylog", 2000, "create view querylog as\nselect qd.*,
ql.ctime, ql.arguments, ql.exec, ql.result, ql.foot, ql.memory, ql.tuples,
ql.inblock, ql.oublock from queryhistory qd, callhistory ql\nwhere qd.id =
ql.id;", 1, true, 0, false, 0 ]
+[ 6074, "storagemodelinput", 2000, NULL, 0, true, 0,
false, 0 ]
+[ 6115, "tablestoragemodel", 2000, "-- A summary of the table
storage requirement is is available as a table view.\n-- The auxillary column
denotes the maximum space if all non-sorted columns\n-- would be augmented with
a hash (rare situation)\ncreate view sys.tablestoragemodel\nas select
\"schema\",\"table\",max(count) as \"count\",\n\tsum(columnsize) as
columnsize,\n\tsum(heapsize) as heapsize,\n\tsum(indices) as
indices,\n\tsum(case when sorted = false then 8 * count else 0 end) as
auxillary\nfrom sys.storagemodel() group by \"schema\",\"table\";", 1,
true, 0, false, 0 ]
+[ 6137, "systemfunctions", 2000, NULL, 0, true, 0,
false, 0 ]
-# 08:45:11 >
-# 08:45:11 > Done.
-# 08:45:11 >
+# 11:49:44 >
+# 11:49:44 > "Done."
+# 11:49:44 >
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
@@ -27,7 +27,8 @@ Ready.
% .prepare, .prepare, .prepare, .prepare, .prepare,
.prepare # table_name
% type, digits, scale, schema, table, column # name
% varchar, int, int, str, str, str # type
-% 3, 2, 1, 0, 0, 0 # length
+% 3, 3, 1, 0, 12, 2 # length
+[ "int", 32, 0, "", "data_1mto10m", "id" ]
[ "int", 32, 0, NULL, NULL, NULL ]
# 12:37:58 >
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list