Changeset: c98387b1a90a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c98387b1a90a
Modified Files:
clients/mapiclient/dump.c
clients/mapiclient/mclient.c
clients/python2/monetdb/sql/monetize.py
clients/python2/test/test_monetize.py
clients/python3/monetdb/sql/monetize.py
clients/python3/test/test_monetize.py
monetdb5/modules/atoms/batxml.c
sql/backends/monet5/sql_scenario.c
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out
Branch: transaction-replication
Log Message:
Merge with default branch
Manual merge with updated upgarde code in sql_scenario
diffs (truncated from 586 to 300 lines):
diff --git a/clients/python2/monetdb/sql/monetize.py
b/clients/python2/monetdb/sql/monetize.py
--- a/clients/python2/monetdb/sql/monetize.py
+++ b/clients/python2/monetdb/sql/monetize.py
@@ -88,7 +88,7 @@ def convert(data):
else:
for type_, func in mapping:
if issubclass(type(data), type_):
- return func
+ return func(data)
#if hasattr(data, '__str__'):
# return monet_escape
raise ProgrammingError("type %s not supported as value" % type(data))
diff --git a/clients/python2/test/test_monetize.py
b/clients/python2/test/test_monetize.py
--- a/clients/python2/test/test_monetize.py
+++ b/clients/python2/test/test_monetize.py
@@ -25,8 +25,9 @@ class TestMonetize(unittest.TestCase):
class StrSubClass(str):
pass
x = StrSubClass('test')
- func = convert(x)
- self.assertEqual(func, monet_escape)
+ csub = convert(x)
+ cstr = convert('test')
+ self.assertEqual(csub, cstr)
def test_unknown_type(self):
class Unknown:
diff --git a/clients/python3/monetdb/sql/monetize.py
b/clients/python3/monetdb/sql/monetize.py
--- a/clients/python3/monetdb/sql/monetize.py
+++ b/clients/python3/monetdb/sql/monetize.py
@@ -84,7 +84,7 @@ def convert(data):
else:
for type_, func in mapping:
if issubclass(type(data), type_):
- return func
+ return func(data)
#if hasattr(data, '__str__'):
# return monet_escape
raise ProgrammingError("type %s not supported as value" % type(data))
diff --git a/clients/python3/test/test_monetize.py
b/clients/python3/test/test_monetize.py
--- a/clients/python3/test/test_monetize.py
+++ b/clients/python3/test/test_monetize.py
@@ -25,8 +25,9 @@ class TestMonetize(unittest.TestCase):
class StrSubClass(str):
pass
x = StrSubClass('test')
- func = convert(x)
- self.assertEqual(func, monet_escape)
+ csub = convert(x)
+ cstr = convert('test')
+ self.assertEqual(csub, cstr)
def test_unknown_type(self):
class Unknown:
diff --git a/monetdb5/modules/atoms/batxml.c b/monetdb5/modules/atoms/batxml.c
--- a/monetdb5/modules/atoms/batxml.c
+++ b/monetdb5/modules/atoms/batxml.c
@@ -77,11 +77,12 @@ batxml_export str AGGRsubxmlcand(bat *re
batxml_export str AGGRsubxml(bat *retval, bat *bid, bat *gid, bat *eid, bit
*skip_nils);
-#define prepareResult(X,Y,tpe,Z) \
+#define prepareResult(X,Y,tpe,Z, Freeup)
\
assert((Y)->htype == TYPE_void); \
(X) = BATnew(TYPE_void, (tpe), BATcount(Y)); \
if ((X) == NULL) {
\
BBPreleaseref((Y)->batCacheid); \
+ Freeup; \
throw(MAL, "xml." Z, MAL_MALLOC_FAIL); \
}
\
BATseqbase((X), (Y)->hseqbase); \
@@ -108,7 +109,7 @@ BATXMLxml2str(bat *ret, const bat *bid)
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "xml.str", INTERNAL_BAT_ACCESS);
- prepareResult(bn, b, TYPE_str, "str");
+ prepareResult(bn, b, TYPE_str, "str",);
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -145,7 +146,7 @@ BATXMLxmltext(bat *ret, const bat *bid)
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "xml.text", INTERNAL_BAT_ACCESS);
- prepareResult(bn, b, TYPE_str, "text");
+ prepareResult(bn, b, TYPE_str, "text",);
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -255,7 +256,7 @@ BATXMLstr2xml(bat *ret, const bat *bid)
GDKfree(buf);
throw(MAL, "xml.xml", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "xml");
+ prepareResult(bn, b, TYPE_xml, "xml",GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -309,7 +310,7 @@ BATXMLdocument(bat *ret, const bat *bid)
GDKfree(buf);
throw(MAL, "xml.document", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "document");
+ prepareResult(bn, b, TYPE_xml, "document", GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -375,7 +376,7 @@ BATXMLcontent(bat *ret, const bat *bid)
}
doc = xmlParseMemory("<doc/>", 6);
root = xmlDocGetRootElement(doc);
- prepareResult(bn, b, TYPE_xml, "content");
+ prepareResult(bn, b, TYPE_xml, "content", GDKfree(buf));
bi = bat_iterator(b);
xbuf = xmlBufferCreate();
BATloop(b, p, q) {
@@ -439,7 +440,7 @@ BATXMLisdocument(bat *ret, const bat *bi
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "xml.isdocument", INTERNAL_BAT_ACCESS);
- prepareResult(bn, b, TYPE_bit, "isdocument");
+ prepareResult(bn, b, TYPE_bit, "isdocument",);
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -504,7 +505,7 @@ BATXMLoptions(bat *ret, const char * con
GDKfree(buf);
throw(MAL, "xml.options", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "options");
+ prepareResult(bn, b, TYPE_xml, "options", GDKfree(buf);GDKfree(val));
if (strcmp(*options, "absent") == 0)
buf[0] = 0;
@@ -571,7 +572,7 @@ BATXMLcomment(bat *ret, const bat *bid)
GDKfree(buf);
throw(MAL, "xml.comment", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "comment");
+ prepareResult(bn, b, TYPE_xml, "comment", GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -646,7 +647,7 @@ BATXMLpi(bat *ret, const char * const *t
GDKfree(buf);
throw(MAL, "xml.pi", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "pi");
+ prepareResult(bn, b, TYPE_xml, "pi", GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -716,7 +717,7 @@ BATXMLroot(bat *ret, const bat *bid, con
GDKfree(buf);
throw(MAL, "xml.pi", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "pi");
+ prepareResult(bn, b, TYPE_xml, "pi", GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -793,7 +794,7 @@ BATXMLattribute(bat *ret, const char * c
GDKfree(buf);
throw(MAL, "xml.attribute", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "attribute");
+ prepareResult(bn, b, TYPE_xml, "attribute", GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -871,7 +872,7 @@ BATXMLelement(bat *ret, const char * con
GDKfree(buf);
throw(MAL, "xml.element", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, b, TYPE_xml, "element");
+ prepareResult(bn, b, TYPE_xml, "element", GDKfree(buf));
bi = bat_iterator(b);
BATloop(b, p, q) {
const void *h = (const void *) BUNhead(bi, p);
@@ -979,7 +980,7 @@ BATXMLforest(Client cntxt, MalBlkPtr mb,
throw(MAL, "xml.forest", INTERNAL_BAT_ACCESS);
}
- prepareResult(bn, bi[pci->retc].b, TYPE_xml, "forest");
+ prepareResult(bn, bi[pci->retc].b, TYPE_xml, "forest",
GDKfree(bi);GDKfree(p);GDKfree(q);GDKfree(buf));
while (p[pci->retc] < q[pci->retc]) {
const char *t;
@@ -1072,7 +1073,7 @@ BATXMLconcat(bat *ret, const bat *bid, c
q = BUNlast(b);
rp = BUNfirst(r);
- prepareResult(bn, b, TYPE_xml, "concat");
+ prepareResult(bn, b, TYPE_xml, "concat", GDKfree(buf));
bi = bat_iterator(b);
ri = bat_iterator(r);
diff --git a/sql/backends/monet5/sql_scenario.c
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -166,7 +166,6 @@ SQLprelude(void)
ms->engine = "MALengine";
/* init the SQL store */
-
tmp = SQLinit(readonly);
if (tmp != MAL_SUCCEED) {
return (tmp);
@@ -644,7 +643,7 @@ sql_update_jan2014(Client c)
if (schvar)
schema = strdup(schvar->val.sval);
-
+
pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
/* remove table return types (#..), ie tt_generated from
_tables/_columns */
@@ -884,8 +883,6 @@ sql_update_default(Client c)
mvc *sql = ((backend*) c->sqlcontext)->mvc;
ValRecord *schvar = stack_get_var(sql, "current_schema");
char *schema = NULL;
- char *fullname;
- FILE *fp;
sql_table *t;
sql_schema *s;
@@ -898,19 +895,91 @@ sql_update_default(Client c)
pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
+ /* remove table return types (#..), ie tt_generated from
+ * _tables/_columns */
+ pos += snprintf(buf + pos, bufsize - pos, "delete from _columns where
table_id in (select id from _tables where name like '#%%');\n");
+ pos += snprintf(buf + pos, bufsize - pos, "delete from _tables where
name like '#%%';\n");
+
/* change in 25_debug.sql */
pos += snprintf(buf + pos, bufsize - pos, "drop function sys.bbp;\n");
pos += snprintf(buf + pos, bufsize - pos, "create function sys.bbp()
returns table (id int, name string, htype string, ttype string, count BIGINT,
refcnt int, lrefcnt int, location string, heat int, dirty string, status
string, kind string) external name bbp.get;\n");
/* new file 40_json.sql */
- snprintf(buf + pos, bufsize - pos, "createdb%c40_json", DIR_SEP);
- if ((fullname = MSP_locate_sqlscript(buf + pos, 1)) != NULL) {
- if ((fp = fopen(fullname, "r")) != NULL) {
- pos += fread(buf + pos, 1, bufsize - pos, fp);
- fclose(fp);
- }
- GDKfree(fullname);
- }
+ pos += snprintf(buf + pos, bufsize - pos, "\
+create schema json;\n\
+\n\
+create type json external name json;\n\
+\n\
+create function json.filter(js json, pathexpr string)\n\
+returns json external name json.filter;\n\
+\n\
+create function json.filter(js json, name tinyint)\n\
+returns json external name json.filter;\n\
+\n\
+create function json.filter(js json, name integer)\n\
+returns json external name json.filter;\n\
+\n\
+create function json.filter(js json, name bigint)\n\
+returns json external name json.filter;\n\
+\n\
+create function json.text(js json, e string)\n\
+returns string external name json.text;\n\
+\n\
+create function json.number(js json)\n\
+returns float external name json.number;\n\
+\n\
+create function json.\"integer\"(js json)\n\
+returns bigint external name json.\"integer\";\n\
+\n\
+create function json.isvalid(js string)\n\
+returns bool external name json.isvalid;\n\
+\n\
+create function json.isobject(js string)\n\
+returns bool external name json.isobject;\n\
+\n\
+create function json.isarray(js string)\n\
+returns bool external name json.isarray;\n\
+\n\
+create function json.isvalid(js json)\n\
+returns bool external name json.isvalid;\n\
+\n\
+create function json.isobject(js json)\n\
+returns bool external name json.isobject;\n\
+\n\
+create function json.isarray(js json)\n\
+returns bool external name json.isarray;\n\
+\n\
+create function json.length(js json)\n\
+returns integer external name json.length;\n\
+\n\
+create function json.keyarray(js json)\n\
+returns json external name json.keyarray;\n\
+\n\
+create function json.valuearray(js json)\n\
+returns json external name json.valuearray;\n\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list