Changeset: bb2df8505bee for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bb2df8505bee
Modified Files:
        sql/server/sql_mvc.c
        sql/server/sql_semantic.c
        sql/server/sql_semantic.h
Branch: default
Log Message:

Search in schema path for distinct string column used by column.
Fixes #8047.


diffs (53 lines):

diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -1512,9 +1512,11 @@ mvc_ustr(mvc *m, sql_schema *s, sql_colu
        TRC_DEBUG(SQL_TRANS, "Ustr: %s %s.%s\n", col->base.name, s->base.name, 
uname);
        if (!EC_VARCHAR(col->type.type->eclass))
                return -5;
-       sql_ustr *u = find_sql_ustr(m->session->tr, s, uname);
+       sql_ustr *u = find_ustr_on_scope(m, sname, uname, "CREATE TABLE");
        if (u == NULL)
                return -6;
+       if (u->s)
+               s = u->s;
        char buf[32];      /* max 2 times 10 digits, 2 spaces, "USTR", \0 */
        int len = snprintf(buf, sizeof(buf), "USTR %d %d", s->base.id, 
u->base.id);
        assert(len < (int) sizeof(buf) && len > 5);
diff --git a/sql/server/sql_semantic.c b/sql/server/sql_semantic.c
--- a/sql/server/sql_semantic.c
+++ b/sql/server/sql_semantic.c
@@ -243,6 +243,22 @@ find_sequence_on_scope(mvc *sql, const c
                error);
 }
 
+static sql_ustr *
+find_ustr(mvc *sql, sql_schema *s, const char *name)
+{
+       return find_sql_ustr(sql->session->tr, s, name);
+}
+
+sql_ustr *
+find_ustr_on_scope(mvc *sql, const char *sname, const char *name, const char 
*error)
+{
+       return (sql_ustr *) search_object_on_path_func(
+               sql,
+               (sql_base *(*)(mvc *, sql_schema *, const char *)) find_ustr,
+               NULL, sname, name, SQLSTATE(42000), "distinct string column",
+               error);
+}
+
 sql_idx *
 find_idx_on_scope(mvc *sql, const char *sname, const char *name, const char 
*error)
 {
diff --git a/sql/server/sql_semantic.h b/sql/server/sql_semantic.h
--- a/sql/server/sql_semantic.h
+++ b/sql/server/sql_semantic.h
@@ -28,6 +28,7 @@ extern sql_schema *tmp_schema(mvc *sql);
 /* Search function for SQL objects with scoping rules. For tables an optional 
schema can be provided with search priority */
 sql_export sql_table *find_table_or_view_on_scope(mvc *sql, sql_schema *s, 
const char *sname, const char *tname, const char *error, bool isView);
 extern sql_sequence *find_sequence_on_scope(mvc *sql, const char *sname, const 
char *name, const char *error);
+extern sql_ustr *find_ustr_on_scope(mvc *sql, const char *sname, const char 
*name, const char *error);
 extern sql_idx *find_idx_on_scope(mvc *sql, const char *sname, const char 
*name, const char *error);
 extern sql_type *find_type_on_scope(mvc *sql, const char *sname, const char 
*name, const char *error);
 extern sql_trigger *find_trigger_on_scope(mvc *sql, const char *sname, const 
char *name, const char *error);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to