On Another Level: How to Debug Compiling Query Engines
Timo Kersten and Thomas Neumann Technical University of Munich
On Another Level: How to Debug Compiling Query Engines
kersten@in.tum.de | DBTEST ‘20 1
On Another Level: How to Debug Compiling Query Engines Timo Kersten - - PowerPoint PPT Presentation
On Another Level: How to Debug Compiling Query Engines On Another Level: How to Debug Compiling Query Engines Timo Kersten and Thomas Neumann Technical University of Munich 1 kersten@in.tum.de | DBTEST 20 On Another Level: How to Debug
On Another Level: How to Debug Compiling Query Engines
Timo Kersten and Thomas Neumann Technical University of Munich
kersten@in.tum.de | DBTEST ‘20 1
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20 2
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20 3
Runtime System
Query Executable
100 1010 01
Code Generator
R
Query Plan Code Generation
Runtime Compile Time
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20 4
Runtime System
Query Executable
100 1010 01
Code Generator
R
Query Plan Code Generation
Runtime Compile Time
%8 = rotr i64 %7, 32
1 2
%9 = xor i64 %6, %8
1 3
%10 = call i64 TextRuntime::hash(%4924, %9)
1 4
%11 = call ptr HashTable::lookup(%ht, %10)
1 5
%12 = isnotnull ptr %11
1 6
condbr %12 %block4 %block1 void JoinOperator::consume(ConsumerScope scope) # probe side consume hashTable.find(keys, scope, entry -> { ConsumerScope nestedScope(scope) unpack(leftValues, entry, nestedScope) parent.consume(nestedScope) })
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20
5
%8 = rotr i64 %7, 32
1 2
%9 = xor i64 %6, %8
1 3
%10 = call i64 TextRuntime::hash(%4924, %9)
1 4
%11 = call ptr HashTable::lookup(%ht, %10)
1 5
%12 = isnotnull ptr %11
1 6
condbr %12 %block4 %block1 void JoinOperator::consume(ConsumerScope scope) # probe side consume hashTable.find(keys, scope, entry -> { ConsumerScope nestedScope(scope) unpack(leftValues, entry, nestedScope) parent.consume(nestedScope) })
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20
6
Runtime System
Query Executable
100 1010 01
Code Generator
R
Query Plan Code Generation
Runtime Compile Time
10 101 01
*
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20 7
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20
8
> tbreak IRProgram.cpp:972 if instr == 5038
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20
9
On Another Level: How to Debug Compiling Query Engines kersten@in.tum.de | DBTEST ‘20 10
%8 = rotr i64 %7, 32
1 2
%9 = xor i64 %6, %8
1 3
%10 = call i64 TextRuntime::hash(%4924, %9)
1 4
%11 = call ptr HashTable::lookup(%ht, %10)
1 5
%12 = isnotnull ptr %11
1 6
condbr %12 %block4 %block1 void JoinOperator::consume(ConsumerScope scope) # probe side consume hashTable.find(keys, scope, entry -> { ConsumerScope nestedScope(scope) unpack(leftValues, entry, nestedScope) parent.consume(nestedScope) })
Runtime System
Query Executable
100 1010 01
Code Generator
R
Query Plan Code Generation
Runtime Compile Time
10 101 01