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