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