Changeset: e344867019f4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e344867019f4
Modified Files:
sql/server/rel_dump.c
sql/test/merge-partitions/Tests/mergepart29.py
sql/test/merge-partitions/Tests/mergepart29.stable.err
sql/test/merge-partitions/Tests/mergepart29.stable.out
Branch: acticloud
Log Message:
Referenced relations should come before insert/update/delete plans. Also look
for existing properties on the coming relation dumps.
diffs (123 lines):
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1209,6 +1209,29 @@ rel_read(mvc *sql, char *r, int *pos, li
skipWS(r,pos);
+ if (r[*pos] == 'R') {
+ *pos += (int) strlen("REF");
+
+ skipWS(r, pos);
+ (void)readInt(r,pos);
+ skipWS(r, pos);
+ (*pos)++; /* ( */
+ (void)readInt(r,pos); /* skip nr refs */
+ (*pos)++; /* ) */
+ rel = rel_read(sql, r, pos, refs);
+ append(refs, rel);
+ skipWS(r,pos);
+ }
+ if (r[*pos] == '&') {
+ int nr;
+ (*pos)++;
+ skipWS(r, pos);
+ *pos += (int) strlen("REF");
+ skipWS(r, pos);
+ nr = readInt(r,pos); /* skip nr refs */
+ return rel_dup(list_fetch(refs, nr-1));
+ }
+
if (r[*pos] == 'i' && r[*pos+1] == 'n' && r[*pos+2] == 's') {
*pos += (int) strlen("insert");
skipWS(r, pos);
@@ -1262,28 +1285,6 @@ rel_read(mvc *sql, char *r, int *pos, li
return rel_update(sql, lrel, rrel, NULL, exps);
}
- if (r[*pos] == 'R') {
- *pos += (int) strlen("REF");
-
- skipWS(r, pos);
- (void)readInt(r,pos);
- skipWS(r, pos);
- (*pos)++; /* ( */
- (void)readInt(r,pos); /* skip nr refs */
- (*pos)++; /* ) */
- rel = rel_read(sql, r, pos, refs);
- append(refs, rel);
- skipWS(r,pos);
- }
- if (r[*pos] == '&') {
- int nr;
- (*pos)++;
- skipWS(r, pos);
- *pos += (int) strlen("REF");
- skipWS(r, pos);
- nr = readInt(r,pos); /* skip nr refs */
- return rel_dup(list_fetch(refs, nr-1));
- }
if (r[*pos] == 'd') {
*pos += (int) strlen("distinct");
skipWS(r, pos);
@@ -1587,6 +1588,14 @@ rel_read(mvc *sql, char *r, int *pos, li
skipUntilWS(r, pos);
skipWS(r, pos);
}
+ while (strncmp(r+*pos, "USED", strlen("USED")) == 0) {
+ (*pos)+= (int) strlen("USED");
+ skipWS(r, pos);
+ }
+ while (strncmp(r+*pos, "DISTRIBUTE", strlen("DISTRIBUTE")) == 0) {
+ (*pos)+= (int) strlen("DISTRIBUTE");
+ skipWS(r, pos);
+ }
return rel;
}
diff --git a/sql/test/merge-partitions/Tests/mergepart29.py
b/sql/test/merge-partitions/Tests/mergepart29.py
--- a/sql/test/merge-partitions/Tests/mergepart29.py
+++ b/sql/test/merge-partitions/Tests/mergepart29.py
@@ -38,15 +38,13 @@ node2_cur.execute('INSERT INTO "tb2" VAL
node1_cur.execute('CREATE MERGE TABLE "tb1" ("col1" int, "col2" int) PARTITION
BY RANGE ON ("col1");')
node1_cur.execute('CREATE REMOTE TABLE "tb2" ("col1" int, "col2" int) ON
\'mapi:monetdb://localhost:'+str(node2_port)+'/db2\';')
+node1_cur.execute('INSERT INTO "tb2" VALUES (5, 5);')
try:
node1_cur.execute('ALTER TABLE "tb1" ADD TABLE "tb2" AS PARTITION FROM 0
TO 1;') # error
except Exception as ex:
sys.stderr.write(ex.__str__())
node1_cur.execute('ALTER TABLE "tb1" ADD TABLE "tb2" AS PARTITION FROM 0 TO
100;')
-try:
- node1_cur.execute('INSERT INTO "tb1" VALUES (4, 4)') # TODO, inserts on
remote tables
-except Exception as ex:
- sys.stderr.write(ex.__str__())
+node1_cur.execute('INSERT INTO "tb1" VALUES (4, 4);')
node1_cur.execute('SELECT "col1", "col2" FROM "tb1";')
output = node1_cur.fetchall()
diff --git a/sql/test/merge-partitions/Tests/mergepart29.stable.err
b/sql/test/merge-partitions/Tests/mergepart29.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart29.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart29.stable.err
@@ -6,8 +6,7 @@ stderr of test 'mergepart29` in director
# 10:47:53 >
ALTER TABLE: there are values in the column col1 outside the partition range
-42000!INSERT: cannot insert remote table 'tb2' from this server at the moment
-# builtin opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Apr2019/BUILD/var/monetdb5/dbfarm/demo
+# builtin opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-acticloud/BUILD/var/monetdb5/dbfarm/demo
# builtin opt monet_prompt = >
# builtin opt monet_daemon = no
# builtin opt mapi_port = 50000
diff --git a/sql/test/merge-partitions/Tests/mergepart29.stable.out
b/sql/test/merge-partitions/Tests/mergepart29.stable.out
--- a/sql/test/merge-partitions/Tests/mergepart29.stable.out
+++ b/sql/test/merge-partitions/Tests/mergepart29.stable.out
@@ -111,7 +111,7 @@ stdout of test 'mergepart29` in director
# loading sql script: 90_generator_hge.sql
# loading sql script: 99_system.sql
# MonetDB/SQL module loaded
-[(1, 1), (2, 2), (3, 3)]
+[(1, 1), (2, 2), (3, 3), (5, 5), (4, 4)]
# 10:47:55 >
# 10:47:55 > "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list