Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
vitstn committed Jan 29, 2024
1 parent b16f3db commit 2a48d0e
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 24 deletions.
12 changes: 9 additions & 3 deletions ydb/library/yql/sql/pg/optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
#undef SIZEOF_SIZE_T

extern "C" {
Y_PRAGMA_DIAGNOSTIC_PUSH
Y_PRAGMA("GCC diagnostic ignored \"-Wunused-parameter\"")
#include "postgres.h"
#include "miscadmin.h"
#include "optimizer/paths.h"
#include "nodes/print.h"
#include "utils/selfuncs.h"
#include "utils/palloc.h"
Y_PRAGMA_DIAGNOSTIC_POP
}

#undef Min
Expand All @@ -40,6 +43,9 @@ bool RelationStatsHook(
AttrNumber attnum,
VariableStatData *vardata)
{
Y_UNUSED(root);
Y_UNUSED(rte);
Y_UNUSED(attnum);
vardata->statsTuple = nullptr;
return true;
}
Expand Down Expand Up @@ -224,8 +230,8 @@ int TPgOptimizer::MakeOutputJoin(TOutput& output, Path* path) {

for (int i = 0; i < list_length(jpath->joinrestrictinfo); i++) {
RestrictInfo* rinfo = (RestrictInfo*)jpath->joinrestrictinfo->elements[i].ptr_value;
Var* left;
Var* right;
Var* left = nullptr;
Var* right = nullptr;

if (jpath->jointype == JOIN_INNER) {
YQL_ENSURE(rinfo->left_em->em_expr->type == T_Var, "Unsupported left em type");
Expand Down Expand Up @@ -279,7 +285,7 @@ void TPgOptimizer::MakeLeftOrRightRestrictions(std::vector<RestrictInfo*>& dst,
ri->clause = (Expr*)oe;

bool left = true;
for (const auto [relId, varId] : eq.Vars) {
for (const auto& [relId, varId] : eq.Vars) {
ri->required_relids = bms_add_member(ri->required_relids, relId);
ri->clause_relids = bms_add_member(ri->clause_relids, relId);
if (left) {
Expand Down
2 changes: 1 addition & 1 deletion ydb/library/yql/sql/pg/optimizer_impl_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Y_UNIT_TEST(MakeRelOptInfoList) {
TArenaMemoryContext ctx;
IOptimizer::TRel rel1 = {10, 100, {{}}};
IOptimizer::TRel rel2 = {100, 99, {{}}};
IOptimizer::TInput input = {{rel1, rel2}};
IOptimizer::TInput input = {.Rels={rel1, rel2}};
auto* l = MakeRelOptInfoList(input);
UNIT_ASSERT(l);
UNIT_ASSERT_EQUAL(l->length, 2);
Expand Down
8 changes: 4 additions & 4 deletions ydb/library/yql/sql/pg/optimizer_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Y_TEST_HOOK_BEFORE_RUN(InitTest) {
Y_UNIT_TEST(PgJoinSearch2Rels) {
IOptimizer::TRel rel1 = {100000, 1000000, {{'a'}}};
IOptimizer::TRel rel2 = {1000000, 9000009, {{'b'}}};
IOptimizer::TInput input = {{rel1, rel2}};
IOptimizer::TInput input = {.Rels={rel1, rel2}};

input.EqClasses.emplace_back(IOptimizer::TEq {
{{1, 1}, {2, 1}}
Expand Down Expand Up @@ -56,7 +56,7 @@ Y_UNIT_TEST(PgJoinSearch2Rels) {
Y_UNIT_TEST(PgJoinSearch2RelsLeft) {
IOptimizer::TRel rel1 = {100000, 1000000, {{'a'}}};
IOptimizer::TRel rel2 = {1000000, 9000009, {{'b'}}};
IOptimizer::TInput input = {{rel1, rel2}};
IOptimizer::TInput input = {.Rels={rel1, rel2}};

input.EqClasses.emplace_back(IOptimizer::TEq {
{{1, 1}}
Expand Down Expand Up @@ -102,7 +102,7 @@ Y_UNIT_TEST(PgJoinSearch2RelsLeft) {
Y_UNIT_TEST(PgJoinSearch2RelsRight) {
IOptimizer::TRel rel1 = {100000, 1000000, {{'a'}}};
IOptimizer::TRel rel2 = {1000000, 9000009, {{'b'}}};
IOptimizer::TInput input = {{rel1, rel2}};
IOptimizer::TInput input = {.Rels={rel1, rel2}};

input.EqClasses.emplace_back(IOptimizer::TEq {
{{1, 1}}
Expand Down Expand Up @@ -149,7 +149,7 @@ Y_UNIT_TEST(PgJoinSearch3Rels) {
IOptimizer::TRel rel1 = {100000, 1000000, {{'a'}}};
IOptimizer::TRel rel2 = {1000000, 9000009, {{'b'}}};
IOptimizer::TRel rel3 = {10000, 9009, {{'c'}}};
IOptimizer::TInput input = {{rel1, rel2, rel3}};
IOptimizer::TInput input = {.Rels={rel1, rel2, rel3}};

input.EqClasses.emplace_back(IOptimizer::TEq {
{{1, 1}, {2, 1}, {3, 1}}
Expand Down
25 changes: 12 additions & 13 deletions ydb/library/yql/sql/pg/pg_sql.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ class TConverter : public IPGParseEvents {
{
// YQL-16284
const char* node_name = CAST_NODE(VariableSetStmt, node)->name;
char* skip_statements[] = {
const char* skip_statements[] = {
"extra_float_digits", // jdbc
"application_name", // jdbc
"statement_timeout", // pg_dump
Expand Down Expand Up @@ -446,7 +446,6 @@ class TConverter : public IPGParseEvents {
}

auto* tuples = listOfTuples.mutable_value()->mutable_items();
size_t idx = 0;
size_t cols = columnTypes.size();
for (size_t idx = 0; idx < autoParamLiterals.size(); idx += cols){
auto* tuple = tuples->Add();
Expand Down Expand Up @@ -636,17 +635,17 @@ class TConverter : public IPGParseEvents {
auto length = ListLength(value->args);
if (length != 3) {
AddError(TStringBuilder() << "Expected 3 arguments, but got: " << length);
return;
return nullptr;
}
auto loc = value->location;

VariableSetStmt config;
config.kind = VAR_SET_VALUE;
auto arg0 = ListNodeNth(value->args, 0);
auto arg1 = ListNodeNth(value->args, 1);
auto arg2 = ListNodeNth(value->args, 2);
if (NodeTag(arg2) != T_TypeCast) {
AddError(TStringBuilder() << "Expected type cast node as is_local arg, but got node with tag");
return;
return nullptr;
}
auto isLocalCast = CAST_NODE(TypeCast, arg2)->arg;
if (NodeTag(isLocalCast) != T_A_Const) {
Expand All @@ -661,7 +660,7 @@ class TConverter : public IPGParseEvents {
auto rawVal = TString(StrVal(isLocalConst->val));
if (rawVal != "t" && rawVal != "f") {
AddError(TStringBuilder() << "Expected t/f, but got " << rawVal);
return;
return nullptr;
}
config.is_local = rawVal == "t";

Expand All @@ -674,7 +673,7 @@ class TConverter : public IPGParseEvents {
auto val = CAST_NODE(A_Const, arg1)->val;
if (NodeTag(name) != T_String || NodeTag(val) != T_String) {
AddError(TStringBuilder() << "Expected string const as name arg, but got something else: " << NodeTag(name));
return;
return nullptr;
}
config.name = (char*)StrVal(name);
config.args = list_make1((void*)(&val));
Expand Down Expand Up @@ -1320,7 +1319,7 @@ class TConverter : public IPGParseEvents {
return {};
}
ui32 index = 0;
for (size_t i = 0; i < ListLength(returningList); i++) {
for (int i = 0; i < ListLength(returningList); i++) {
auto node = ListNodeNth(returningList, i);
if (NodeTag(node) != T_ResTarget) {
NodeNotImplemented(returningList, node);
Expand Down Expand Up @@ -1375,7 +1374,7 @@ class TConverter : public IPGParseEvents {

TVector <TAstNode*> targetColumns;
if (value->cols) {
for (size_t i = 0; i < ListLength(value->cols); i++) {
for (int i = 0; i < ListLength(value->cols); i++) {
auto node = ListNodeNth(value->cols, i);
if (NodeTag(node) != T_ResTarget) {
NodeNotImplemented(value, node);
Expand Down Expand Up @@ -1612,7 +1611,7 @@ class TConverter : public IPGParseEvents {
if (!CheckConstraintSupported(pk))
return false;

for (auto i = 0; i < ListLength(pk->keys); ++i) {
for (int i = 0; i < ListLength(pk->keys); ++i) {
auto node = ListNodeNth(pk->keys, i);
auto nodeName = StrVal(node);

Expand Down Expand Up @@ -1677,7 +1676,7 @@ class TConverter : public IPGParseEvents {
TColumnInfo cinfo{.Name = node->colname};

if (node->constraints) {
for (ui32 i = 0; i < ListLength(node->constraints); ++i) {
for (int i = 0; i < ListLength(node->constraints); ++i) {
auto constraintNode =
CAST_NODE(Constraint, ListNodeNth(node->constraints, i));

Expand Down Expand Up @@ -1899,7 +1898,7 @@ class TConverter : public IPGParseEvents {
return nullptr;
}

for (ui32 i = 0; i < ListLength(value->tableElts); ++i) {
for (int i = 0; i < ListLength(value->tableElts); ++i) {
auto rawNode = ListNodeNth(value->tableElts, i);

switch (NodeTag(rawNode)) {
Expand Down Expand Up @@ -4342,7 +4341,7 @@ class TConverter : public IPGParseEvents {
auto it = LowerBound(RowStarts.begin(), RowStarts.end(), Min((ui32)location, QuerySize));
Y_ENSURE(it != RowStarts.end());

if (*it == location) {
if (*it == (ui32)location) {
auto row = 1 + it - RowStarts.begin();
auto column = 1;
return NYql::TPosition(column, row);
Expand Down
2 changes: 0 additions & 2 deletions ydb/library/yql/sql/pg/ut/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,4 @@ PEERDIR(

SIZE(MEDIUM)

NO_COMPILER_WARNINGS()

END()
1 change: 0 additions & 1 deletion ydb/library/yql/sql/pg/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ CFLAGS(
)
ENDIF()

NO_COMPILER_WARNINGS()
YQL_LAST_ABI_VERSION()

END()
Expand Down

0 comments on commit 2a48d0e

Please sign in to comment.