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]