Changeset: 90e96f49a442 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=90e96f49a442
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapiclient/dump.c
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_atoms.c
        gdk/gdk_atoms.h
        gdk/gdk_calc.c
        gdk/gdk_string.c
        geom/monetdb5/geom.c
        geom/monetdb5/geom.h
        monetdb5/mal/mal_atom.c
        monetdb5/mal/mal_parser.c
        monetdb5/modules/atoms/blob.c
        monetdb5/modules/atoms/blob.h
        monetdb5/modules/atoms/color.c
        monetdb5/modules/atoms/color.h
        monetdb5/modules/atoms/identifier.c
        monetdb5/modules/atoms/inet.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/json.h
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/mtime.h
        monetdb5/modules/atoms/url.c
        monetdb5/modules/atoms/url.h
        monetdb5/modules/atoms/uuid.c
        monetdb5/modules/atoms/xml.c
        monetdb5/modules/atoms/xml.h
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/tablet.c
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi/convert_loops.h
        sql/backends/monet5/UDF/pyapi/type_conversion.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_result.c
        sql/server/sql_atom.c
        sql/server/sql_parser.y
        sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.sql
        sql/test/Dump/Tests/dump.stable.out
        sql/test/orderidx/Tests/imprints_all_types.stable.out
        sql/test/orderidx/Tests/oidx_all_types.stable.out
        sql/test/pg_regress/Tests/oid.sql
        sql/test/pg_regress/Tests/oid.stable.err.32bit
        sql/test/pg_regress/Tests/oid.stable.err.int128
        sql/test/pg_regress/Tests/oid.stable.out
        sql/test/pg_regress/Tests/oid.stable.out.32bit
        sql/test/testdb-reload/Tests/reload.stable.out
        sql/test/testdb-upgrade-hge/Tests/dump.stable.out.int128
        sql/test/testdb-upgrade/Tests/dump.stable.out
        sql/test/testdb/Tests/dump.stable.out
        testing/malcheck.py
Branch: default
Log Message:

