enh: add join ut
This commit is contained in:
parent
e55b7c52d8
commit
279b2aa10a
|
@ -290,88 +290,88 @@
|
|||
#define TK_OUTER 271
|
||||
#define TK_SEMI 272
|
||||
#define TK_ANTI 273
|
||||
#define TK_ANY 274
|
||||
#define TK_ASOF 275
|
||||
#define TK_WINDOW 276
|
||||
#define TK_WINDOW_OFFSET 277
|
||||
#define TK_JLIMIT 278
|
||||
#define TK_SELECT 279
|
||||
#define TK_NK_HINT 280
|
||||
#define TK_DISTINCT 281
|
||||
#define TK_WHERE 282
|
||||
#define TK_PARTITION 283
|
||||
#define TK_BY 284
|
||||
#define TK_SESSION 285
|
||||
#define TK_STATE_WINDOW 286
|
||||
#define TK_EVENT_WINDOW 287
|
||||
#define TK_SLIDING 288
|
||||
#define TK_FILL 289
|
||||
#define TK_VALUE 290
|
||||
#define TK_VALUE_F 291
|
||||
#define TK_NONE 292
|
||||
#define TK_PREV 293
|
||||
#define TK_NULL_F 294
|
||||
#define TK_LINEAR 295
|
||||
#define TK_NEXT 296
|
||||
#define TK_HAVING 297
|
||||
#define TK_RANGE 298
|
||||
#define TK_EVERY 299
|
||||
#define TK_ORDER 300
|
||||
#define TK_SLIMIT 301
|
||||
#define TK_SOFFSET 302
|
||||
#define TK_LIMIT 303
|
||||
#define TK_OFFSET 304
|
||||
#define TK_ASC 305
|
||||
#define TK_NULLS 306
|
||||
#define TK_ABORT 307
|
||||
#define TK_AFTER 308
|
||||
#define TK_ATTACH 309
|
||||
#define TK_BEFORE 310
|
||||
#define TK_BEGIN 311
|
||||
#define TK_BITAND 312
|
||||
#define TK_BITNOT 313
|
||||
#define TK_BITOR 314
|
||||
#define TK_BLOCKS 315
|
||||
#define TK_CHANGE 316
|
||||
#define TK_COMMA 317
|
||||
#define TK_CONCAT 318
|
||||
#define TK_CONFLICT 319
|
||||
#define TK_COPY 320
|
||||
#define TK_DEFERRED 321
|
||||
#define TK_DELIMITERS 322
|
||||
#define TK_DETACH 323
|
||||
#define TK_DIVIDE 324
|
||||
#define TK_DOT 325
|
||||
#define TK_EACH 326
|
||||
#define TK_FAIL 327
|
||||
#define TK_FILE 328
|
||||
#define TK_FOR 329
|
||||
#define TK_GLOB 330
|
||||
#define TK_ID 331
|
||||
#define TK_IMMEDIATE 332
|
||||
#define TK_IMPORT 333
|
||||
#define TK_INITIALLY 334
|
||||
#define TK_INSTEAD 335
|
||||
#define TK_ISNULL 336
|
||||
#define TK_KEY 337
|
||||
#define TK_MODULES 338
|
||||
#define TK_NK_BITNOT 339
|
||||
#define TK_NK_SEMI 340
|
||||
#define TK_NOTNULL 341
|
||||
#define TK_OF 342
|
||||
#define TK_PLUS 343
|
||||
#define TK_PRIVILEGE 344
|
||||
#define TK_RAISE 345
|
||||
#define TK_RESTRICT 346
|
||||
#define TK_ROW 347
|
||||
#define TK_STAR 348
|
||||
#define TK_STATEMENT 349
|
||||
#define TK_STRICT 350
|
||||
#define TK_STRING 351
|
||||
#define TK_TIMES 352
|
||||
#define TK_VALUES 353
|
||||
#define TK_VARIABLE 354
|
||||
#define TK_WAL 355
|
||||
#define TK_ASOF 274
|
||||
#define TK_WINDOW 275
|
||||
#define TK_WINDOW_OFFSET 276
|
||||
#define TK_JLIMIT 277
|
||||
#define TK_SELECT 278
|
||||
#define TK_NK_HINT 279
|
||||
#define TK_DISTINCT 280
|
||||
#define TK_WHERE 281
|
||||
#define TK_PARTITION 282
|
||||
#define TK_BY 283
|
||||
#define TK_SESSION 284
|
||||
#define TK_STATE_WINDOW 285
|
||||
#define TK_EVENT_WINDOW 286
|
||||
#define TK_SLIDING 287
|
||||
#define TK_FILL 288
|
||||
#define TK_VALUE 289
|
||||
#define TK_VALUE_F 290
|
||||
#define TK_NONE 291
|
||||
#define TK_PREV 292
|
||||
#define TK_NULL_F 293
|
||||
#define TK_LINEAR 294
|
||||
#define TK_NEXT 295
|
||||
#define TK_HAVING 296
|
||||
#define TK_RANGE 297
|
||||
#define TK_EVERY 298
|
||||
#define TK_ORDER 299
|
||||
#define TK_SLIMIT 300
|
||||
#define TK_SOFFSET 301
|
||||
#define TK_LIMIT 302
|
||||
#define TK_OFFSET 303
|
||||
#define TK_ASC 304
|
||||
#define TK_NULLS 305
|
||||
#define TK_ABORT 306
|
||||
#define TK_AFTER 307
|
||||
#define TK_ATTACH 308
|
||||
#define TK_BEFORE 309
|
||||
#define TK_BEGIN 310
|
||||
#define TK_BITAND 311
|
||||
#define TK_BITNOT 312
|
||||
#define TK_BITOR 313
|
||||
#define TK_BLOCKS 314
|
||||
#define TK_CHANGE 315
|
||||
#define TK_COMMA 316
|
||||
#define TK_CONCAT 317
|
||||
#define TK_CONFLICT 318
|
||||
#define TK_COPY 319
|
||||
#define TK_DEFERRED 320
|
||||
#define TK_DELIMITERS 321
|
||||
#define TK_DETACH 322
|
||||
#define TK_DIVIDE 323
|
||||
#define TK_DOT 324
|
||||
#define TK_EACH 325
|
||||
#define TK_FAIL 326
|
||||
#define TK_FILE 327
|
||||
#define TK_FOR 328
|
||||
#define TK_GLOB 329
|
||||
#define TK_ID 330
|
||||
#define TK_IMMEDIATE 331
|
||||
#define TK_IMPORT 332
|
||||
#define TK_INITIALLY 333
|
||||
#define TK_INSTEAD 334
|
||||
#define TK_ISNULL 335
|
||||
#define TK_KEY 336
|
||||
#define TK_MODULES 337
|
||||
#define TK_NK_BITNOT 338
|
||||
#define TK_NK_SEMI 339
|
||||
#define TK_NOTNULL 340
|
||||
#define TK_OF 341
|
||||
#define TK_PLUS 342
|
||||
#define TK_PRIVILEGE 343
|
||||
#define TK_RAISE 344
|
||||
#define TK_RESTRICT 345
|
||||
#define TK_ROW 346
|
||||
#define TK_STAR 347
|
||||
#define TK_STATEMENT 348
|
||||
#define TK_STRICT 349
|
||||
#define TK_STRING 350
|
||||
#define TK_TIMES 351
|
||||
#define TK_VALUES 352
|
||||
#define TK_VARIABLE 353
|
||||
#define TK_WAL 354
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -219,7 +219,6 @@ typedef enum EJoinSubType {
|
|||
JOIN_STYPE_OUTER,
|
||||
JOIN_STYPE_SEMI,
|
||||
JOIN_STYPE_ANTI,
|
||||
JOIN_STYPE_ANY,
|
||||
JOIN_STYPE_ASOF,
|
||||
JOIN_STYPE_WIN,
|
||||
JOIN_STYPE_MAX_VALUE
|
||||
|
|
|
@ -19,17 +19,17 @@ IF(NOT TD_DARWIN)
|
|||
)
|
||||
ENDIF ()
|
||||
|
||||
# SET(CMAKE_CXX_STANDARD 11)
|
||||
# AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||
SET(CMAKE_CXX_STANDARD 11)
|
||||
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||
|
||||
# ADD_EXECUTABLE(tSimpleHashTest tSimpleHashTests.cpp)
|
||||
# TARGET_LINK_LIBRARIES(
|
||||
# tSimpleHashTest
|
||||
# PRIVATE os util common executor gtest_main
|
||||
# )
|
||||
ADD_EXECUTABLE(joinTests joinTests.cpp)
|
||||
TARGET_LINK_LIBRARIES(
|
||||
joinTests
|
||||
PRIVATE os util common executor gtest_main qcom
|
||||
)
|
||||
|
||||
# TARGET_INCLUDE_DIRECTORIES(
|
||||
# tSimpleHashTest
|
||||
# PUBLIC "${TD_SOURCE_DIR}/include/common"
|
||||
# PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../inc"
|
||||
# )
|
||||
TARGET_INCLUDE_DIRECTORIES(
|
||||
joinTests
|
||||
PUBLIC "${TD_SOURCE_DIR}/include/common"
|
||||
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../inc"
|
||||
)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1090,7 +1090,6 @@ join_subtype(A) ::= .
|
|||
join_subtype(A) ::= OUTER. { A = JOIN_STYPE_OUTER; }
|
||||
join_subtype(A) ::= SEMI. { A = JOIN_STYPE_SEMI; }
|
||||
join_subtype(A) ::= ANTI. { A = JOIN_STYPE_ANTI; }
|
||||
join_subtype(A) ::= ANY. { A = JOIN_STYPE_ANY; }
|
||||
join_subtype(A) ::= ASOF. { A = JOIN_STYPE_ASOF; }
|
||||
join_subtype(A) ::= WINDOW. { A = JOIN_STYPE_WIN; }
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ static SKeyword keywordTable[] = {
|
|||
{"ANALYZE", TK_ANALYZE},
|
||||
{"AND", TK_AND},
|
||||
{"ANTI", TK_ANTI},
|
||||
{"ANY", TK_ANY},
|
||||
// {"ANY", TK_ANY},
|
||||
{"APPS", TK_APPS},
|
||||
{"AS", TK_AS},
|
||||
{"ASC", TK_ASC},
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -85,6 +85,7 @@ typedef struct SJoinOptimizeOpt {
|
|||
typedef bool (*FMayBeOptimized)(SLogicNode* pNode);
|
||||
typedef bool (*FShouldBeOptimized)(SLogicNode* pNode, void* pInfo);
|
||||
|
||||
#if 0
|
||||
static SJoinOptimizeOpt gJoinOpt[JOIN_TYPE_MAX_VALUE][JOIN_STYPE_MAX_VALUE] = {
|
||||
/* NONE OUTER SEMI ANTI ANY ASOF WINDOW */
|
||||
/*INNER*/ {{PUSH_DOWN_ALL_COND}, {0}, {0}, {0}, {PUSH_DOWN_ALL_COND}, {0}, {0}},
|
||||
|
@ -92,6 +93,16 @@ static SJoinOptimizeOpt gJoinOpt[JOIN_TYPE_MAX_VALUE][JOIN_STYPE_MAX_VALUE] = {
|
|||
/*RIGHT*/ {{0}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_ALL_COND}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_RIGHT_FLT}},
|
||||
/*FULL*/ {{0}, {0}, {0}, {0}, {0}, {0}, {0}},
|
||||
};
|
||||
#else
|
||||
static SJoinOptimizeOpt gJoinOpt[JOIN_TYPE_MAX_VALUE][JOIN_STYPE_MAX_VALUE] = {
|
||||
/* NONE OUTER SEMI ANTI ASOF WINDOW */
|
||||
/*INNER*/ {{PUSH_DOWN_ALL_COND}, {0}, {0}, {0}, {0}, {0}},
|
||||
/*LEFT*/ {{0}, {PUSH_DOWN_LEFT_FLT}, {PUSH_DOWN_ALL_COND}, {PUSH_DOWN_LEFT_FLT}, {PUSH_DOWN_LEFT_FLT}, {PUSH_DOWN_LEFT_FLT}},
|
||||
/*RIGHT*/ {{0}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_ALL_COND}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_RIGHT_FLT}, {PUSH_DOWN_RIGHT_FLT}},
|
||||
/*FULL*/ {{0}, {0}, {0}, {0}, {0}, {0}},
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static SLogicNode* optFindPossibleNode(SLogicNode* pNode, FMayBeOptimized func) {
|
||||
if (func(pNode)) {
|
||||
|
|
Loading…
Reference in New Issue