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