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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to