Changeset: a22703fbcb16 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a22703fbcb16
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/rel_tvtree.c
sql/backends/monet5/sql_statement.c
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_select.c
sql/server/rel_updates.c
sql/storage/bat/bat_storage.c
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
Branch: nested
Log Message:
initial steps for unnest(ARRAY[1,2]))
diffs (truncated from 305 to 300 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -834,6 +834,7 @@ tuple_result(backend *be, list *cols)
return stmt_list(be, row);
}
+// TODO: >>>>>>>>>>>>>>>>>>>> remove value_list and friends
static stmt *
value_list(backend *be, sql_exp *vals_exp, stmt *left, stmt *sel)
{
@@ -1798,13 +1799,11 @@ nested_stmts(backend *be, sql_exp *e, no
stmt *s = nested_stmts(be, e, &m);
s = stmt_alias(be, s, e->alias.label,
exp_relname(e), exp_name(e));
s->subtype = *exp_subtype(e);
- //s->label = e->alias.label;
s->nested = true;
append(r, s);
} else {
stmt *s = m->data;
s = stmt_alias(be, s, e->alias.label,
exp_relname(e), exp_name(e));
- //s->label = e->alias.label;
m = m->next;
append(r, s);
}
@@ -1812,6 +1811,7 @@ nested_stmts(backend *be, sql_exp *e, no
}
*M = m;
stmt *s = stmt_list(be, r);
+ s->nrcols = 3;
s->nested = true;
s->subtype = *exp_subtype(e);
s->multiset = s->subtype.multiset;
@@ -1932,8 +1932,6 @@ exp_bin(backend *be, sql_exp *e, stmt *l
assert(vname->name);
s = stmt_var(be, vname->sname ? a_create(sql->sa,
sa_strdup(sql->sa, vname->sname)) : NULL, sa_strdup(sql->sa, vname->name),
e->tpe.type?&e->tpe:NULL, 0, e->flag);
} else if (e->f) { /* values */
- // TODO: >>>>>>>>>>>>>>>>>>>> remove value_list and
friends
- value_list(NULL, e, left, sel);
s = value_tvtree(be, e, left, sel);
} else { /* arguments */
sql_subtype *t = e->tpe.type?&e->tpe:NULL;
diff --git a/sql/backends/monet5/rel_tvtree.c b/sql/backends/monet5/rel_tvtree.c
--- a/sql/backends/monet5/rel_tvtree.c
+++ b/sql/backends/monet5/rel_tvtree.c
@@ -239,6 +239,7 @@ static bool
tv_parse_values_(backend *be, tv_tree *t, sql_exp *value, stmt *left, stmt
*sel)
{
stmt *i;
+ sql_exp* uc;
switch (t->tvt) {
case TV_BASIC:
@@ -250,12 +251,14 @@ tv_parse_values_(backend *be, tv_tree *t
break;
case TV_MSET:
case TV_SETOF:
- if (is_convert(value->type))
+ assert(is_convert(value->type));
+ uc = value->l;
+ if (!uc->f)
/* VALUES ('{1, 2, 3}') */
return mset_value_from_literal(be, t, value, left, sel);
else
/* VALUES (array[1, 2, 3]) */
- return mset_value_from_array_constructor(be, t, value, left,
sel);
+ return mset_value_from_array_constructor(be, t, uc, left, sel);
break;
case TV_COMP:
if (is_convert(value->type))
@@ -367,7 +370,7 @@ tv_generate_stmts(backend *be, tv_tree *
/* we've appended in the stmt_list so update nrcols */
stmt_set_nrcols(s);
-
+ s->subtype = *t->st;
return s;
case TV_COMP:
sl = sa_list(be->mvc->sa);
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
@@ -4262,6 +4262,8 @@ stmt_convert(backend *be, stmt *v, stmt
return stmt_to_json(be, v, sel, f, t);
if (EC_VARCHAR(f->type->eclass) && (t->type->composite || t->multiset))
return stmt_from_varchar(be, v, sel, t);
+ if (f->type == t->type && t->multiset && v->subtype.multiset)
+ return v;
if (f->type->eclass != EC_EXTERNAL && t->type->eclass != EC_EXTERNAL &&
/* general cases */
((t->type->localtype == f->type->localtype && t->type->eclass
== f->type->eclass &&
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
@@ -1059,6 +1059,25 @@ noninternexp_setname(mvc *sql, sql_exp *
}
void
+noninternexp_settname(mvc *sql, sql_exp *e, sql_alias *rname)
+{
+ char *name = NULL;
+
+ if (!e->alias.label && e->type == e_psm && e->l) {
+ sql_rel *r = e->l;
+ if (is_project(r->op)) {
+ sql_exp *ie = r->exps->t->data;
+ e->alias = ie->alias;
+ e->alias.parent = rname;
+ return;
+ }
+ }
+ if (!exp_name(e))
+ name = make_label(sql->sa, ++sql->label);
+ noninternexp_setname(sql, e, rname, name);
+}
+
+void
exp_setalias(sql_exp *e, int label, sql_alias *p, const char *name )
{
e->alias.label = label;
@@ -3842,7 +3861,22 @@ exp_check_multiset_type(mvc *sql, sql_su
v->data = r;
}
exp->tpe = *t;
- return exp;
+ /* keep a list of column names with the conversion, for later name
resolving */
+ return exp_convert(sql, exp, &ct, t);
+}
+
+sql_exp *
+exp_check_multiset(mvc *sql, sql_exp *e)
+{
+ if (is_values(e)) { /* check for single tuple type */
+ sql_subtype t = *exp_subtype(e);
+ t.multiset = MS_ARRAY;
+ return exp_check_multiset_type(sql, &t, NULL, e, type_equal);
+ }
+ sql_subtype *st = exp_subtype(e);
+ if (st->multiset)
+ return e;
+ return NULL;
}
sql_exp *
diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h
--- a/sql/server/rel_exp.h
+++ b/sql/server/rel_exp.h
@@ -119,6 +119,7 @@ extern void exp_setalias(sql_exp *e, int
extern void exp_prop_alias(allocator *sa, sql_exp *e, sql_exp *oe);
extern void noninternexp_setname(mvc *sql, sql_exp *e, sql_alias *p, const
char *name );
+extern void noninternexp_settname(mvc *sql, sql_exp *e, sql_alias *p);
extern char* make_label(allocator *sa, int nr);
extern sql_exp* exp_label(allocator *sa, sql_exp *e, int nr);
extern list* exps_label(mvc *sql, list *exps);
@@ -240,5 +241,6 @@ extern int rel_set_type_param(mvc *sql,
extern sql_exp *exp_convert_inplace(mvc *sql, sql_subtype *t, sql_exp *exp);
extern sql_exp *exp_numeric_supertype(mvc *sql, sql_exp *e);
extern sql_exp *exp_values_set_supertype(mvc *sql, sql_exp *values,
sql_subtype *opt_super);
+extern sql_exp *exp_check_multiset(mvc *sql, sql_exp *exp); /* cast to any
multiset */
#endif /* _REL_EXP_H_ */
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -215,12 +215,9 @@ rel_table_optname(mvc *sql, sql_rel *sq,
list_hash_clear(sq->exps);
for (; ne; ne = ne->next) {
sql_exp *e = ne->data;
- char *name = NULL;
if (!is_intern(e)) {
- if (!exp_name(e))
- name = make_label(sql->sa,
++sql->label);
- noninternexp_setname(sql, e, ta, name);
+ noninternexp_settname(sql, e, ta);
set_basecol(e);
}
}
@@ -759,8 +756,14 @@ rel_unnest_func(sql_query *query, list *
return sql_error(query->sql, ERR_NOTFOUND, SQLSTATE(42000)
"SELECT: unnest multiset missing");
for( node *n = exps->h; n; n = n->next) {
sql_exp *e = n->data;
- if (!e->freevar || e->type != e_column)
- return sql_error(query->sql, ERR_NOTFOUND,
SQLSTATE(42000) "SELECT: unnest multiset not found");
+ if (!e->freevar || e->type != e_column) {
+ if ((e = exp_check_multiset(query->sql, e)) == NULL)
+ return sql_error(query->sql, ERR_NOTFOUND,
SQLSTATE(42000) "SELECT: unnest multiset not found");
+ sql_rel *rp = rel_project(query->sql->sa, NULL,
append(sa_list(query->sql->sa), e));
+ rp->card = CARD_MULTI;
+ sql_exp *el = exps_bind_column(e->f, "elements", NULL,
NULL, 1);
+ return rel_project(query->sql->sa, rp,
append(sa_list(query->sql->sa), exp_ref(query->sql, el)));
+ }
sql_rel *r = query_fetch_outer(query, e->freevar-1);
if (r && !is_basetable(r->op)) {
sql_rel *rr = NULL;
@@ -1041,7 +1044,7 @@ rel_named_table_function(sql_query *quer
rel = rel_file_loader(sql, exps, tl, tname);
if (!rel)
return NULL;
- } else if (!sname && strcmp(fname, "unnest") == 0) {
+ } else if (unnest) {
tname = NULL;
if (ast->data.lval->t->type == type_symbol &&
ast->data.lval->t->data.sym)
tname =
ast->data.lval->t->data.sym->data.lval->h->data.sval;
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
@@ -430,7 +430,7 @@ rel_inserts(mvc *sql, sql_table *t, sql_
}
if (!e)
return sql_error(sql, 02,
SQLSTATE(42000) "%s: column '%s' has no valid default value", action,
c->base.name);
- if (!exps && j+1 < rowcount) {
+ if (!exps) {
exps = exp_values(sql->sa,
sa_list(sql->sa));
exps->tpe = c->type;
exp_label(sql->sa, exps, ++sql->label);
@@ -438,7 +438,6 @@ rel_inserts(mvc *sql, sql_table *t, sql_
if (exps) {
list *vals_list = exps->f;
- assert(rowcount > 1);
list_append(vals_list, e);
}
if (!exps)
@@ -609,7 +608,7 @@ insert_generate_inserts(sql_query *query
dnode *n;
node *v, *m;
- if (o->next && list_empty(exps)) {
+ if (list_empty(exps)) { /* allways create an
atom list, also for single atoms */
for (n = values->h, m = collist->h; n
&& m; n = n->next, m = m->next) {
sql_exp *vals =
exp_values(sql->sa, sa_list(sql->sa));
sql_column *c = m->data;
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -566,7 +566,10 @@ delta_dup(sql_delta *d)
static void *
col_dup(sql_column *c)
{
+ if (!ATOMIC_PTR_GET(&c->data))
+ return NULL;
return delta_dup(ATOMIC_PTR_GET(&c->data));
+
}
static void *
diff --git a/sql/test/emptydb/Tests/check.stable.out
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -2272,6 +2272,7 @@ select 'null in fkeys.delete_action', de
[ "sys.functions", "sys", "rand", "SYSTEM", "rand", "mmath",
"Internal C", "Scalar function", true, false, false, true, NULL,
"res_0", "int", 31, 0, "out", NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL ]
[ "sys.functions", "sys", "rand", "SYSTEM", "sqlrand",
"mmath", "Internal C", "Scalar function", false, false, false,
true, NULL, "res_0", "int", 31, 0, "out", "arg_1",
"int", 31, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "rank", "SYSTEM", "rank", "sql",
"Internal C", "Analytic function", false, false, false, true, NULL,
"res_0", "int", 31, 0, "out", "arg_1", "any", 0,
0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL ]
+[ "sys.functions", "sys", "read_nd_json", "SYSTEM", "create
function sys.read_nd_json(fname string) returns table(json json) external name
json.read_nd_json;", "json", "MAL", "Function returning a table", false,
false, false, true, NULL, "json", "json", 0, 0, "out",
"fname", "varchar", 0, 0, "in", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "regexp_replace", "SYSTEM", "create
function sys.regexp_replace(ori string, pat string, rep string) returns string
begin return sys.regexp_replace(ori, pat, rep, ''); end;", "sql", "SQL",
"Scalar function", false, false, false, true, NULL, "result",
"varchar", 0, 0, "out", "ori", "varchar", 0, 0,
"in", "pat", "varchar", 0, 0, "in", "rep", "varchar",
0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL ]
[ "sys.functions", "sys", "regexp_replace", "SYSTEM", "create
function sys.regexp_replace(ori string, pat string, rep string, flg string)
returns string external name pcre.replace;", "pcre", "MAL", "Scalar
function", false, false, false, true, NULL, "result",
"varchar", 0, 0, "out", "ori", "varchar", 0, 0,
"in", "pat", "varchar", 0, 0, "in", "rep", "varchar",
0, 0, "in", "flg", "varchar", 0, 0, "in", NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "rejects", "SYSTEM", "create
function sys.rejects() returns table(rowid bigint, fldid int, \"message\"
string, \"input\" string) external name sql.copy_rejects;", "sql", "MAL",
"Function returning a table", false, false, false, true, NULL,
"rowid", "bigint", 63, 0, "out", "fldid", "int",
31, 0, "out", "message", "varchar", 0, 0, "out",
"input", "varchar", 0, 0, "out", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL ]
@@ -4474,6 +4475,7 @@ select 'null in fkeys.delete_action', de
[ "type used by function", "inet", "inet", "sys", "network", "TYPE"
]
[ "type used by function", "url", "url", "sys", "newurl", "TYPE"
]
[ "type used by function", "url", "url", "sys", "newurl", "TYPE"
]
+[ "type used by function", "json", "json", "sys", "read_nd_json", "TYPE"
]
[ "type used by function", "inet", "inet", "sys", "right_shift", "TYPE"
]
[ "type used by function", "inet", "inet", "sys", "right_shift_assign",
"TYPE" ]
[ "type used by function", "inet", "inet", "sys", "setmasklen", "TYPE"
]
diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -2268,6 +2268,7 @@ select 'null in fkeys.delete_action', de
[ "sys.functions", "sys", "rand", "SYSTEM", "rand", "mmath",
"Internal C", "Scalar function", true, false, false, true, NULL,
"res_0", "int", 31, 0, "out", NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL ]
[ "sys.functions", "sys", "rand", "SYSTEM", "sqlrand",
"mmath", "Internal C", "Scalar function", false, false, false,
true, NULL, "res_0", "int", 31, 0, "out", "arg_1",
"int", 31, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "rank", "SYSTEM", "rank", "sql",
"Internal C", "Analytic function", false, false, false, true, NULL,
"res_0", "int", 31, 0, "out", "arg_1", "any", 0,
0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL ]
+[ "sys.functions", "sys", "read_nd_json", "SYSTEM", "create
function sys.read_nd_json(fname string) returns table(json json) external name
json.read_nd_json;", "json", "MAL", "Function returning a table", false,
false, false, true, NULL, "json", "json", 0, 0, "out",
"fname", "varchar", 0, 0, "in", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "regexp_replace", "SYSTEM", "create
function sys.regexp_replace(ori string, pat string, rep string) returns string
begin return sys.regexp_replace(ori, pat, rep, ''); end;", "sql", "SQL",
"Scalar function", false, false, false, true, NULL, "result",
"varchar", 0, 0, "out", "ori", "varchar", 0, 0,
"in", "pat", "varchar", 0, 0, "in", "rep", "varchar",
0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL ]
[ "sys.functions", "sys", "regexp_replace", "SYSTEM", "create
function sys.regexp_replace(ori string, pat string, rep string, flg string)
returns string external name pcre.replace;", "pcre", "MAL", "Scalar
function", false, false, false, true, NULL, "result",
"varchar", 0, 0, "out", "ori", "varchar", 0, 0,
"in", "pat", "varchar", 0, 0, "in", "rep", "varchar",
0, 0, "in", "flg", "varchar", 0, 0, "in", NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "rejects", "SYSTEM", "create
function sys.rejects() returns table(rowid bigint, fldid int, \"message\"
string, \"input\" string) external name sql.copy_rejects;", "sql", "MAL",
"Function returning a table", false, false, false, true, NULL,
"rowid", "bigint", 63, 0, "out", "fldid", "int",
31, 0, "out", "message", "varchar", 0, 0, "out",
"input", "varchar", 0, 0, "out", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL ]
@@ -4467,6 +4468,7 @@ select 'null in fkeys.delete_action', de
[ "type used by function", "inet", "inet", "sys", "network", "TYPE"
]
[ "type used by function", "url", "url", "sys", "newurl", "TYPE"
]
[ "type used by function", "url", "url", "sys", "newurl", "TYPE"
]
+[ "type used by function", "json", "json", "sys", "read_nd_json", "TYPE"
]
[ "type used by function", "inet", "inet", "sys", "right_shift", "TYPE"
]
[ "type used by function", "inet", "inet", "sys", "right_shift_assign",
"TYPE" ]
[ "type used by function", "inet", "inet", "sys", "setmasklen", "TYPE"
]
diff --git a/sql/test/emptydb/Tests/check.stable.out.int128
b/sql/test/emptydb/Tests/check.stable.out.int128
--- a/sql/test/emptydb/Tests/check.stable.out.int128
+++ b/sql/test/emptydb/Tests/check.stable.out.int128
@@ -2309,6 +2309,7 @@ select 'null in fkeys.delete_action', de
[ "sys.functions", "sys", "rand", "SYSTEM", "rand", "mmath",
"Internal C", "Scalar function", true, false, false, true, NULL,
"res_0", "int", 31, 0, "out", NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL ]
[ "sys.functions", "sys", "rand", "SYSTEM", "sqlrand",
"mmath", "Internal C", "Scalar function", false, false, false,
true, NULL, "res_0", "int", 31, 0, "out", "arg_1",
"int", 31, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "rank", "SYSTEM", "rank", "sql",
"Internal C", "Analytic function", false, false, false, true, NULL,
"res_0", "int", 31, 0, "out", "arg_1", "any", 0,
0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL ]
+[ "sys.functions", "sys", "read_nd_json", "SYSTEM", "create
function sys.read_nd_json(fname string) returns table(json json) external name
json.read_nd_json;", "json", "MAL", "Function returning a table", false,
false, false, true, NULL, "json", "json", 0, 0, "out",
"fname", "varchar", 0, 0, "in", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "regexp_replace", "SYSTEM", "create
function sys.regexp_replace(ori string, pat string, rep string) returns string
begin return sys.regexp_replace(ori, pat, rep, ''); end;", "sql", "SQL",
"Scalar function", false, false, false, true, NULL, "result",
"varchar", 0, 0, "out", "ori", "varchar", 0, 0,
"in", "pat", "varchar", 0, 0, "in", "rep", "varchar",
0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL ]
[ "sys.functions", "sys", "regexp_replace", "SYSTEM", "create
function sys.regexp_replace(ori string, pat string, rep string, flg string)
returns string external name pcre.replace;", "pcre", "MAL", "Scalar
function", false, false, false, true, NULL, "result",
"varchar", 0, 0, "out", "ori", "varchar", 0, 0,
"in", "pat", "varchar", 0, 0, "in", "rep", "varchar",
0, 0, "in", "flg", "varchar", 0, 0, "in", NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL ]
[ "sys.functions", "sys", "rejects", "SYSTEM", "create
function sys.rejects() returns table(rowid bigint, fldid int, \"message\"
string, \"input\" string) external name sql.copy_rejects;", "sql", "MAL",
"Function returning a table", false, false, false, true, NULL,
"rowid", "bigint", 63, 0, "out", "fldid", "int",
31, 0, "out", "message", "varchar", 0, 0, "out",
"input", "varchar", 0, 0, "out", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL ]
@@ -4590,6 +4591,7 @@ select 'null in fkeys.delete_action', de
[ "type used by function", "inet", "inet", "sys", "network", "TYPE"
]
[ "type used by function", "url", "url", "sys", "newurl", "TYPE"
]
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]