diff --git a/source/common/src/tvariant.c b/source/common/src/tvariant.c index db5448447b..9348d5707c 100644 --- a/source/common/src/tvariant.c +++ b/source/common/src/tvariant.c @@ -216,9 +216,6 @@ int32_t toUIntegerEx(const char *z, int32_t n, uint32_t type, uint64_t *value) { errno = 0; char *endPtr = NULL; const char *p = z; - while (*p == ' ') { - p++; - } switch (type) { case TK_NK_INTEGER: { *value = taosStr2UInt64(p, &endPtr, 10); @@ -246,24 +243,22 @@ int32_t toUIntegerEx(const char *z, int32_t n, uint32_t type, uint64_t *value) { } if (n == 0) { - *value = 0; - return TSDB_CODE_SUCCESS; + errno = EINVAL; + return TSDB_CODE_FAILED; } // 1. parse as integer *value = taosStr2UInt64(p, &endPtr, 10); - if (*p == '-' && *value) { - return TSDB_CODE_FAILED; - } + if (endPtr - z == n) { - if (errno == ERANGE || errno == EINVAL) { + if (errno == ERANGE || errno == EINVAL || (*p == '-' && *value)) { return TSDB_CODE_FAILED; } return TSDB_CODE_SUCCESS; } else if (errno == 0 && *endPtr == '.') { const char *s = endPtr + 1; const char *end = z + n; - bool pure = true; + bool pure = true; while (s < end) { if (*s < '0' || *s > '9') { pure = false; @@ -275,11 +270,14 @@ int32_t toUIntegerEx(const char *z, int32_t n, uint32_t type, uint64_t *value) { if (endPtr + 1 < end && endPtr[1] > '4' && *value < UINT64_MAX) { (*value)++; } + if (*p == '-' && *value) { + return TSDB_CODE_FAILED; + } return TSDB_CODE_SUCCESS; } } - // 2. parse as other + // 2. parse as other bool is_neg = false; int32_t code = parseSignAndUInteger(z, n, &is_neg, value); if (is_neg) { diff --git a/source/libs/parser/src/parUtil.c b/source/libs/parser/src/parUtil.c index 76d8022578..9c8f6d3c98 100644 --- a/source/libs/parser/src/parUtil.c +++ b/source/libs/parser/src/parUtil.c @@ -355,7 +355,7 @@ int32_t parseJsontoTagData(const char* json, SArray* pTagVals, STag** ppTag, voi SHashObj* keyHash = NULL; int32_t size = 0; // set json NULL data - if (!json || strtrim((char*)json) == 0 || strcasecmp(json, TSDB_DATA_NULL_STR_L) == 0) { + if (!json || strcasecmp(json, TSDB_DATA_NULL_STR_L) == 0 || strtrim((char*)json) == 0) { retCode = TSDB_CODE_SUCCESS; goto end; } diff --git a/tests/system-test/1-insert/insert_column_value.py b/tests/system-test/1-insert/insert_column_value.py index 77e965fe40..2ccfc955a2 100644 --- a/tests/system-test/1-insert/insert_column_value.py +++ b/tests/system-test/1-insert/insert_column_value.py @@ -17,12 +17,13 @@ class TDTestCase: tdSql.execute(f'create database if not exists db vgroups 1') def __create_tb(self, dbname="db"): - CREATE_STB_LIST = [ f"create table {dbname}.stb_vc (ts timestamp, c0 binary(50), c1 binary(50)) tags(t0 binary(50), t1 binary(50));", + CREATE_STB_LIST = [ f"create table {dbname}.stb_vc (ts timestamp, c0 binary(50), c1 varchar(50)) tags(t0 varchar(50), t1 binary(50));", f"create table {dbname}.stb_nc (ts timestamp, c0 nchar(50), c1 nchar(50)) tags(t0 nchar(50), t1 nchar(50));", f"create table {dbname}.stb_ts (ts timestamp, c0 timestamp, c1 timestamp) tags(t0 timestamp, t1 timestamp);", f"create table {dbname}.stb_bo (ts timestamp, c0 bool, c1 bool) tags(t0 bool, t1 bool);", f"create table {dbname}.stb_vb (ts timestamp, c0 varbinary(50), c1 varbinary(50)) tags(t0 varbinary(50), t1 varbinary(50));", - f"create table {dbname}.stb_in (ts timestamp, c0 int, c1 int) tags(t0 int, t1 int);", + f"create table {dbname}.stb_in (ts timestamp, c0 int, c1 smallint) tags(t0 bigint, t1 tinyint);", + f"create table {dbname}.stb_ui (ts timestamp, c0 int unsigned, c1 smallint unsigned) tags(t0 bigint unsigned, t1 tinyint unsigned);", f"create table {dbname}.stb_fl (ts timestamp, c0 float, c1 float) tags(t0 float, t1 float);", f"create table {dbname}.stb_db (ts timestamp, c0 float, c1 float) tags(t0 float, t1 float);", f"create table {dbname}.stb_ge (ts timestamp, c0 geometry(512), c1 geometry(512)) tags(t0 geometry(512), t1 geometry(512));", @@ -34,11 +35,11 @@ class TDTestCase: def __insert_query_common(self, dbname="db", stbname="", ctbname="", oklist=[], kolist=[], okv=None): tdLog.info(f'{dbname}.{stbname} {ctbname}, oklist:%d, kolist:%d'%(len(oklist), len(kolist))) - tdSql.checkEqual(27, len(oklist) + len(kolist)) + tdSql.checkEqual(34, len(oklist) + len(kolist)) - isVarbinary = False - if stbname == 'stb_vb': - isVarbinary = True + checkQuery = True + if stbname == 'stb_ge': + checkQuery = False # geometry query by py connector need to be supported for _l in kolist: for _e in _l: @@ -50,9 +51,8 @@ class TDTestCase: tdSql.error(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}, {okv}) values(now, %s, {okv})' %(_e)) tdSql.error(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}, {okv}) values(now, {okv}, %s)' %(_e)) tdSql.error(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}, {okv}) values(now, %s, %s)' %(_e, _e)) - tdLog.info(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}, {okv}) values(now, {okv}, {okv})') tdSql.execute(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}, {okv}) values(now, {okv}, {okv})') - if isVarbinary == False: + if checkQuery: tdSql.query(f'select * from {dbname}.{stbname}') tdSql.checkRows(1) tdSql.execute(f'alter table {dbname}.{ctbname} set tag t0 = {okv}') @@ -67,38 +67,64 @@ class TDTestCase: tdSql.execute(f'insert into {dbname}.{ctbname} values(now + 2s, %s, %s)' %(_e, _e)) tdSql.execute(f'alter table {dbname}.{ctbname} set tag t0 = %s' %(_e)) tdSql.execute(f'alter table {dbname}.{ctbname} set tag t1 = %s' %(_e)) - if isVarbinary == False: + if checkQuery: tdSql.query(f'select * from {dbname}.{stbname}') tdSql.checkRows(3) tdSql.execute(f'drop table {dbname}.{ctbname}') tdSql.execute(f'create table {dbname}.{ctbname} using {dbname}.{stbname} tags(%s, %s)' %(_e, _e)) tdSql.execute(f'insert into {dbname}.{ctbname} values(now, %s, %s)' %(_e, _e)) - if isVarbinary == False: + if checkQuery: tdSql.query(f'select * from {dbname}.{stbname}') tdSql.checkRows(1) tdSql.execute(f'drop table {dbname}.{ctbname}') tdSql.execute(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags(%s, {okv}) values(now, %s, {okv})' %(_e, _e)) - if isVarbinary == False: + if checkQuery: tdSql.query(f'select * from {dbname}.{stbname}') tdSql.checkRows(1) tdSql.execute(f'drop table {dbname}.{ctbname}') tdSql.execute(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}, %s) values(now, {okv}, %s)' %(_e, _e)) - if isVarbinary == False: + if checkQuery: tdSql.query(f'select * from {dbname}.{stbname}') tdSql.checkRows(1) tdSql.execute(f'drop table {dbname}.{ctbname}') tdSql.execute(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags(%s, %s) values(now, %s, %s)' %(_e, _e, _e, _e)) - if isVarbinary == False: + if checkQuery: tdSql.query(f'select * from {dbname}.{stbname}') tdSql.checkRows(1) tdSql.execute(f'drop table {dbname}.{ctbname}') + def __insert_query_json(self, dbname="db", stbname="", ctbname="", oklist=[], kolist=[], okv=None): + tdLog.info(f'{dbname}.{stbname} {ctbname}, oklist:%d, kolist:%d'%(len(oklist), len(kolist))) + tdSql.checkEqual(34, len(oklist) + len(kolist)) + + for _l in kolist: + for _e in _l: + tdSql.error(f'create table {dbname}.{ctbname} using {dbname}.{stbname} tags(%s)' %(_e)) + tdSql.error(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags(%s) values(now, 1)' %(_e)) + tdSql.execute(f'insert into {dbname}.{ctbname} using {dbname}.{stbname} tags({okv}) values(now, 1)') + tdSql.query(f'select * from {dbname}.{stbname}') + tdSql.checkRows(1) + tdSql.execute(f'alter table {dbname}.{ctbname} set tag t0 = {okv}') + tdSql.error(f'alter table {dbname}.{ctbname} set tag t0 = %s' %(_e)) + tdSql.execute(f'drop table {dbname}.{ctbname}') + for _l in oklist: + for _e in _l: + tdSql.execute(f'create table {dbname}.{ctbname} using {dbname}.{stbname} tags(%s)' %(_e)) + tdSql.execute(f'insert into {dbname}.{ctbname} values(now, 1)') + tdSql.execute(f'alter table {dbname}.{ctbname} set tag t0 = %s' %(_e)) + tdSql.query(f'select * from {dbname}.{stbname}') + tdSql.checkRows(1) + tdSql.execute(f'drop table {dbname}.{ctbname}') + def __insert_query_exec(self): - STR_EMPTY = ['\'\'', "\"\""] - STR_INTEGER = ["\"123\"", '\'+12\'', '\'+0\'', '\'-0\'', '\'-128\''] - STR_FLOAT = ['\'123.1\'', "\"-23.001\"", "\"+0.001\"" ] - STR_FLOAT_E = ['\'1e1\'', "\"-0.1E+1\"", "\"1e-2\""] - STR_MISC = ['\' \'', "\" \"", "\"123ab\"", '\'123d\'', '\'-12s\'', '\'\x012\'', '\'x12\'', '\'x\'', '\'NULL \'', '\'True \'', '\' False\''] + STR_EMPTY = ['\'\'', "\"\"", '\' \'', "\" \""] + STR_INTEGER_P = ["\"123\"", '\'+12\'', '\'+0\'', '\'-0\'', '\'0x12\'', '\'-0x0\'', '\'+0x0\'', '\'0b0101\'', '\'-0b00\''] + STR_INTEGER_M = ['\'-128\'', '\'-0x1\'', '\'-0b01\''] + STR_FLOAT_P = ['\'123.1\'', "\"+0.001\"", "\'\-0.0\'"] + STR_FLOAT_M = ["\"-23.001\""] + STR_FLOAT_E_P = ['\'1e1\'', "\"1e-2\"", "\"-1e-5\""] + STR_FLOAT_E_M = ["\"-0.1E+1\""] + STR_MISC = ["\"123ab\"", '\'123d\'', '\'-12s\'', '\'\x012\'', '\'x12\'', '\'x\'', '\'NULL \'', '\'True \'', '\' False\''] STR_OPTR = ['\'1*10\'', '\'1+2\'', '\'-2-0\'','\'1%2\'', '\'2/0\'', '\'1&31\''] STR_TSK = ['\'now\'', '\'today\''] STR_TSK_MISC = ['\'now+1s\'', '\' now\'', '\'today \'', '\'today+1m\'', '\'today-1w\''] @@ -107,13 +133,17 @@ class TDTestCase: STR_BOOL = ['\'true\'', '\'false\'', '\'TRUE\'', '\'FALSE\'', '\'tRuE\'', '\'falsE\''] STR_TS = ["\"2024-02-01 00:00:01.001-08:00\"", "\'2024-02-01T00:00:01.001+09:00\'", "\"2024-02-01\"", "\'2024-02-02 00:00:01\'", "\'2024-02-02 00:00:01.009\'"] STR_VARBIN = ['\'\\x12\'', '\'\\x12ab\''] - STR_JSON = ['\'{\"k1\":\"v1\"}\'', '\'[]\'', '\'{}\''] + STR_JSON_O = ['\'{\"k1\":\"v1\"}\'', '\'{}\''] + STR_JSON_A = ['\'[]\''] STR_GEO = ['\'POINT(1.0 1.0)\'', '\'LINESTRING(1.00 +2.0, 2.1 -3.2, 5.00 5.01)\'', '\'POLYGON((1.0 1.0, -2.0 +2.0, 1.0 1.0))\'' ] STR_NULL = ['\'NuLl\'', '\'null\'', '\'NULL\''] - RAW_INTEGER = ['123', '+0123', '-0128', '+0', '-0', '0'] - RAW_FLOAT = ['123.012', '-128.001', '-0.0', '0.0', '+0.0'] - RAW_FLOAT_E = ['1e-100', "-1E-10", '+0.1E+2'] + RAW_INTEGER_P = ['123', '+0127', '+0', '0', '-0', '0', '0x12', '-0x0', '+0x0', '0b0101', '-0b00'] + RAW_INTEGER_M = ['-123', '-0128','-0x1', '-0b01'] + RAW_FLOAT_P = ['123.012', '0.0', '+0.0', '-0.0'] + RAW_FLOAT_M = ['-128.001'] + RAW_FLOAT_E_P = ['1e-100', '+0.1E+2', '-0.1E-10'] + RAW_FLOAT_E_M = ["-1E2"] RAW_MISC = ['123abc', "123c", '-123d', '+', '-', ' *', ' /', '% ', '&', "|", "^", "&&", "||", "!", " =", 'now+1 s', 'now-1','now-1y','now+2 d', 'today+1 s', 'today-1','today-1y','today+2 d', 'now()+1 s', 'now()-1','now()-1y','now()+2 d', 'today()+1 s', 'today()-1','today()-1y','today()+2 d'] RAW_OPTR = ['1*10', '1+2', '-2-0','1%2', '2/0', '1&31'] @@ -124,47 +154,63 @@ class TDTestCase: RAW_BOOL = ['true', 'false', ' TRUE ', 'FALSE ', ' tRuE', ' falsE '] RAW_NULL = ['NuLl', 'null', 'NULL', ' NULL '] - OK_VC = [STR_EMPTY, STR_INTEGER, STR_FLOAT, STR_FLOAT_E, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, - STR_JSON, STR_GEO, STR_NULL, RAW_INTEGER, RAW_FLOAT, RAW_FLOAT_E, RAW_TSK, RAW_BOOL, RAW_NULL] + OK_VC = [STR_EMPTY, STR_INTEGER_P, STR_INTEGER_M, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, + STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, STR_JSON_O, STR_JSON_A, STR_GEO, STR_NULL, RAW_INTEGER_P, RAW_INTEGER_M, RAW_FLOAT_P, RAW_FLOAT_M, + RAW_FLOAT_E_P, RAW_FLOAT_E_M, RAW_TSK, RAW_BOOL, RAW_NULL] KO_VC = [RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] OK_NC = OK_VC KO_NC = KO_VC - OK_TS = [STR_TSK, STR_INTEGER, STR_TSKP, STR_TS, STR_NULL, RAW_INTEGER, RAW_TSK, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR, RAW_NULL] - KO_TS = [STR_EMPTY, STR_FLOAT, STR_FLOAT_E, STR_MISC, STR_OPTR, STR_TSK_MISC, STR_TSKP_MISC, STR_BOOL, STR_VARBIN, - STR_JSON,STR_GEO, RAW_FLOAT, RAW_FLOAT_E, RAW_MISC, RAW_OPTR, RAW_BOOL] + OK_TS = [STR_TSK, STR_INTEGER_P, STR_INTEGER_M, STR_TSKP, STR_TS, STR_NULL, RAW_INTEGER_P, RAW_INTEGER_M, RAW_TSK, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR, RAW_NULL] + KO_TS = [STR_EMPTY, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, STR_MISC, STR_OPTR, STR_TSK_MISC, STR_TSKP_MISC, STR_BOOL, STR_VARBIN, + STR_JSON_O, STR_JSON_A, STR_GEO, RAW_FLOAT_P, RAW_FLOAT_M, RAW_FLOAT_E_P, RAW_FLOAT_E_M, RAW_MISC, RAW_OPTR, RAW_BOOL] - OK_BO = [STR_BOOL, RAW_BOOL, STR_NULL, RAW_INTEGER, RAW_FLOAT, RAW_FLOAT_E, RAW_NULL] - KO_BO = [STR_EMPTY, STR_INTEGER, STR_TSK, STR_TSKP, STR_TS, STR_FLOAT, STR_FLOAT_E, STR_MISC, STR_OPTR, STR_TSK_MISC, STR_TSKP_MISC, STR_VARBIN, - STR_JSON,STR_GEO, RAW_TSK, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR, RAW_MISC, RAW_OPTR] - OK_VB = [STR_EMPTY, STR_INTEGER, STR_FLOAT, STR_FLOAT_E, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, - STR_JSON, STR_GEO, STR_NULL, RAW_NULL] - KO_VB = [RAW_INTEGER, RAW_FLOAT, RAW_FLOAT_E, RAW_TSK, RAW_BOOL, RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] - OK_IN = [] - KO_IN = [] - OK_FL = [] - KO_FL = [] - OK_DB = [] - KO_DB = [] - OK_GE = [] - KO_GE = [] - OK_JS = [] - KO_JS = [] + OK_BO = [STR_BOOL, RAW_BOOL, STR_NULL, RAW_INTEGER_P, RAW_INTEGER_M, RAW_FLOAT_P, RAW_FLOAT_M, RAW_FLOAT_E_P, RAW_FLOAT_E_M, RAW_NULL] + KO_BO = [STR_EMPTY, STR_INTEGER_P, STR_INTEGER_M, STR_TSK, STR_TSKP, STR_TS, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, STR_MISC, STR_OPTR, + STR_TSK_MISC, STR_TSKP_MISC, STR_VARBIN, STR_JSON_O, STR_JSON_A, STR_GEO, RAW_TSK, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR, RAW_MISC, RAW_OPTR] + OK_VB = [STR_EMPTY, STR_INTEGER_P, STR_INTEGER_M, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, + STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, STR_JSON_O, STR_JSON_A, STR_GEO, STR_NULL, RAW_NULL] + KO_VB = [RAW_INTEGER_P, RAW_INTEGER_M, RAW_FLOAT_P, RAW_FLOAT_M, RAW_FLOAT_E_P, RAW_FLOAT_E_M, RAW_TSK, RAW_BOOL, RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] + OK_IN = [STR_INTEGER_P, STR_INTEGER_M, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, STR_NULL, RAW_INTEGER_P, RAW_INTEGER_M, RAW_FLOAT_P, RAW_FLOAT_M, + RAW_FLOAT_E_P, RAW_FLOAT_E_M, RAW_NULL] + KO_IN = [STR_EMPTY, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, STR_JSON_O, STR_JSON_A, STR_GEO, RAW_TSK, + RAW_BOOL, RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] + OK_UI = [STR_INTEGER_P, STR_FLOAT_P, STR_FLOAT_E_P, STR_NULL, RAW_INTEGER_P, RAW_FLOAT_P, RAW_FLOAT_E_P, RAW_NULL] + KO_UI = [STR_EMPTY, STR_MISC, STR_INTEGER_M, STR_FLOAT_M, STR_FLOAT_E_M, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, + STR_JSON_O, STR_JSON_A, STR_GEO, RAW_TSK, RAW_BOOL, RAW_INTEGER_M, RAW_FLOAT_M, RAW_FLOAT_E_M, RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] + OK_FL = [STR_INTEGER_P, STR_INTEGER_M, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, STR_NULL, RAW_INTEGER_P, RAW_INTEGER_M, RAW_FLOAT_P, RAW_FLOAT_M, + RAW_FLOAT_E_P, RAW_FLOAT_E_M, RAW_NULL] + KO_FL = [STR_EMPTY, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, STR_JSON_O, STR_JSON_A, STR_GEO, RAW_TSK, + RAW_BOOL, RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] + OK_DB = OK_FL + KO_DB = [STR_EMPTY, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_VARBIN, STR_JSON_O, STR_JSON_A, STR_GEO, RAW_TSK, + RAW_BOOL, RAW_MISC, RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR] + OK_GE = [STR_GEO, STR_NULL, RAW_NULL] + KO_GE = [STR_EMPTY, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_JSON_O, STR_JSON_A, STR_VARBIN, RAW_TSK, RAW_BOOL, RAW_MISC, + RAW_OPTR, RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR, STR_INTEGER_P, STR_INTEGER_M, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, RAW_INTEGER_P, RAW_INTEGER_M, + RAW_FLOAT_P, RAW_FLOAT_M, RAW_FLOAT_E_P, RAW_FLOAT_E_M] + OK_JS = [STR_EMPTY, STR_JSON_O, STR_NULL, RAW_NULL] + KO_JS = [STR_JSON_A, STR_MISC, STR_OPTR, STR_TSK, STR_TSK_MISC, STR_TSKP, STR_TSKP_MISC, STR_BOOL, STR_TS, STR_GEO, STR_VARBIN, RAW_TSK, RAW_BOOL, RAW_MISC, RAW_OPTR, + RAW_TSK_OPTR, RAW_TSKP, RAW_TSKP_OPTR, STR_INTEGER_P, STR_INTEGER_M, STR_FLOAT_P, STR_FLOAT_M, STR_FLOAT_E_P, STR_FLOAT_E_M, RAW_INTEGER_P, RAW_INTEGER_M, + RAW_FLOAT_P, RAW_FLOAT_M, RAW_FLOAT_E_P, RAW_FLOAT_E_M] PARAM_LIST = [ - # ["db", "stb_vc", "ctb_vc", OK_VC, KO_VC, "\'vc\'"], - # ["db", "stb_nc", "ctb_nc", OK_NC, KO_NC, "\'nc\'"], - # ["db", "stb_ts", "ctb_ts", OK_TS, KO_TS, "now"], - # ["db", "stb_bo", "ctb_bo", OK_BO, KO_BO, "true"], - ["db", "stb_vb", "ctb_vb", OK_VB, KO_VB, "\'\\x\'"], - ["db", "stb_in", "ctb_in", OK_IN, KO_IN, "1"], - ["db", "stb_fl", "ctb_fl", OK_FL, KO_FL, "1.0"], - ["db", "stb_db", "ctb_db", OK_DB, KO_DB, "1.0"], - ["db", "stb_ge", "ctb_ge", OK_GE, KO_GE, "\'POINT(1.0 1.0)\'"], - ["db", "stb_js", "ctb_js", OK_JS, KO_JS, "\'{\'k1\':\'v1\',\k2\':\'v2\'}\'"], + # ["db", "stb_vc", "ctb_vc", OK_VC, KO_VC, "\'vc\'"], + # ["db", "stb_nc", "ctb_nc", OK_NC, KO_NC, "\'nc\'"], + # ["db", "stb_ts", "ctb_ts", OK_TS, KO_TS, "now"], + # ["db", "stb_bo", "ctb_bo", OK_BO, KO_BO, "true"], + # ["db", "stb_vb", "ctb_vb", OK_VB, KO_VB, "\'\\x\'"], + # ["db", "stb_in", "ctb_in", OK_IN, KO_IN, "-1"], + ["db", "stb_ui", "ctb_ui", OK_UI, KO_UI, "1"], + # ["db", "stb_fl", "ctb_fl", OK_FL, KO_FL, "1.0"], + # ["db", "stb_db", "ctb_db", OK_DB, KO_DB, "1.0"], + ["db", "stb_ge", "ctb_ge", OK_GE, KO_GE, "\'POINT(1.0 1.0)\'"] ] + # check with common function for _pl in PARAM_LIST: self.__insert_query_common(_pl[0], _pl[1], _pl[2], _pl[3], _pl[4], _pl[5]) + # check json + self.__insert_query_json("db", "stb_js", "ctb_js", OK_JS, KO_JS, "\'{\"k1\":\"v1\",\"k2\":\"v2\"}\'") def run(self):