Closed pervazea closed 6 years ago
Re-running after pulling from Master 25 May 18, which provides better diagnostics, courtesy of changes by Matt B.
2018-05-25 14:55:19 [/home/proj/master_bin/peloton/test/network/prepare_stmt_test.cpp:41:PrepareStatementTest] INFO - [PrepareStatementTest] Connected to default_database 2018-05-25 14:55:19 [/home/proj/master_bin/peloton/src/codegen/lang/vectorized_loop.cpp:37:~VectorizedLoop] ERROR - You didn't call lang::VectorizedLoop::LoopEnd()! 2018-05-25 14:55:19 [/home/proj/master_bin/peloton/src/codegen/function_builder.cpp:139:~FunctionBuilder] ERROR - Missing call to FunctionBuilder::ReturnAndFinish() for function '_13_pipeline_0_serialWork_seqscan_output' 2018-05-25 14:55:19 [/home/proj/master_bin/peloton/src/codegen/function_builder.cpp:139:~FunctionBuilder] ERROR - Missing call to FunctionBuilder::ReturnAndFinish() for function '_13_plan' 2018-05-25 14:55:19 [/home/proj/master_bin/peloton/src/executor/plan_executor.cpp:175:ExecutePlan] ERROR - Error thrown during execution: No comparison rule between types: INTEGER and VARCHAR 2018-05-25 14:55:19 [/home/proj/master_bin/peloton/src/network/postgres_protocol_handler.cpp:824:ExecExecuteMessageGetResult] ERROR - Failed to execute: No comparison rule between types: INTEGER and VARCHAR 2018-05-25 14:55:19 [/home/proj/master_bin/peloton/test/network/prepare_stmt_test.cpp:76:PrepareStatementTest] INFO - [PrepareStatementTest] Exception occurred: No comparison rule between types: INTEGER and VARCHAR
/home/pakhtar/proj/master_bin/peloton/test/network/prepare_stmt_test.cpp:77: Failure Value of: false Actual: false Expected: true
codegen=..., row=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/expression/comparison_translator.cpp:37
this=0x7fffe8bfc3b0, codegen=..., expr=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/row_batch.cpp:130
at /home/pakhtar/proj/master_bin/peloton/src/codegen/operator/table_scan_translator.cpp:370
at /usr/include/c++/5/functional:1871
__args#0=...) at /usr/include/c++/5/functional:2267
at /home/pakhtar/proj/master_bin/peloton/src/codegen/row_batch.cpp:42
this=0x7fffe8bfc650, codegen=..., cb=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/row_batch.cpp:257
this=0x7fffe8bfc650, codegen=..., cb=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/row_batch.cpp:285
tid_start=0x7fffdc00cdd8, tid_end=0x7fffdc011828, selection_vector=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/operator/table_scan_translator.cpp:379
tid_end=0x7fffdc011828, tile_group_access=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/operator/table_scan_translator.cpp:290
this=0x7fffdc00bb48, codegen=..., tile_group_ptr=0x7fffdc00fcf8,
column_layouts=0x7fffdc00edc8, batch_size=1024, consumer=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/tile_group.cpp:62
this=0x7fffdc00bb40, codegen=..., table_ptr=0x7fffdc00e400,
tilegroup_start=0x0, tilegroup_end=0x0, batch_size=1024,
predicate_ptr=0x7fffdc00e668, num_predicates=0, consumer=...)
at /home/pakhtar/proj/master_bin/peloton/src/codegen/table.cpp:122
at /home/pakhtar/proj/master_bin/peloton/src/codegen/operator/table_scan_translator.cpp:194
codegen/type/typesystem.h:37 left is (gdb) print left (gdb) print left $17 = { type = { type_id = peloton::type::TypeId::INTEGER, nullable = true, ...
(gdb) print right $19 = { type_ = { type_id = peloton::type::TypeId::VARCHAR, ...
$21 = (peloton::expression::ComparisonExpression) {
Possible solutions discussed yesterday.
As discussed elsewhere, reason for failing is that libpqxx does not fill type fields in prepare message. We are already casting correctly for types that are known in the binding phase in the network code, but do not do type inference to fix the ones that do not specify types.
A workaround would be to use explicit PREPARE with types as SQL in this test case. I have tested that this resolves the issue.
fixed with #1408
Running with:
Master (as of approx. 23 May 2018)
With modified query_compiler.cpp
make check fails, in the prepare_stmt_test
I had, in a different src tree, made some fixes for marshaling types in binary, and was testing to see if they worked, which led to this bug. Since none of my fixes are present, codegen is enabled for VALUE_PARAMETERS, and the test in question does not trigger binary marshaling, this implies something missing or wrong in the codegen support.
See below for available data collected:
prepare_stmt_test.cpp:41:PrepareStatementTest] INFO - [PrepareStatementTest] Connected to default_database 39: prepare_stmt_test: /home/pakhtar/proj/master_bin/peloton/src/codegen/lang/vectorizedloop.cpp:36: peloton::codegen::lang::VectorizedLoop::~VectorizedLoop(): Assertion `(ended && "You didn't call lang::VectorizedLoop::LoopEnd()!")' failed. 1/1 Test #39: prepare_stmt_test ................***Exception: Other 0.32 sec
0% tests passed, 1 tests failed out of 1