Changeset: 25384da1c126 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=25384da1c126
Modified Files:
sql/src/server/rel_sequence.c
sql/src/server/sql_mvc.c
sql/src/server/sql_mvc.h
sql/src/test/BugTracker-2010/Tests/All
Branch: default
Log Message:
fix bug 2730
diffs (59 lines):
diff -r 552431d03806 -r 25384da1c126 sql/src/server/rel_sequence.c
--- a/sql/src/server/rel_sequence.c Wed Nov 24 19:02:01 2010 +0100
+++ b/sql/src/server/rel_sequence.c Wed Nov 24 21:01:27 2010 +0100
@@ -121,7 +121,8 @@
seq = create_sql_sequence(sql->sa, s, name, start, min, max, inc,
cache, cycle);
seq->bedropped = bedropped;
res = rel_seq(sql->sa, DDL_CREATE_SEQ, s->base.name, seq, NULL, NULL);
- if (res)
+ /* for multi statements we keep the sequence around */
+ if (res && stack_has_frame(sql, "MUL") != 0)
stack_push_rel_view(sql, name, rel_dup(res));
return res;
}
diff -r 552431d03806 -r 25384da1c126 sql/src/server/sql_mvc.c
--- a/sql/src/server/sql_mvc.c Wed Nov 24 19:02:01 2010 +0100
+++ b/sql/src/server/sql_mvc.c Wed Nov 24 21:01:27 2010 +0100
@@ -1465,6 +1465,20 @@
}
int
+stack_has_frame(mvc *sql, char *name)
+{
+ int i;
+
+ for (i = sql->topvars-1; i >= 0; i--) {
+ /* frame has no statement and only sometimes a name */
+ if (!sql->vars[i].s && sql->vars[i].name &&
+ strcmp(sql->vars[i].name, name)==0)
+ return 1;
+ }
+ return 0;
+}
+
+int
stack_nr_of_declared_tables(mvc *sql)
{
int i, dt = 0;
diff -r 552431d03806 -r 25384da1c126 sql/src/server/sql_mvc.h
--- a/sql/src/server/sql_mvc.h Wed Nov 24 19:02:01 2010 +0100
+++ b/sql/src/server/sql_mvc.h Wed Nov 24 21:01:27 2010 +0100
@@ -227,7 +227,10 @@
extern sql_rel *stack_find_rel_var(mvc *sql, char *name);
/* find var in current frame */
extern int frame_find_var(mvc *sql, char *name);
+/* find frame holding variable 'name' */
extern int stack_find_frame(mvc *sql, char *name);
+/* find frame with given name */
+extern int stack_has_frame(mvc *sql, char *name);
extern int stack_nr_of_declared_tables(mvc *sql);
extern ValRecord * stack_get_var(mvc *sql, char *name);
diff -r 552431d03806 -r 25384da1c126 sql/src/test/BugTracker-2010/Tests/All
--- a/sql/src/test/BugTracker-2010/Tests/All Wed Nov 24 19:02:01 2010 +0100
+++ b/sql/src/test/BugTracker-2010/Tests/All Wed Nov 24 21:01:27 2010 +0100
@@ -74,3 +74,4 @@
join-and-like.Bug-2715
between-timestamp.Bug-2718
values.Bug-2726
+select_from_seq.Bug-2730
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list