Merge pull request #20603 from taosdata/enh/3.0_planner_optimize
fix: udf error check
This commit is contained in:
commit
18b039fecd
|
@ -1492,6 +1492,7 @@ static void resetEnvPreTable(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStm
|
|||
pStmt->pBoundCols = NULL;
|
||||
pStmt->usingTableProcessing = false;
|
||||
pStmt->fileProcessing = false;
|
||||
pStmt->usingTableName.type = 0;
|
||||
}
|
||||
|
||||
// input pStmt->pSql: [(field1_name, ...)] [ USING ... ] VALUES ... | FILE ...
|
||||
|
@ -1539,6 +1540,10 @@ static int32_t checkTableClauseFirstToken(SInsertParseContext* pCxt, SVnodeModif
|
|||
}
|
||||
}
|
||||
|
||||
if (TK_NK_ID != pTbName->type && TK_NK_STRING != pTbName->type && TK_NK_QUESTION != pTbName->type) {
|
||||
return buildSyntaxErrMsg(&pCxt->msg, "table_name is expected", pTbName->z);
|
||||
}
|
||||
|
||||
*pHasData = true;
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -6422,14 +6422,16 @@ static int32_t translateCreateFunction(STranslateContext* pCxt, SCreateFunctionS
|
|||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_FUNCTION_NAME);
|
||||
}
|
||||
|
||||
if (TSDB_DATA_TYPE_JSON == pStmt->outputDt.type ||
|
||||
TSDB_DATA_TYPE_VARBINARY == pStmt->outputDt.type ||
|
||||
TSDB_DATA_TYPE_DECIMAL == pStmt->outputDt.type ||
|
||||
TSDB_DATA_TYPE_BLOB == pStmt->outputDt.type ||
|
||||
if (TSDB_DATA_TYPE_JSON == pStmt->outputDt.type || TSDB_DATA_TYPE_VARBINARY == pStmt->outputDt.type ||
|
||||
TSDB_DATA_TYPE_DECIMAL == pStmt->outputDt.type || TSDB_DATA_TYPE_BLOB == pStmt->outputDt.type ||
|
||||
TSDB_DATA_TYPE_MEDIUMBLOB == pStmt->outputDt.type) {
|
||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_SYNTAX_ERROR, "Unsupported output type for UDF");
|
||||
}
|
||||
|
||||
if (!pStmt->isAgg && pStmt->bufSize > 0) {
|
||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_SYNTAX_ERROR, "BUFSIZE can only be used with UDAF");
|
||||
}
|
||||
|
||||
SCreateFuncReq req = {0};
|
||||
strcpy(req.name, pStmt->funcName);
|
||||
req.igExists = pStmt->ignoreExists;
|
||||
|
|
|
@ -23,10 +23,10 @@ if $system_content == Windows_NT then
|
|||
return 0;
|
||||
endi
|
||||
if $system_content == Windows_NT then
|
||||
sql create function bit_and as 'C:\\Windows\\Temp\\bitand.dll' outputtype int bufSize 8;
|
||||
sql create function bit_and as 'C:\\Windows\\Temp\\bitand.dll' outputtype int;
|
||||
sql create aggregate function l2norm as 'C:\\Windows\\Temp\\l2norm.dll' outputtype double bufSize 8;
|
||||
else
|
||||
sql create function bit_and as '/tmp/udf/libbitand.so' outputtype int bufSize 8;
|
||||
sql create function bit_and as '/tmp/udf/libbitand.so' outputtype int;
|
||||
sql create aggregate function l2norm as '/tmp/udf/libl2norm.so' outputtype double bufSize 8;
|
||||
endi
|
||||
|
||||
|
|
|
@ -23,9 +23,9 @@ if $system_content == Windows_NT then
|
|||
endi
|
||||
|
||||
if $system_content == Windows_NT then
|
||||
sql create function gpd as 'C:\\Windows\\Temp\\gpd.dll' outputtype int bufSize 8;
|
||||
sql create function gpd as 'C:\\Windows\\Temp\\gpd.dll' outputtype int;
|
||||
else
|
||||
sql create function gpd as '/tmp/udf/libgpd.so' outputtype int bufSize 8;
|
||||
sql create function gpd as '/tmp/udf/libgpd.so' outputtype int;
|
||||
endi
|
||||
sql show functions;
|
||||
if $rows != 1 then
|
||||
|
|
|
@ -29,10 +29,10 @@ if $system_content == Windows_NT then
|
|||
return 0;
|
||||
endi
|
||||
if $system_content == Windows_NT then
|
||||
sql create function bit_and as 'C:\\Windows\\Temp\\bitand.dll' outputtype int bufSize 8;
|
||||
sql create function bit_and as 'C:\\Windows\\Temp\\bitand.dll' outputtype int;
|
||||
sql create aggregate function l2norm as 'C:\\Windows\\Temp\\l2norm.dll' outputtype double bufSize 8;
|
||||
else
|
||||
sql create function bit_and as '/tmp/udf/libbitand.so' outputtype int bufSize 8;
|
||||
sql create function bit_and as '/tmp/udf/libbitand.so' outputtype int;
|
||||
sql create aggregate function l2norm as '/tmp/udf/libl2norm.so' outputtype double bufSize 8;
|
||||
endi
|
||||
sql create function pybitand as '/tmp/pyudf/pybitand.py' outputtype int language 'python';
|
||||
|
|
|
@ -15,10 +15,10 @@ sql insert into t values(now, 1)(now+1s, 2);
|
|||
|
||||
system_content printf %OS%
|
||||
if $system_content == Windows_NT then
|
||||
sql create function udf1 as 'C:\\Windows\\Temp\\udf1.dll' outputtype int bufSize 8;
|
||||
sql create function udf1 as 'C:\\Windows\\Temp\\udf1.dll' outputtype int;
|
||||
sql create aggregate function udf2 as 'C:\\Windows\\Temp\\udf2.dll' outputtype double bufSize 8;
|
||||
else
|
||||
sql create function udf1 as '/tmp/udf/libudf1.so' outputtype int bufSize 8;
|
||||
sql create function udf1 as '/tmp/udf/libudf1.so' outputtype int;
|
||||
sql create aggregate function udf2 as '/tmp/udf/libudf2.so' outputtype double bufSize 8;
|
||||
endi
|
||||
sql show functions;
|
||||
|
|
|
@ -146,7 +146,7 @@ class TDTestCase:
|
|||
|
||||
for i in range(5):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -171,7 +171,7 @@ class TDTestCase:
|
|||
tdLog.info("drop two udf functions success ")
|
||||
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -562,7 +562,7 @@ class TDTestCase:
|
|||
|
||||
# create function without buffer
|
||||
tdSql.execute("create aggregate function udf1 as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double"%self.libudf2)
|
||||
udf1_sqls ,udf2_sqls = self.try_query_sql()
|
||||
|
||||
for scalar_sql in udf1_sqls:
|
||||
|
@ -570,7 +570,7 @@ class TDTestCase:
|
|||
for aggregate_sql in udf2_sqls:
|
||||
tdSql.error(aggregate_sql)
|
||||
|
||||
tdSql.execute(" create function db as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute(" create function db as '%s' outputtype int "%self.libudf1)
|
||||
tdSql.execute(" create aggregate function test as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.error(" select db(c1) from stb1 ")
|
||||
tdSql.error(" select db(c1,c6), db(c6) from stb1 ")
|
||||
|
@ -619,9 +619,9 @@ class TDTestCase:
|
|||
tdLog.info(" create function name is not build_in functions ")
|
||||
tdSql.execute(" drop function udf1 ")
|
||||
tdSql.execute(" drop function udf2 ")
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int "%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int "%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function tbname as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function function as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
|
|
|
@ -148,7 +148,7 @@ class TDTestCase:
|
|||
|
||||
for i in range(5):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -173,7 +173,7 @@ class TDTestCase:
|
|||
tdLog.info("drop two udf functions success ")
|
||||
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ class TDTestCase:
|
|||
|
||||
for i in range(5):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -173,7 +173,7 @@ class TDTestCase:
|
|||
tdLog.info("drop two udf functions success ")
|
||||
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -564,7 +564,7 @@ class TDTestCase:
|
|||
|
||||
# create function without buffer
|
||||
tdSql.execute("create aggregate function udf1 as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double"%self.libudf2)
|
||||
udf1_sqls ,udf2_sqls = self.try_query_sql()
|
||||
|
||||
for scalar_sql in udf1_sqls:
|
||||
|
@ -572,7 +572,7 @@ class TDTestCase:
|
|||
for aggregate_sql in udf2_sqls:
|
||||
tdSql.error(aggregate_sql)
|
||||
|
||||
tdSql.execute(" create function db as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute(" create function db as '%s' outputtype int "%self.libudf1)
|
||||
tdSql.execute(" create aggregate function test as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.error(" select db(c1) from stb1 ")
|
||||
tdSql.error(" select db(c1,c6), db(c6) from stb1 ")
|
||||
|
@ -621,9 +621,9 @@ class TDTestCase:
|
|||
tdLog.info(" create function name is not build_in functions ")
|
||||
tdSql.execute(" drop function udf1 ")
|
||||
tdSql.execute(" drop function udf2 ")
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int"%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int"%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function tbname as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function function as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
|
|
|
@ -148,7 +148,7 @@ class TDTestCase:
|
|||
|
||||
for i in range(5):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -173,7 +173,7 @@ class TDTestCase:
|
|||
tdLog.info("drop two udf functions success ")
|
||||
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -574,7 +574,7 @@ class TDTestCase:
|
|||
|
||||
# create function without buffer
|
||||
tdSql.execute("create aggregate function udf1 as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double "%self.libudf2)
|
||||
udf1_sqls ,udf2_sqls = self.try_query_sql()
|
||||
|
||||
for scalar_sql in udf1_sqls:
|
||||
|
@ -582,7 +582,7 @@ class TDTestCase:
|
|||
for aggregate_sql in udf2_sqls:
|
||||
tdSql.error(aggregate_sql)
|
||||
|
||||
tdSql.execute(" create function db as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute(" create function db as '%s' outputtype int "%self.libudf1)
|
||||
tdSql.execute(" create aggregate function test as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.error(" select db(c1) from stb1 ")
|
||||
tdSql.error(" select db(c1,c6), db(c6) from stb1 ")
|
||||
|
@ -631,9 +631,9 @@ class TDTestCase:
|
|||
tdLog.info(" create function name is not build_in functions ")
|
||||
tdSql.execute(" drop function udf1 ")
|
||||
tdSql.execute(" drop function udf2 ")
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int"%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int"%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function tbname as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function function as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
|
|
|
@ -145,7 +145,7 @@ class TDTestCase:
|
|||
|
||||
for i in range(5):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -170,7 +170,7 @@ class TDTestCase:
|
|||
tdLog.info("drop two udf functions success ")
|
||||
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
# create aggregate functions
|
||||
|
||||
|
@ -561,7 +561,7 @@ class TDTestCase:
|
|||
|
||||
# create function without buffer
|
||||
tdSql.execute("create aggregate function udf1 as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.execute("create function udf2 as '%s' outputtype double"%self.libudf2)
|
||||
udf1_sqls ,udf2_sqls = self.try_query_sql()
|
||||
|
||||
for scalar_sql in udf1_sqls:
|
||||
|
@ -569,7 +569,7 @@ class TDTestCase:
|
|||
for aggregate_sql in udf2_sqls:
|
||||
tdSql.error(aggregate_sql)
|
||||
|
||||
tdSql.execute(" create function db as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.execute(" create function db as '%s' outputtype int "%self.libudf1)
|
||||
tdSql.execute(" create aggregate function test as '%s' outputtype int bufSize 8 "%self.libudf1)
|
||||
tdSql.error(" select db(c1) from stb1 ")
|
||||
tdSql.error(" select db(c1,c6), db(c6) from stb1 ")
|
||||
|
@ -618,9 +618,9 @@ class TDTestCase:
|
|||
tdLog.info(" create function name is not build_in functions ")
|
||||
tdSql.execute(" drop function udf1 ")
|
||||
tdSql.execute(" drop function udf2 ")
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int"%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create function max as '%s' outputtype int bufSize 8"%self.libudf1)
|
||||
tdSql.error("create function max as '%s' outputtype int"%self.libudf1)
|
||||
tdSql.error("create aggregate function sum as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function tbname as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
tdSql.error("create aggregate function function as '%s' outputtype double bufSize 8"%self.libudf2)
|
||||
|
|
|
@ -50,7 +50,7 @@ class TDTestCase:
|
|||
|
||||
def create_udf_function(self):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
functions = tdSql.getResult("show functions")
|
||||
function_nums = len(functions)
|
||||
|
|
|
@ -50,7 +50,7 @@ class TDTestCase:
|
|||
|
||||
def create_udf_function(self):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
functions = tdSql.getResult("show functions")
|
||||
function_nums = len(functions)
|
||||
|
|
|
@ -50,7 +50,7 @@ class TDTestCase:
|
|||
|
||||
def create_udf_function(self):
|
||||
# create scalar functions
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int bufSize 8;"%self.libudf1)
|
||||
tdSql.execute("create function udf1 as '%s' outputtype int;"%self.libudf1)
|
||||
|
||||
functions = tdSql.getResult("show functions")
|
||||
function_nums = len(functions)
|
||||
|
|
Loading…
Reference in New Issue