Changeset: a534d20b6c00 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a534d20b6c00
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_scenario.c
        sql/server/rel_dump.c
Branch: default
Log Message:

Merged with Oct2020


diffs (truncated from 763 to 300 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2178,11 +2178,11 @@ split_join_exps(sql_rel *rel, list *join
                                                        left_reference = 
right_reference = 1;
                                                }
                                        } else {
-                                               if (l->card != CARD_ATOM) {
+                                               if (l->card != CARD_ATOM || 
!exp_is_atom(l)) {
                                                        left_reference += 
rel_find_exp(rel->l, l) != NULL;
                                                        right_reference += 
rel_find_exp(rel->r, l) != NULL;
                                                }
-                                               if (r->card != CARD_ATOM) {
+                                               if (r->card != CARD_ATOM || 
!exp_is_atom(r)) {
                                                        left_reference += 
rel_find_exp(rel->l, r) != NULL;
                                                        right_reference += 
rel_find_exp(rel->r, r) != NULL;
                                                }
@@ -2193,7 +2193,7 @@ split_join_exps(sql_rel *rel, list *join
                                        for (node *n = l->h ; n ; n = n->next) {
                                                sql_exp *ee = n->data;
 
-                                               if (ee->card != CARD_ATOM) {
+                                               if (ee->card != CARD_ATOM || 
!exp_is_atom(ee)) {
                                                        left_reference += 
rel_find_exp(rel->l, ee) != NULL;
                                                        right_reference += 
rel_find_exp(rel->r, ee) != NULL;
                                                }
@@ -2201,7 +2201,7 @@ split_join_exps(sql_rel *rel, list *join
                                        for (node *n = r->h ; n ; n = n->next) {
                                                sql_exp *ee = n->data;
 
-                                               if (ee->card != CARD_ATOM) {
+                                               if (ee->card != CARD_ATOM || 
!exp_is_atom(ee)) {
                                                        left_reference += 
rel_find_exp(rel->l, ee) != NULL;
                                                        right_reference += 
rel_find_exp(rel->r, ee) != NULL;
                                                }
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -337,6 +337,10 @@ SQLinit(Client c)
        backend *be = NULL;
        mvc *m = NULL;
        sql_allocator *sa = NULL;
+       const char *opt_pipe;
+
+       if ((opt_pipe = GDKgetenv("sql_optimizer")) && 
!isOptimizerPipe(opt_pipe))
+               throw(SQL, "sql.init", SQLSTATE(42000) "invalid sql optimizer 
pipeline %s", opt_pipe);
 
        MT_lock_set(&sql_contextLock);
 
diff --git a/sql/jdbc/tests/Tests/All b/sql/jdbc/tests/Tests/All
--- a/sql/jdbc/tests/Tests/All
+++ b/sql/jdbc/tests/Tests/All
@@ -46,3 +46,4 @@ HAVE_JDBCTESTS?Bug_PrepStmtSetString_638
 HAVE_JDBCTESTS?Bug_LargeQueries_6571_6693
 HAVE_JDBCTESTS?Bug_IsValid_Timeout_Bug_6782
 HAVE_JDBCTESTS?Bug_PrepStmt_With_Errors_Jira292
+HAVE_JDBCCLIENT_JAR?ValidateSystemCatalogTables
diff --git a/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.SQL.bat 
b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.SQL.bat
new file mode 100755
--- /dev/null
+++ b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.SQL.bat
@@ -0,0 +1,11 @@
+@echo off
+
+echo user=monetdb>     .monetdb
+echo password=monetdb>>        .monetdb
+
+prompt # $t $g  
+echo on
+
+call java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d %TSTDB% 
-e -f "%TSTSRCBASE%\%TSTDIR%\Tests\ValidateSystemCatalogTables.sql"
+
+@del .monetdb
diff --git a/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.SQL.sh 
b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.SQL.sh
new file mode 100755
--- /dev/null
+++ b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.SQL.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+cat << EOF > .monetdb
+user=monetdb
+password=monetdb
+EOF
+
+Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d 
${TSTDB} -e -f $TSTSRCBASE/$TSTDIR/Tests/ValidateSystemCatalogTables.sql"
+
+rm -f .monetdb
diff --git a/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.sql 
b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.sql
new file mode 100644
--- /dev/null
+++ b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.sql
@@ -0,0 +1,5 @@
+\vsci
+\vsi sys
+\vsi tmp
+\vdbi
+
diff --git a/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.stable.err 
b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.stable.err
new file mode 100755
--- /dev/null
+++ b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.stable.err
@@ -0,0 +1,17 @@
+stderr of test 'ValidateSystemCatalogTables` in directory 'sql/jdbc/tests` 
itself:
+
+
+# 16:25:51 >  
+# 16:25:51 >  "./ValidateSystemCatalogTables.SQL.sh" 
"ValidateSystemCatalogTables"
+# 16:25:51 >  
+
+
+# 16:25:51 >  
+# 16:25:51 >  java nl.cwi.monetdb.client.JdbcClient -h localhost -p 34154 -d 
mTests_sql_jdbc_tests -e -f 
/home/dinther/dev/dev/MonetDB/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.sql
+# 16:25:51 >  
+
+
+# 16:25:55 >  
+# 16:25:55 >  "Done."
+# 16:25:55 >  
+
diff --git a/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.stable.out 
b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.stable.out
new file mode 100755
--- /dev/null
+++ b/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.stable.out
@@ -0,0 +1,45 @@
+stdout of test 'ValidateSystemCatalogTables` in directory 'sql/jdbc/tests` 
itself:
+
+
+# 16:25:09 >  
+# 16:25:09 >  "./ValidateSystemCatalogTables.SQL.sh" 
"ValidateSystemCatalogTables"
+# 16:25:09 >  
+
+
+# 16:25:09 >  
+# 16:25:09 >  java nl.cwi.monetdb.client.JdbcClient -h localhost -p 34154 -d 
mTests_sql_jdbc_tests -e -f 
/home/dinther/dev/dev/MonetDB/sql/jdbc/tests/Tests/ValidateSystemCatalogTables.sql
+# 16:25:09 >  
+
+\vsci
+Checking     45 tables/keys  in schema sys for Primary Key uniqueness 
violations.
+Checking     45 columns      in schema sys for Primary Key Not Null violations.
+Checking     30 tables/keys  in schema sys for Unique Constraint violations.
+Checking     96 foreign keys in schema sys for Foreign Key referential 
integrity violations.
+Checking    169 columns      in schema sys for Not Null violations.
+Checking    153 columns      in schema sys for Max Character Length violations.
+Checking      6 tables/keys  in schema tmp for Primary Key uniqueness 
violations.
+Checking      6 columns      in schema tmp for Primary Key Not Null violations.
+Checking      7 tables/keys  in schema tmp for Unique Constraint violations.
+Checking     13 foreign keys in schema tmp for Foreign Key referential 
integrity violations.
+Checking     35 columns      in schema tmp for Not Null violations.
+Checking     14 columns      in schema tmp for Max Character Length violations.
+\vsi sys
+Checking     10 keys         in schema sys for Primary Key uniqueness 
violations.
+Checking      7 keys         in schema sys for Unique Constraint violations.
+Checking      0 foreign keys in schema sys for Foreign Key referential 
integrity violations.
+Checking     29 columns      in schema sys for Not Null violations.
+Checking    153 columns      in schema sys for Max Character Length violations.
+\vsi tmp
+Checking      0 keys         in schema tmp for Primary Key uniqueness 
violations.
+Checking      0 keys         in schema tmp for Unique Constraint violations.
+Checking      0 foreign keys in schema tmp for Foreign Key referential 
integrity violations.
+Checking      0 columns      in schema tmp for Not Null violations.
+Checking     14 columns      in schema tmp for Max Character Length violations.
+\vdbi
+No user schemas found in this database.
+
+
+# 16:25:12 >  
+# 16:25:12 >  "Done."
+# 16:25:12 >  
+
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
@@ -745,7 +745,7 @@ readString( char *r, int *pos)
        return st;
 }
 
-static sql_exp* exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *pexps, 
char *r, int *pos, int grp) ;
+static sql_exp* exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list 
*top_exps, char *r, int *pos, int grp) ;
 
 static void *
 read_prop( mvc *sql, sql_exp *exp, char *r, int *pos)
@@ -791,7 +791,7 @@ read_prop( mvc *sql, sql_exp *exp, char 
 }
 
 static list*
-read_exps(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *pexps, char *r, int 
*pos, char bracket, int grp)
+read_exps(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *top_exps, char *r, int 
*pos, char bracket, int grp, int top)
 {
        list *exps = new_exp_list(sql->sa);
        sql_exp *e;
@@ -802,7 +802,7 @@ read_exps(mvc *sql, sql_rel *lrel, sql_r
 
                (*pos)++;
                skipWS( r, pos);
-               e = exp_read(sql, lrel, rrel, pexps, r, pos, grp);
+               e = exp_read(sql, lrel, rrel, top ? exps : top_exps, r, pos, 
grp);
                if (!e && r[*pos] != ebracket) {
                        return sql_error(sql, -1, SQLSTATE(42000) "Missing 
closing %c\n", ebracket);
                } else if (!e) {
@@ -815,21 +815,10 @@ read_exps(mvc *sql, sql_rel *lrel, sql_r
                if (!read_prop(sql, e, r, pos))
                        return NULL;
                while (r[*pos] == ',') {
-                       int op = 0;
 
                        (*pos)++;
                        skipWS( r, pos);
-                       op = *pos;
-                       e = exp_read(sql, lrel, rrel, exps, r, pos, grp);
-                       if (!e && pexps) {
-                               *pos = op;
-                               e = exp_read(sql, lrel, rrel, pexps, r, pos, 
grp);
-                               if (e) {
-                                       /* reset error */
-                                       sql->session->status = 0;
-                                       sql->errstr[0] = '\0';
-                               }
-                       }
+                       e = exp_read(sql, lrel, rrel, top ? exps : top_exps, r, 
pos, grp);
                        if (!e)
                                return NULL;
                        append(exps, e);
@@ -846,7 +835,7 @@ read_exps(mvc *sql, sql_rel *lrel, sql_r
 }
 
 static sql_exp*
-exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *pexps, char *r, int 
*pos, int grp)
+exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, list *top_exps, char *r, int 
*pos, int grp)
 {
        int f = -1, not = 1, old, d=0, s=0, unique = 0, no_nils = 0, quote = 0, 
zero_if_empty = 0;
        char *tname = NULL, *cname = NULL, *var_cname = NULL, *e, *b = r + 
*pos, *st;
@@ -874,13 +863,10 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                cname = sa_strdup(sql->sa, cname);
                *e = old;
                skipWS(r, pos);
-               if (pexps) {
-                       int mul = 0;
-                       exp = exps_bind_column2(pexps, tname, cname, &mul);
+               if (top_exps) {
+                       exp = exps_bind_column2(top_exps, tname, cname, NULL);
                        if (exp)
                                exp = exp_alias_or_copy(sql, tname, cname, 
lrel, exp);
-                       (void) mul;
-                       assert(mul == 0);
                }
                if (!exp && lrel) {
                        exp = rel_bind_column2(sql, lrel, tname, cname, 0);
@@ -897,7 +883,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                        list *lexps,*rexps;
                        char *fname = NULL;
 
-                       if (!(lexps = read_exps(sql, lrel, rrel, pexps, r, pos, 
'(', 0)))
+                       if (!(lexps = read_exps(sql, lrel, rrel, top_exps, r, 
pos, '(', 0, 0)))
                                return NULL;
                        skipWS(r, pos);
                        if (r[*pos] == '!') {
@@ -924,7 +910,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                                skipWS(r,pos);
                        }
 
-                       if (!(rexps = read_exps(sql, lrel, rrel, pexps, r, pos, 
'(', 0)))
+                       if (!(rexps = read_exps(sql, lrel, rrel, top_exps, r, 
pos, '(', 0, 0)))
                                return NULL;
                        if (filter) {
                                sql_subfunc *func = NULL;
@@ -951,7 +937,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
        case '[':
                tname = b;
                if (tname && *tname == '[') { /* list of values */
-                       if (!(exps = read_exps(sql, lrel, rrel, pexps, r, pos, 
'[', 0)))
+                       if (!(exps = read_exps(sql, lrel, rrel, top_exps, r, 
pos, '[', 0, 0)))
                                return NULL;
                        exp = exp_values(sql->sa, exps);
                } else {
@@ -977,7 +963,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                        if (r[*pos] == '[') { /* convert */
                                (*pos)++;
                                skipWS(r, pos);
-                               if (!(exp = exp_read(sql, lrel, rrel, pexps, r, 
pos, 0)))
+                               if (!(exp = exp_read(sql, lrel, rrel, top_exps, 
r, pos, 0)))
                                        return NULL;
                                if (r[*pos] != ']')
                                        return sql_error(sql, -1, 
SQLSTATE(42000) "Convert: missing ']'\n");
@@ -1035,7 +1021,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                sql_subfunc *a = NULL;
                node *n;
 
-               if (!(exps = read_exps(sql, lrel, rrel, pexps, r, pos, '(', 0)))
+               if (!(exps = read_exps(sql, lrel, rrel, top_exps, r, pos, '(', 
0, 0)))
                        return NULL;
                tname = b;
                *e = 0;
@@ -1123,8 +1109,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                        old = *e;
                        *e = 0;
                        var_cname = sa_strdup(sql->sa, b);
-                       if (pexps) {
-                               exp = exps_bind_column(pexps, var_cname, &amb, 
&mul, 1);
+                       if (top_exps) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to