diff options
author | Sergey Uzhakov <uzhastik@gmail.com> | 2022-05-14 00:00:47 +0300 |
---|---|---|
committer | Sergey Uzhakov <uzhastik@gmail.com> | 2022-05-14 00:00:47 +0300 |
commit | e5ffe7fe05e7f9d1fd1825a902f5bbbed331d817 (patch) | |
tree | a21099ba1cc07f226f4b4dd7b0c603214c11bede | |
parent | 63555ac272579916270285d89325cf2d5d2314b3 (diff) | |
download | ydb-e5ffe7fe05e7f9d1fd1825a902f5bbbed331d817.tar.gz |
YQL-14830: support IS NULL in pg syntax
ref:91ccf3153fe8d75b01c7c9fe9eb5eb7fb98d368e
-rw-r--r-- | ydb/library/yql/sql/pg/pg_sql.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/ydb/library/yql/sql/pg/pg_sql.cpp b/ydb/library/yql/sql/pg/pg_sql.cpp index e04beea527b..427cdf7b942 100644 --- a/ydb/library/yql/sql/pg/pg_sql.cpp +++ b/ydb/library/yql/sql/pg/pg_sql.cpp @@ -938,6 +938,19 @@ public: return { ParseSelectStmt(CAST_NODE(SelectStmt, value->subquery), true), alias, colnames, false }; } + TAstNode* ParseNullTestExpr(const NullTest* value, const TExprSettings& settings) { + if (value->argisrow) { + AddError("NullTest: unsupported argisrow"); + return nullptr; + } + auto arg = ParseExpr((const Node*)value->arg, settings); + auto result = L(A("Exists"), arg); + if (value->nulltesttype == IS_NULL) { + result = L(A("Not"), result); + } + return L(A("ToPg"), result); + } + TAstNode* ParseExpr(const Node* node, const TExprSettings& settings) { switch (NodeTag(node)) { case T_A_Const: { @@ -960,6 +973,9 @@ public: case T_BoolExpr: { return ParseBoolExpr(CAST_NODE(BoolExpr, node), settings); } + case T_NullTest: { + return ParseNullTestExpr(CAST_NODE(NullTest, node), settings); + } case T_FuncCall: { return ParseFuncCall(CAST_NODE(FuncCall, node), settings); } |