Changeset: 49b0b1eff2b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/49b0b1eff2b3
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_user.c
sql/common/sql_types.c
sql/scripts/52_describe.sql
sql/server/rel_exp.c
sql/server/rel_updates.c
sql/server/rel_xml.c
sql/server/sql_parser.y
sql/server/sql_semantic.c
sql/storage/store.c
Branch: cleanup_types
Log Message:
Make CLOB an alias of VARCHAR, set type of literal strings to VARCHAR.
Mostly done by Niels.
diffs (truncated from 369 to 300 lines):
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -644,7 +644,7 @@ create_table_from_emit(Client cntxt, cha
sql_column *col = NULL;
if (!strcmp(atomname, "str"))
- sql_find_subtype(&tpe, "clob", 0, 0);
+ sql_find_subtype(&tpe, "varchar", 0, 0);
else {
sql_subtype *t = sql_bind_localtype(atomname);
if (!t)
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -166,7 +166,7 @@ SQLsetTrace(Client cntxt, MalBlkPtr mb)
throw(SQL, "sql.statement", SQLSTATE(HY013) MAL_MALLOC_FAIL);
}
q = pushArgument(mb,q, k);
- q = pushStr(mb,q,"clob");
+ q = pushStr(mb,q,"varchar");
pushInstruction(mb, q);
resultset = pushArgument(mb,resultset, getArg(q,0));
diff --git a/sql/backends/monet5/sql_gencode.c
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1746,7 +1746,7 @@ rel_print(mvc *sql, sql_rel *rel, int de
nl, nl);
mnstr_printf(fd, "%% .plan # table_name\n");
mnstr_printf(fd, "%% rel # name\n");
- mnstr_printf(fd, "%% clob # type\n");
+ mnstr_printf(fd, "%% varchar # type\n");
mnstr_printf(fd, "%% %zu # length\n", len - 1 /* remove = */);
/* output the data */
diff --git a/sql/backends/monet5/sql_statement.c
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -139,7 +139,7 @@ stmt_atom_string_nil(backend *be)
{
sql_subtype t;
- sql_find_subtype(&t, "clob", 0, 0);
+ sql_find_subtype(&t, "varchar", 0, 0);
return stmt_atom(be, atom_string(be->mvc->sa, &t, NULL));
}
diff --git a/sql/backends/monet5/sql_upgrades.c
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -174,7 +174,14 @@ check_sys_tables(Client c, mvc *m, sql_s
"update sys._columns
set type_digits = 15 where type = 'smallint' and type_digits <> 15;\n"
"update sys._columns
set type_digits = 31 where type = 'int' and type_digits <> 31;\n"
"update sys._columns
set type_digits = 63 where type = 'bigint' and type_digits <> 63;\n"
- "update sys._columns
set type_digits = 127 where type = 'hugeint' and type_digits <> 127;\n",
+ "update sys._columns
set type_digits = 127 where type = 'hugeint' and type_digits <> 127;\n"
+ "update sys._columns
set type = 'varchar' where type in ('clob', 'char') and table_id in (select id
from sys._tables where system and name <> 'netcdf_files');\n"
+ "update sys.args set
type_digits = 7 where type = 'tinyint' and type_digits <> 7;\n"
+ "update sys.args set
type_digits = 15 where type = 'smallint' and type_digits <> 15;\n"
+ "update sys.args set
type_digits = 31 where type = 'int' and type_digits <> 31;\n"
+ "update sys.args set
type_digits = 63 where type = 'bigint' and type_digits <> 63;\n"
+ "update sys.args set
type_digits = 127 where type = 'hugeint' and type_digits <> 127;\n"
+ "update sys.args set
type = 'varchar' where type in ('clob', 'char');\n",
"update", true, false,
NULL);
if (err)
return err;
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -414,7 +414,7 @@ monet5_create_privileges(ptr _mvc, sql_s
mvc_create_column_(&col, m, t, "name", "varchar", 1024);
mvc_create_column_(&col, m, t, "fullname", "varchar", 2048);
mvc_create_column_(&col, m, t, "default_schema", "int", 9);
- mvc_create_column_(&col, m, t, "schema_path", "clob", 0);
+ mvc_create_column_(&col, m, t, "schema_path", "varchar", 0);
mvc_create_column_(&col, m, t, "max_memory", "bigint", 64);
mvc_create_column_(&col, m, t, "max_workers", "int", 32);
mvc_create_column_(&col, m, t, "optimizer", "varchar", 1024);
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -560,8 +560,8 @@ supertype_opt_string(sql_subtype *super,
lsuper = *r;
/* EC_STRING class is superior to EC_CHAR */
if (EC_VARCHAR(i->type->eclass) && EC_VARCHAR(r->type->eclass)) {
- if (!strcmp(i->type->base.name, "clob") ||
!strcmp(r->type->base.name, "clob")) {
- lsuper = !strcmp(i->type->base.name, "clob") ? *i : *r;
+ if (!strcmp(i->type->base.name, "varchar") ||
!strcmp(r->type->base.name, "varchar")) {
+ lsuper = !strcmp(i->type->base.name, "varchar") ? *i :
*r;
radix = lsuper.type->radix;
tpe = lsuper.type->base.name;
eclass = lsuper.type->eclass;
@@ -926,7 +926,7 @@ static void
sqltypeinit( sql_allocator *sa)
{
sql_type *ts[100];
- sql_type **strings, **numerical;
+ sql_type **numerical;
sql_type **decimals, **floats, **dates, **t;
sql_type *STR, *BTE, *SHT, *INT, *LNG, *OID, *FLT, *DBL, *DEC;
#ifdef HAVE_HGE
@@ -950,10 +950,7 @@ sqltypeinit( sql_allocator *sa)
BIT = *t++ = sql_create_type(sa, "BOOLEAN", 1, 0, 2, EC_BIT, "bit");
sql_create_alias(sa, BIT->base.name, "BOOL");
- strings = t;
- /* create clob type first, so functions by default will bind to the
clob version which doesn't require length validation on some cases */
- STR = *t++ = sql_create_type(sa, "CLOB", 0, 0, 0, EC_STRING, "str");
- *t++ = sql_create_type(sa, "VARCHAR", 0, 0, 0, EC_STRING, "str");
+ STR = *t++ = sql_create_type(sa, "VARCHAR", 0, 0, 0, EC_STRING, "str");
*t++ = sql_create_type(sa, "CHAR", 0, 0, 0, EC_CHAR, "str");
numerical = t;
@@ -1648,56 +1645,55 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "second", "mtime", "seconds", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, SECINT);
sql_create_func(sa, "epoch_ms", "mtime", "epoch_ms", FALSE, FALSE,
SCALE_NONE, 3, BigDEC, 1, SECINT);
- for (t = strings; t < numerical; t++) {
- sql_create_func(sa, "next_value_for", "sql", "next_value",
TRUE, FALSE, SCALE_NONE, 0, LNG, 2, *t, *t);
- sql_create_func(sa, "get_value_for", "sql", "get_value", TRUE,
FALSE, SCALE_NONE, 0, LNG, 2, *t, *t);
- sql_create_func(sa, "restart", "sql", "restart", TRUE, FALSE,
SCALE_NONE, 0, LNG, 3, *t, *t, LNG);
+ sql_create_func(sa, "next_value_for", "sql", "next_value", TRUE, FALSE,
SCALE_NONE, 0, LNG, 2, STR, STR);
+ sql_create_func(sa, "get_value_for", "sql", "get_value", TRUE, FALSE,
SCALE_NONE, 0, LNG, 2, STR, STR);
+ sql_create_func(sa, "restart", "sql", "restart", TRUE, FALSE,
SCALE_NONE, 0, LNG, 3, STR, STR, LNG);
- sql_create_func(sa, "locate", "str", "locate", FALSE, FALSE,
SCALE_NONE, 0, INT, 2, *t, *t);
- sql_create_func(sa, "locate", "str", "locate3", FALSE, FALSE,
SCALE_NONE, 0, INT, 3, *t, *t, INT);
- sql_create_func(sa, "charindex", "str", "locate", FALSE, FALSE,
SCALE_NONE, 0, INT, 2, *t, *t);
- sql_create_func(sa, "charindex", "str", "locate3", FALSE,
FALSE, SCALE_NONE, 0, INT, 3, *t, *t, INT);
- sql_create_func(sa, "splitpart", "str", "splitpart", FALSE,
FALSE, INOUT, 0, *t, 3, *t, *t, INT);
- sql_create_func(sa, "substring", "str", "substring", FALSE,
FALSE, INOUT, 0, *t, 2, *t, INT);
- sql_create_func(sa, "substring", "str", "substring3", FALSE,
FALSE, INOUT, 0, *t, 3, *t, INT, INT);
- sql_create_func(sa, "substr", "str", "substring", FALSE, FALSE,
INOUT, 0, *t, 2, *t, INT);
- sql_create_func(sa, "substr", "str", "substring3", FALSE,
FALSE, INOUT, 0, *t, 3, *t, INT, INT);
+ sql_create_func(sa, "locate", "str", "locate", FALSE, FALSE,
SCALE_NONE, 0, INT, 2, STR, STR);
+ sql_create_func(sa, "locate", "str", "locate3", FALSE, FALSE,
SCALE_NONE, 0, INT, 3, STR, STR, INT);
+ sql_create_func(sa, "charindex", "str", "locate", FALSE, FALSE,
SCALE_NONE, 0, INT, 2, STR, STR);
+ sql_create_func(sa, "charindex", "str", "locate3", FALSE, FALSE,
SCALE_NONE, 0, INT, 3, STR, STR, INT);
+ sql_create_func(sa, "splitpart", "str", "splitpart", FALSE, FALSE,
INOUT, 0, STR, 3, STR, STR, INT);
+ sql_create_func(sa, "substring", "str", "substring", FALSE, FALSE,
INOUT, 0, STR, 2, STR, INT);
+ sql_create_func(sa, "substring", "str", "substring3", FALSE, FALSE,
INOUT, 0, STR, 3, STR, INT, INT);
+ sql_create_func(sa, "substr", "str", "substring", FALSE, FALSE, INOUT,
0, STR, 2, STR, INT);
+ sql_create_func(sa, "substr", "str", "substring3", FALSE, FALSE, INOUT,
0, STR, 3, STR, INT, INT);
- sql_create_filter(sa, "like", "algebra", "like", FALSE, FALSE,
SCALE_NONE, 0, 4, *t, *t, *t, BIT);
- sql_create_filter(sa, "not_like", "algebra", "not_like", FALSE,
FALSE, SCALE_NONE, 0, 4, *t, *t, *t, BIT);
+ sql_create_filter(sa, "like", "algebra", "like", FALSE, FALSE,
SCALE_NONE, 0, 4, STR, STR, STR, BIT);
+ sql_create_filter(sa, "not_like", "algebra", "not_like", FALSE, FALSE,
SCALE_NONE, 0, 4, STR, STR, STR, BIT);
- sql_create_func(sa, "patindex", "pcre", "patindex", FALSE,
FALSE, SCALE_NONE, 0, INT, 2, *t, *t);
- sql_create_func(sa, "truncate", "str", "stringleft", FALSE,
FALSE, SCALE_NONE, 0, *t, 2, *t, INT);
- sql_create_func(sa, "concat", "calc", "+", FALSE, FALSE,
DIGITS_ADD, 0, *t, 2, *t, *t);
- sql_create_func(sa, "ascii", "str", "ascii", TRUE, FALSE,
SCALE_NONE, 0, INT, 1, *t); /* ascii of empty string is null */
- sql_create_func(sa, "code", "str", "unicode", FALSE, FALSE,
SCALE_NONE, 0, *t, 1, INT);
- sql_create_func(sa, "length", "str", "length", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, *t);
- sql_create_func(sa, "right", "str", "stringright", FALSE,
FALSE, SCALE_NONE, 0, *t, 2, *t, INT);
- sql_create_func(sa, "left", "str", "stringleft", FALSE, FALSE,
SCALE_NONE, 0, *t, 2, *t, INT);
- sql_create_func(sa, "upper", "str", "toUpper", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "ucase", "str", "toUpper", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "lower", "str", "toLower", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "lcase", "str", "toLower", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "btrim", "str", "trim", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "btrim", "str", "trim2", FALSE, FALSE,
INOUT, 0, *t, 2, *t, *t);
- sql_create_func(sa, "ltrim", "str", "ltrim", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "ltrim", "str", "ltrim2", FALSE, FALSE,
INOUT, 0, *t, 2, *t, *t);
- sql_create_func(sa, "rtrim", "str", "rtrim", FALSE, FALSE,
INOUT, 0, *t, 1, *t);
- sql_create_func(sa, "rtrim", "str", "rtrim2", FALSE, FALSE,
INOUT, 0, *t, 2, *t, *t);
+ sql_create_func(sa, "patindex", "pcre", "patindex", FALSE, FALSE,
SCALE_NONE, 0, INT, 2, STR, STR);
+ sql_create_func(sa, "truncate", "str", "stringleft", FALSE, FALSE,
SCALE_NONE, 0, STR, 2, STR, INT);
+ sql_create_func(sa, "concat", "calc", "+", FALSE, FALSE, DIGITS_ADD, 0,
STR, 2, STR, STR);
+ sql_create_func(sa, "ascii", "str", "ascii", TRUE, FALSE, SCALE_NONE,
0, INT, 1, STR); /* ascii of empty string is null */
+ sql_create_func(sa, "code", "str", "unicode", FALSE, FALSE, SCALE_NONE,
0, STR, 1, INT);
+ sql_create_func(sa, "length", "str", "length", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, STR);
+ sql_create_func(sa, "right", "str", "stringright", FALSE, FALSE,
SCALE_NONE, 0, STR, 2, STR, INT);
+ sql_create_func(sa, "left", "str", "stringleft", FALSE, FALSE,
SCALE_NONE, 0, STR, 2, STR, INT);
+ sql_create_func(sa, "upper", "str", "toUpper", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "ucase", "str", "toUpper", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "lower", "str", "toLower", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "lcase", "str", "toLower", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "btrim", "str", "trim", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "btrim", "str", "trim2", FALSE, FALSE, INOUT, 0,
STR, 2, STR, STR);
+ sql_create_func(sa, "ltrim", "str", "ltrim", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "ltrim", "str", "ltrim2", FALSE, FALSE, INOUT, 0,
STR, 2, STR, STR);
+ sql_create_func(sa, "rtrim", "str", "rtrim", FALSE, FALSE, INOUT, 0,
STR, 1, STR);
+ sql_create_func(sa, "rtrim", "str", "rtrim2", FALSE, FALSE, INOUT, 0,
STR, 2, STR, STR);
- sql_create_func(sa, "lpad", "str", "lpad", FALSE, FALSE,
SCALE_NONE, 0, *t, 2, *t, INT);
- sql_create_func(sa, "lpad", "str", "lpad3", FALSE, FALSE,
SCALE_NONE, 0, *t, 3, *t, INT, *t);
- sql_create_func(sa, "rpad", "str", "rpad", FALSE, FALSE,
SCALE_NONE, 0, *t, 2, *t, INT);
- sql_create_func(sa, "rpad", "str", "rpad3", FALSE, FALSE,
SCALE_NONE, 0, *t, 3, *t, INT, *t);
+ sql_create_func(sa, "lpad", "str", "lpad", FALSE, FALSE, SCALE_NONE, 0,
STR, 2, STR, INT);
+ sql_create_func(sa, "lpad", "str", "lpad3", FALSE, FALSE, SCALE_NONE,
0, STR, 3, STR, INT, STR);
+ sql_create_func(sa, "rpad", "str", "rpad", FALSE, FALSE, SCALE_NONE, 0,
STR, 2, STR, INT);
+ sql_create_func(sa, "rpad", "str", "rpad3", FALSE, FALSE, SCALE_NONE,
0, STR, 3, STR, INT, STR);
- sql_create_func(sa, "insert", "str", "insert", FALSE, FALSE,
SCALE_NONE, 0, *t, 4, *t, INT, INT, *t);
- sql_create_func(sa, "replace", "str", "replace", FALSE, FALSE,
SCALE_NONE, 0, *t, 3, *t, *t, *t);
- sql_create_func(sa, "repeat", "str", "repeat", TRUE, FALSE,
SCALE_NONE, 0, *t, 2, *t, INT); /* repeat -1 times is null */
- sql_create_func(sa, "space", "str", "space", TRUE, FALSE,
SCALE_NONE, 0, *t, 1, INT); /* space -1 times is null */
- sql_create_func(sa, "char_length", "str", "length", FALSE,
FALSE, SCALE_NONE, 0, INT, 1, *t);
- sql_create_func(sa, "character_length", "str", "length", FALSE,
FALSE, SCALE_NONE, 0, INT, 1, *t);
- sql_create_func(sa, "octet_length", "str", "nbytes", FALSE,
FALSE, SCALE_NONE, 0, INT, 1, *t);
- }
+ sql_create_func(sa, "insert", "str", "insert", FALSE, FALSE,
SCALE_NONE, 0, STR, 4, STR, INT, INT, STR);
+ sql_create_func(sa, "replace", "str", "replace", FALSE, FALSE,
SCALE_NONE, 0, STR, 3, STR, STR, STR);
+ sql_create_func(sa, "repeat", "str", "repeat", TRUE, FALSE, SCALE_NONE,
0, STR, 2, STR, INT); /* repeat -1 times is null */
+ sql_create_func(sa, "space", "str", "space", TRUE, FALSE, SCALE_NONE,
0, STR, 1, INT); /* space -1 times is null */
+ sql_create_func(sa, "char_length", "str", "length", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, STR);
+ sql_create_func(sa, "character_length", "str", "length", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, STR);
+ sql_create_func(sa, "octet_length", "str", "nbytes", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, STR);
+
/* copyfrom fname (arg 12) */
f = sql_create_union(sa, "copyfrom", "sql", "copy_from", TRUE,
SCALE_FIX, 0, TABLE, 12, PTR, STR, STR, STR, STR, STR, LNG, LNG, INT, STR, INT,
INT);
f->varres = 1;
diff --git a/sql/scripts/52_describe.sql b/sql/scripts/52_describe.sql
--- a/sql/scripts/52_describe.sql
+++ b/sql/scripts/52_describe.sql
@@ -195,7 +195,7 @@ BEGIN
ELSE 'TIME(' || (digits - 1) || ')'
END || ' WITH TIME ZONE'
WHEN 'tinyint' THEN 'TINYINT'
- WHEN 'varchar' THEN 'CHARACTER VARYING(' || digits || ')'
+ WHEN 'varchar' THEN CASE WHEN digits then 'CHARACTER VARYING(' || digits
|| ')' ELSE 'CHARACTER VARYING' END
ELSE
CASE
WHEN lower(ctype) = ctype THEN upper(ctype)
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -553,7 +553,7 @@ exp_atom_clob(sql_allocator *sa, const c
{
sql_subtype clob;
- sql_find_subtype(&clob, "clob", 0, 0);
+ sql_find_subtype(&clob, "varchar", 0, 0);
return exp_atom(sa, atom_string(sa, &clob, s?sa_strdup(sa, s):NULL));
}
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -1708,7 +1708,7 @@ copyfrom(sql_query *query, dlist *qname,
char *fname = sa_alloc(sql->sa, l+8);
snprintf(fname, l+8, "str_to_%s",
strcmp(cs->type.type->base.name, "timestamptz") == 0 ? "timestamp" :
cs->type.type->base.name);
- sql_find_subtype(&st, "clob", 0, 0);
+ sql_find_subtype(&st, "varchar", 0, 0);
if (!(f = sql_bind_func_result(sql, "sys",
fname, F_FUNC, true, &cs->type, 2, &st, &st)))
return sql_error(sql, 02,
SQLSTATE(42000) "COPY INTO: '%s' missing for type %s", fname,
cs->type.type->base.name);
append(args, e);
diff --git a/sql/server/rel_xml.c b/sql/server/rel_xml.c
--- a/sql/server/rel_xml.c
+++ b/sql/server/rel_xml.c
@@ -54,7 +54,7 @@ rel_xmlelement(sql_query *query, sql_rel
if (type_cmp(st->type, xml_type.type) != 0) {
sql_subtype str_type;
- sql_find_subtype(&str_type, "clob", 0,
0);
+ sql_find_subtype(&str_type, "varchar",
0, 0);
/* convert to string first */
c_st = exp_check_type(sql, &str_type,
rel ? *rel : NULL, c_st, type_equal);
/* then to xml */
@@ -135,7 +135,7 @@ rel_xmlforest(sql_query *query, sql_rel
if (type_cmp(st->type, xml_type.type) != 0) {
sql_subtype str_type;
- sql_find_subtype(&str_type, "clob", 0, 0);
+ sql_find_subtype(&str_type, "varchar", 0, 0);
/* convert to string first */
c_st = exp_check_type(sql, &str_type, rel ?
*rel : NULL, c_st, type_equal);
/* then to xml */
@@ -193,7 +193,7 @@ rel_xmlattribute(sql_query *query, sql_r
}
sql_subtype str_type;
- sql_find_subtype(&str_type, "clob", 0, 0);
+ sql_find_subtype(&str_type, "varchar", 0, 0);
attr_name_st = exp_atom_str(query->sql->sa, attr_name, &str_type);
return rel_binop_(query->sql, rel ? *rel : NULL, attr_name_st, attr_st,
NULL, "attribute", card_value, false);
}
@@ -240,7 +240,7 @@ rel_xmlpi(sql_query *query, sql_rel **re
sql_exp *target_st, *val_st;
sql_subtype str_type;
- sql_find_subtype(&str_type, "clob", 0, 0);
+ sql_find_subtype(&str_type, "varchar", 0, 0);
target_st = exp_atom_str(query->sql->sa, target, &str_type);
if (!val)
val_st = rel_value_exp(query, rel, val, f, knd);
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -4905,7 +4905,7 @@ literal:
string { const char *s = $1;
int len = UTF8_strlen(s);
sql_subtype t;
- sql_find_subtype(&t, "char", len, 0 );
+ sql_find_subtype(&t, "varchar", len, 0 );
$$ = _newAtomNode( _atom_string(&t, s)); }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]