Changeset: cfce7324e398 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cfce7324e398
Modified Files:
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        sql/server/rel_propagate.c
        sql/server/sql_scan.c
Branch: Jul2021
Log Message:

Don't expect TID column to always be the first one. Simplify conditions and 
update comment


diffs (63 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
@@ -1638,7 +1638,7 @@ rel_read(mvc *sql, char *r, int *pos, li
                        sql_exp *e = (sql_exp *) n->data;
                        const char *cname = exp_name(e);
 
-                       if (strcmp(cname, TID) != 0) { /* Skip TID column */
+                       if (cname[0] != '%') { /* Skip TID column */
                                sql_column *c = mvc_bind_column(sql, t, cname);
 
                                if (!c)
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -6892,9 +6892,17 @@ rel_mark_used(mvc *sql, sql_rel *rel, in
        case op_delete:
                if (proj && rel->r) {
                        sql_rel *r = rel->r;
-                       if (r->exps && r->exps->h) { /* TID is used */
-                               sql_exp *e = r->exps->h->data;
-                               e->used = 1;
+
+                       if (!list_empty(r->exps)) {
+                               for (node *n = r->exps->h; n; n = n->next) {
+                                       sql_exp *e = n->data;
+                                       const char *nname = exp_name(e);
+
+                                       if (nname[0] == '%' && strcmp(nname, 
TID) == 0) { /* TID is used */
+                                               e->used = 1;
+                                               break;
+                                       }
+                               }
                        }
                        rel_exps_mark_used(sql->sa, rel, rel->r);
                        rel_mark_used(sql, rel->r, 0);
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -653,7 +653,7 @@ rel_generate_subupdates(mvc *sql, sql_re
                        sql_exp *e = (sql_exp *) n->data;
                        const char *cname = exp_name(e);
 
-                       if (strcmp(cname, TID) != 0) { /* Skip TID column */
+                       if (cname[0] != '%') { /* Skip TID column */
                                sql_column *c = mvc_bind_column(sql, sub, 
cname);
 
                                if (!c)
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -1206,9 +1206,10 @@ tokenize(mvc * c, int cur)
 /* SQL 'quoted' idents consist of a set of any character of
  * the source language character set other than a 'quote'
  *
- * MonetDB has 2 restrictions:
+ * MonetDB has 3 restrictions:
  *     1 we disallow '%' as the first character.
  *     2 the length is limited to 1024 characters
+ *     3 the identifier 'TID%' is not allowed
  */
 static bool
 valid_ident(const char *restrict s, char *restrict dst)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to