Implemented a `bool external' argument to the string-to-atom methods.


diffs (truncated from 2469 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -301,7 +301,7 @@ int MT_munmap(void *p, size_t len);
 int MT_path_absolute(const char *path);
 void MT_sleep_ms(unsigned int ms);
 void OIDXdestroy(BAT *b);
-ssize_t OIDfromStr(const char *src, size_t *len, oid **dst);
+ssize_t OIDfromStr(const char *src, size_t *len, oid **dst, bool external);
 ssize_t OIDtoStr(str *dst, size_t *len, const oid *src, bool external);
 BUN ORDERfnd(BAT *b, const void *v);
 BUN ORDERfndfirst(BAT *b, const void *v);
@@ -367,15 +367,15 @@ size_t _MT_npages;
 size_t _MT_pagesize;
 const union _dbl_nil_t _dbl_nil_;
 const union _flt_nil_t _flt_nil_;
-ssize_t batFromStr(const char *src, size_t *len, bat **dst);
+ssize_t batFromStr(const char *src, size_t *len, bat **dst, bool external);
 ssize_t batToStr(str *dst, size_t *len, const bat *src, bool external);
-ssize_t bitFromStr(const char *src, size_t *len, bit **dst);
+ssize_t bitFromStr(const char *src, size_t *len, bit **dst, bool external);
 ssize_t bitToStr(str *dst, size_t *len, const bit *src, bool external);
-ssize_t bteFromStr(const char *src, size_t *len, bte **dst);
+ssize_t bteFromStr(const char *src, size_t *len, bte **dst, bool external);
 ssize_t bteToStr(str *dst, size_t *len, const bte *src, bool external);
 const bte bte_nil;
 int closedir(DIR *dir);
-ssize_t dblFromStr(const char *src, size_t *len, dbl **dst);
+ssize_t dblFromStr(const char *src, size_t *len, dbl **dst, bool external);
 ssize_t dblToStr(str *dst, size_t *len, const dbl *src, bool external);
 const dbl dbl_nil;
 char *dirname(char *path);
@@ -385,7 +385,7 @@ void *dlopen(const char *file, int mode)
 void *dlsym(void *handle, const char *name);
 size_t escapedStr(char *restrict dst, const char *restrict src, size_t dstlen, 
const char *sep1, const char *sep2, int quote);
 size_t escapedStrlen(const char *restrict src, const char *sep1, const char 
*sep2, int quote);
-ssize_t fltFromStr(const char *src, size_t *len, flt **dst);
+ssize_t fltFromStr(const char *src, size_t *len, flt **dst, bool external);
 ssize_t fltToStr(str *dst, size_t *len, const flt *src, bool external);
 const flt flt_nil;
 geomcatalogfix_fptr geomcatalogfix_get(void);
@@ -397,13 +397,13 @@ void geomversion_set(void);
 bat getBBPsize(void);
 char *get_bin_path(void);
 int gettimeofday(struct timeval *tv, int *ignore_zone);
-ssize_t hgeFromStr(const char *src, size_t *len, hge **dst);
+ssize_t hgeFromStr(const char *src, size_t *len, hge **dst, bool external);
 ssize_t hgeToStr(str *dst, size_t *len, const hge *src, bool external);
 const hge hge_nil;
-ssize_t intFromStr(const char *src, size_t *len, int **dst);
+ssize_t intFromStr(const char *src, size_t *len, int **dst, bool external);
 ssize_t intToStr(str *dst, size_t *len, const int *src, bool external);
 const int int_nil;
-ssize_t lngFromStr(const char *src, size_t *len, lng **dst);
+ssize_t lngFromStr(const char *src, size_t *len, lng **dst, bool external);
 ssize_t lngToStr(str *dst, size_t *len, const lng *src, bool external);
 const lng lng_nil;
 gdk_return log_abort(logger *lg);
@@ -453,15 +453,15 @@ void pthread_sema_init(pthread_sema_t *s
 void pthread_sema_init(pthread_sema_t *s, int flag, int nresources);
 void pthread_sema_up(pthread_sema_t *s);
 void pthread_sema_up(pthread_sema_t *s);
-ssize_t ptrFromStr(const char *src, size_t *len, ptr **dst);
+ssize_t ptrFromStr(const char *src, size_t *len, ptr **dst, bool external);
 ssize_t ptrToStr(str *dst, size_t *len, const ptr *src, bool external);
 const ptr ptr_nil;
 struct dirent *readdir(DIR *dir);
 void rewinddir(DIR *dir);
-ssize_t shtFromStr(const char *src, size_t *len, sht **dst);
+ssize_t shtFromStr(const char *src, size_t *len, sht **dst, bool external);
 ssize_t shtToStr(str *dst, size_t *len, const sht *src, bool external);
 const sht sht_nil;
-ssize_t strFromStr(const char *restrict src, size_t *restrict len, str 
*restrict dst);
+ssize_t strFromStr(const char *restrict src, size_t *restrict len, str 
*restrict dst, bool external);
 BUN strHash(const char *s);
 size_t strLen(const char *s);
 int strNil(const char *s);
@@ -839,7 +839,7 @@ int BLOBcmp(const blob *l, const blob *r
 void BLOBdel(Heap *h, var_t *index);
 str BLOBfromblob(str *retval, blob **b);
 str BLOBfromidx(str *retval, blob **binp, int *index);
-ssize_t BLOBfromstr(const char *instr, size_t *l, blob **val);
+ssize_t BLOBfromstr(const char *instr, size_t *l, blob **val, bool external);
 int BLOBget(Heap *h, int *bun, int *l, blob **val);
 BUN BLOBhash(const blob *b);
 void BLOBheap(Heap *heap, size_t capacity);
@@ -1200,7 +1200,7 @@ str GRPsubgroup7(bat *ngid, bat *next, c
 str GRPsubgroup8(bat *ngid, bat *next, const bat *bid, const bat *gid, const 
bat *eid, const bat *hid);
 str GRPsubgroup9(bat *ngid, bat *next, const bat *bid, const bat *sid, const 
bat *gid, const bat *eid, const bat *hid);
 str IDentifier(identifier *retval, str *in);
-ssize_t IDfromString(const char *src, size_t *len, identifier *retval);
+ssize_t IDfromString(const char *src, size_t *len, identifier *retval, bool 
external);
 str IDprelude(void *ret);
 ssize_t IDtoString(str *retval, size_t *len, const char *handle, bool 
external);
 str ILIKEjoin(bat *r1, bat *r2, const bat *lid, const bat *rid, const str 
*esc, const bat *slid, const bat *srid, const bit *nil_matches, const lng 
*estimate);
@@ -1221,7 +1221,7 @@ str INET_isnil(bit *retval, const inet *
 str INETabbrev(str *retval, const inet *val);
 str INETbroadcast(inet *retval, const inet *val);
 int INETcompare(const inet *l, const inet *r);
-ssize_t INETfromString(const char *src, size_t *len, inet **retval);
+ssize_t INETfromString(const char *src, size_t *len, inet **retval, bool 
external);
 str INEThost(str *retval, const inet *val);
 str INEThostmask(inet *retval, const inet *val);
 str INETmasklen(int *retval, const inet *val);
@@ -1284,7 +1284,7 @@ str JSONfilterArray_int(json *ret, json 
 str JSONfilterArray_lng(json *ret, json *j, lng *index);
 str JSONfilterArray_sht(json *ret, json *j, sht *index);
 str JSONfold(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-ssize_t JSONfromString(const char *src, size_t *len, json *x);
+ssize_t JSONfromString(const char *src, size_t *len, json *x, bool external);
 str JSONgroupStr(str *ret, const bat *bid);
 str JSONisarray(bit *ret, json *j);
 str JSONisobject(bit *ret, json *j);
@@ -1779,7 +1779,7 @@ str SERVERsetAlias(void *ret, int *mid, 
 str SERVERstop(void *ret);
 str SERVERsuspend(void *ret);
 str SERVERtrace(void *ret, int *mid, int *flag);
-ssize_t SQLBLOBfromstr(const char *instr, size_t *l, blob **val);
+ssize_t SQLBLOBfromstr(const char *instr, size_t *l, blob **val, bool 
external);
 ssize_t SQLBLOBtostr(str *tostr, size_t *l, const blob *pin, bool external);
 BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char 
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best);
 str STRBytes(int *res, const str *arg1);
@@ -1911,7 +1911,7 @@ int TYPE_sqlblob;
 int TYPE_timestamp;
 int TYPE_tzone;
 int TYPE_xml;
-ssize_t URLfromString(const char *src, size_t *len, str *u);
+ssize_t URLfromString(const char *src, size_t *len, str *u, bool external);
 str URLgetAnchor(str *retval, url *val);
 str URLgetBasename(str *retval, url *t);
 str URLgetContent(str *retval, url *Str1);
@@ -1933,7 +1933,7 @@ str URLnoop(url *u, url *val);
 ssize_t URLtoString(str *s, size_t *len, const char *src, bool external);
 int UUIDcompare(const uuid *l, const uuid *r);
 str UUIDequal(bit *retval, uuid **l, uuid **r);
-ssize_t UUIDfromString(const char *svalue, size_t *len, uuid **retval);
+ssize_t UUIDfromString(const char *svalue, size_t *len, uuid **retval, bool 
external);
 str UUIDgenerateUuid(uuid **retval);
 BUN UUIDhash(const void *u);
 str UUIDisaUUID(bit *retval, str *u);
@@ -1978,7 +1978,7 @@ str XMLdocument(xml *x, str *s);
 str XMLelement(xml *ret, str *name, xml *nspace, xml *attr, xml *val);
 str XMLelementSmall(xml *ret, str *name, xml *val);
 str XMLforest(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-ssize_t XMLfromString(const char *src, size_t *len, xml *x);
+ssize_t XMLfromString(const char *src, size_t *len, xml *x, bool external);
 str XMLisdocument(bit *x, str *s);
 str XMLparse(xml *x, str *doccont, str *s, str *option);
 str XMLpi(xml *x, str *target, str *s);
@@ -2079,7 +2079,7 @@ str closeRef;
 void clrDeclarations(MalBlkPtr mb);
 void clrFunction(InstrPtr p);
 void clrInstruction(InstrPtr p);
-ssize_t color_fromstr(const char *colorStr, size_t *len, color **c);
+ssize_t color_fromstr(const char *colorStr, size_t *len, color **c, bool 
external);
 ssize_t color_tostr(char **colorStr, size_t *len, const color *c, bool 
external);
 str columnBindRef;
 str columnRef;
@@ -2114,11 +2114,11 @@ str create_viewRef;
 str crossRef;
 str dataflowRef;
 str dateRef;
-ssize_t date_fromstr(const char *buf, size_t *len, date **d);
+ssize_t date_fromstr(const char *buf, size_t *len, date **d, bool external);
 ssize_t date_tostr(str *buf, size_t *len, const date *val, bool external);
-ssize_t daytime_fromstr(const char *buf, size_t *len, daytime **ret);
+ssize_t daytime_fromstr(const char *buf, size_t *len, daytime **ret, bool 
external);
 ssize_t daytime_tostr(str *buf, size_t *len, const daytime *val, bool 
external);
-ssize_t daytime_tz_fromstr(const char *buf, size_t *len, daytime **ret);
+ssize_t daytime_tz_fromstr(const char *buf, size_t *len, daytime **ret, bool 
external);
 str dblRef;
 str deblockdataflow(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 void debugFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int 
first, int size);
@@ -2561,7 +2561,7 @@ str rollbackRef;
 str row_numberRef;
 str rpcRef;
 str rsColumnRef;
-ssize_t rule_fromstr(const char *buf, size_t *len, rule **d);
+ssize_t rule_fromstr(const char *buf, size_t *len, rule **d, bool external);
 ssize_t rule_tostr(str *buf, size_t *len, const rule *r, bool external);
 str runMAL(Client c, MalBlkPtr mb, MalBlkPtr mbcaller, MalStkPtr env);
 str runMALDebugger(Client cntxt, MalBlkPtr mb);
@@ -2649,10 +2649,10 @@ str thetajoinRef;
 str thetaselectRef;
 str tidRef;
 str timestampRef;
-ssize_t timestamp_fromstr(const char *buf, size_t *len, timestamp **ret);
+ssize_t timestamp_fromstr(const char *buf, size_t *len, timestamp **ret, bool 
external);
 timestamp *timestamp_nil;
 ssize_t timestamp_tostr(str *buf, size_t *len, const timestamp *val, bool 
external);
-ssize_t timestamp_tz_fromstr(const char *buf, size_t *len, timestamp **ret);
+ssize_t timestamp_tz_fromstr(const char *buf, size_t *len, timestamp **ret, 
bool external);
 ssize_t timestamp_tz_tostr(str *buf, size_t *len, const timestamp *val, const 
tzone *timezone, bool external);
 str transactionRef;
 str transaction_abortRef;
@@ -2663,7 +2663,7 @@ str transaction_rollbackRef;
 void trimMalVariables(MalBlkPtr mb, MalStkPtr stk);
 void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb);
 void typeChecker(Module scope, MalBlkPtr mb, InstrPtr p, int silent);
-ssize_t tzone_fromstr(const char *buf, size_t *len, tzone **d);
+ssize_t tzone_fromstr(const char *buf, size_t *len, tzone **d, bool external);
 tzone tzone_local;
 ssize_t tzone_tostr(str *buf, size_t *len, const tzone *z, bool external);
 str unescape_str(str *retval, str s);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1527,7 +1527,11 @@ dump_table_data(Mapi mid, const char *sc
                             strcmp(tp, "varchar") == 0 ||
                             strcmp(tp, "clob") == 0 ||
                             strcmp(tp, "timestamp") == 0 ||
-                            strcmp(tp, "timestamptz") == 0);
+                            strcmp(tp, "timestamptz") == 0 ||
+                            strcmp(tp, "timestamptz") == 0 ||
+                            strcmp(tp, "json") == 0 ||
+                            strcmp(tp, "url") == 0 ||
+                            strcmp(tp, "xml") == 0);
        }
        while (mapi_fetch_row(hdl)) {
                const char *s;
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -2,9 +2,10 @@
 # This file is updated with Maddlog
 
 * Mon Nov 12 2018 Sjoerd Mullender <[email protected]>
-- Added an extra argument of type `bool' to the atom to string methods
-  to indicate whether the string is for internal use (converting the
-  value to a string to be put into a BAT) of external use (to be printed).
+- Added an extra argument of type `bool' to the atom to string and
+  string to atom methods to indicate whether the string is for
+  internal use (casting the value to or from a string) of external use
+  (to be printed).
 
 * Wed Nov  7 2018 Sjoerd Mullender <[email protected]>
 - Implemented a nilslast option for BATfirstn.  If set, NILs come
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1776,8 +1776,8 @@ typedef struct {
        const void *atomNull;   /* global nil value */
 
        /* generic (fixed + varsized atom) ADT functions */
-       ssize_t (*atomFromStr) (const char *src, size_t *len, void **dst);
-       ssize_t (*atomToStr) (str *dst, size_t *len, const void *src, bool 
external);
+       ssize_t (*atomFromStr) (const char *src, size_t *len, void **dst, bool 
external);
+       ssize_t (*atomToStr) (char **dst, size_t *len, const void *src, bool 
external);
        void *(*atomRead) (void *dst, stream *s, size_t cnt);
        gdk_return (*atomWrite) (const void *src, stream *s, size_t cnt);
        int (*atomCmp) (const void *v1, const void *v2);
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -305,7 +305,7 @@ ATOMheap(int t, Heap *hp, size_t cap)
 int
 ATOMprint(int t, const void *p, stream *s)
 {
-       ssize_t (*tostr) (str *, size_t *, const void *, bool);
+       ssize_t (*tostr) (char **, size_t *, const void *, bool);
        ssize_t res;
 
        if (p && t >= 0 && t < GDKatomcnt && (tostr = BATatoms[t].atomToStr)) {
@@ -339,7 +339,7 @@ ATOMprint(int t, const void *p, stream *
 char *
 ATOMformat(int t, const void *p)
 {
-       ssize_t (*tostr) (str *, size_t *, const void *, bool);
+       ssize_t (*tostr) (char **, size_t *, const void *, bool);
 
        if (p && 0 <= t && t < GDKatomcnt && (tostr = BATatoms[t].atomToStr)) {
                size_t sz = 0;
@@ -440,7 +440,7 @@ voidWrite(const void *a, stream *s, size
  * now also support True/False (and trUe/FAlSE should this become a thing).
  */
 ssize_t
-bitFromStr(const char *src, size_t *len, bit **dst)
+bitFromStr(const char *src, size_t *len, bit **dst, bool external)
 {
        const char *p = src;
 
@@ -465,7 +465,7 @@ bitFromStr(const char *src, size_t *len,
        } else if (strncasecmp(p, "false", 5) == 0) {
                **dst = FALSE;
                p += 5;
-       } else if (strncasecmp(p, "nil",   3) == 0) {
+       } else if (external && strncasecmp(p, "nil",   3) == 0) {
                p += 3;
        } else {
                return -1;
@@ -492,7 +492,7 @@ bitToStr(char **dst, size_t *len, const 
 }
 
 ssize_t
-batFromStr(const char *src, size_t *len, bat **dst)
+batFromStr(const char *src, size_t *len, bat **dst, bool external)
 {
        char *s;
        const char *t, *r = src;
@@ -509,7 +509,7 @@ batFromStr(const char *src, size_t *len,
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to