database-stream-processor
database-stream-processor copied to clipboard
[JIT] Jit compiler panic
Yet another kind of panic:
thread 'main' panicked at 'assertion failed: `(left != right)`
left: `String`,
right: `String`', crates/dataflow-jit/src/ir/validate.rs:970:17
JSON:
{
"nodes" : {
"11797" : {
"Source" : {
"layout" : 1,
"table" : "T"
}
},
"11841" : {
"Map" : {
"input" : 11797,
"map_fn" : {
"args" : [ {
"id" : 1,
"layout" : 1,
"flags" : "input"
}, {
"id" : 2,
"layout" : 2,
"flags" : "output"
} ],
"ret" : "Unit",
"entry_block" : 1,
"blocks" : {
"1" : {
"id" : 1,
"body" : [ [ 3, {
"Load" : {
"source" : 1,
"source_layout" : 3,
"column" : 3,
"column_type" : "String"
}
} ], [ 4, {
"Constant" : {
"String" : " "
}
} ], [ 5, {
"Constant" : {
"Bool" : false
}
} ], [ 6, {
"BinOp" : {
"lhs" : 3,
"rhs" : 4,
"kind" : "Or",
"operand_ty" : "String"
}
} ], [ 7, {
"Load" : {
"source" : 1,
"source_layout" : 3,
"column" : 3,
"column_type" : "String"
}
} ], [ 8, {
"Constant" : {
"Bool" : false
}
} ], [ 9, {
"BinOp" : {
"lhs" : 6,
"rhs" : 7,
"kind" : "Or",
"operand_ty" : "String"
}
} ], [ 10, {
"Store" : {
"target" : 2,
"target_layout" : 2,
"column" : 0,
"value" : {
"Expr" : 9
},
"value_type" : "String"
}
} ] ],
"terminator" : {
"Return" : {
"value" : {
"Imm" : "Unit"
}
}
}
}
}
},
"layout" : 2
}
},
"11843" : {
"Sink" : {
"input" : 11841,
"query" : "CREATE VIEW V AS SELECT T.COL4 || ' ' || T.COL4 FROM T"
}
}
},
"layouts" : {
"1" : {
"columns" : [ {
"nullable" : false,
"ty" : "I32"
}, {
"nullable" : false,
"ty" : "F64"
}, {
"nullable" : false,
"ty" : "Bool"
}, {
"nullable" : false,
"ty" : "String"
}, {
"nullable" : true,
"ty" : "I32"
}, {
"nullable" : true,
"ty" : "F64"
} ]
},
"2" : {
"columns" : [ {
"nullable" : false,
"ty" : "String"
} ]
},
"3" : {
"columns" : [ {
"nullable" : false,
"ty" : "I32"
}, {
"nullable" : false,
"ty" : "F64"
}, {
"nullable" : false,
"ty" : "Bool"
}, {
"nullable" : false,
"ty" : "String"
}, {
"nullable" : true,
"ty" : "I32"
}, {
"nullable" : true,
"ty" : "F64"
} ]
}
}
}
It's because you're trying to perform logical or on strings which doesn't exist, you probably want to call the @dbsp.str.concat_clone()
and @dbsp.str.concat()
functions
Here is am improved JSON program, which causes a different panic, similar to #386
{
"nodes" : {
"78" : {
"Source" : {
"layout" : 1,
"table" : "T"
}
},
"123" : {
"Map" : {
"input" : 78,
"map_fn" : {
"args" : [ {
"id" : 1,
"layout" : 1,
"flags" : "input"
}, {
"id" : 2,
"layout" : 2,
"flags" : "output"
} ],
"ret" : "Unit",
"entry_block" : 1,
"blocks" : {
"1" : {
"id" : 1,
"body" : [ [ 3, {
"Load" : {
"source" : 1,
"source_layout" : 3,
"column" : 3,
"column_type" : "String"
}
} ], [ 4, {
"Constant" : {
"String" : " "
}
} ], [ 5, {
"Call" : {
"function" : "dbsp.str.concat_clone",
"args" : [ 3, 4 ],
"arg_types" : [ {
"Scalar" : "String"
}, {
"Scalar" : "String"
} ],
"ret_ty" : "String"
}
} ], [ 6, {
"Load" : {
"source" : 1,
"source_layout" : 3,
"column" : 3,
"column_type" : "String"
}
} ], [ 7, {
"Call" : {
"function" : "dbsp.str.concat_clone",
"args" : [ 5, 6 ],
"arg_types" : [ {
"Scalar" : "String"
}, {
"Scalar" : "String"
} ],
"ret_ty" : "String"
}
} ], [ 8, {
"Store" : {
"target" : 2,
"target_layout" : 2,
"column" : 0,
"value" : {
"Expr" : 7
},
"value_type" : "String"
}
} ] ],
"terminator" : {
"Return" : {
"value" : {
"Imm" : "Unit"
}
}
}
}
}
},
"output_layout" : {
"Set" : 2
},
"input_layout" : {
"Set" : 1
}
}
},
"125" : {
"Sink" : {
"input" : 123,
"query" : "CREATE VIEW V AS SELECT T.COL4 || ' ' || T.COL4 FROM T"
}
}
},
"layouts" : {
"1" : {
"columns" : [ {
"nullable" : false,
"ty" : "I32"
}, {
"nullable" : false,
"ty" : "F64"
}, {
"nullable" : false,
"ty" : "Bool"
}, {
"nullable" : false,
"ty" : "String"
}, {
"nullable" : true,
"ty" : "I32"
}, {
"nullable" : true,
"ty" : "F64"
} ]
},
"2" : {
"columns" : [ {
"nullable" : false,
"ty" : "String"
} ]
},
"3" : {
"columns" : [ {
"nullable" : false,
"ty" : "I32"
}, {
"nullable" : false,
"ty" : "F64"
}, {
"nullable" : false,
"ty" : "Bool"
}, {
"nullable" : false,
"ty" : "String"
}, {
"nullable" : true,
"ty" : "I32"
}, {
"nullable" : true,
"ty" : "F64"
} ]
}
}
}