vmware-archive / database-stream-processor

Streaming and Incremental Computation Framework
Other
222 stars 20 forks source link

[JIT] Jit compiler panic #369

Closed mihaibudiu closed 1 year ago

mihaibudiu commented 1 year ago

Yet a third kind of panic: thread 'main' panicked at 'not yet implemented', crates/dataflow-jit/src/ir/validate.rs:138:22 JSON:

{
  "nodes" : {
    "2873" : {
      "Source" : {
        "layout" : 1,
        "table" : "T"
      }
    },
    "3072" : {
      "Map" : {
        "input" : 2873,
        "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" : 0,
                  "column_type" : "I32"
                }
              } ], [ 4, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 2,
                  "column" : 0,
                  "value" : {
                    "Expr" : 3
                  },
                  "value_type" : "I32"
                }
              } ], [ 5, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 3,
                  "column" : 2,
                  "column_type" : "Bool"
                }
              } ], [ 6, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 2,
                  "column" : 1,
                  "value" : {
                    "Expr" : 5
                  },
                  "value_type" : "Bool"
                }
              } ] ],
              "terminator" : {
                "Return" : {
                  "value" : {
                    "Imm" : "Unit"
                  }
                }
              }
            }
          }
        },
        "layout" : 2
      }
    },
    "3081" : {
      "IndexWith" : {
        "input" : 3072,
        "index_fn" : {
          "args" : [ {
            "id" : 1,
            "layout" : 2,
            "flags" : "input"
          }, {
            "id" : 2,
            "layout" : 2,
            "flags" : "output"
          }, {
            "id" : 3,
            "layout" : 2,
            "flags" : "output"
          } ],
          "ret" : "Unit",
          "entry_block" : 1,
          "blocks" : {
            "1" : {
              "id" : 1,
              "body" : [ [ 4, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 4,
                  "column" : 0,
                  "column_type" : "I32"
                }
              } ], [ 5, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 2,
                  "column" : 0,
                  "value" : {
                    "Expr" : 4
                  },
                  "value_type" : "I32"
                }
              } ], [ 6, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 4,
                  "column" : 1,
                  "column_type" : "Bool"
                }
              } ], [ 7, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 2,
                  "column" : 1,
                  "value" : {
                    "Expr" : 6
                  },
                  "value_type" : "Bool"
                }
              } ], [ 8, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 4,
                  "column" : 0,
                  "column_type" : "I32"
                }
              } ], [ 9, {
                "Store" : {
                  "target" : 3,
                  "target_layout" : 2,
                  "column" : 0,
                  "value" : {
                    "Expr" : 8
                  },
                  "value_type" : "I32"
                }
              } ], [ 10, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 4,
                  "column" : 1,
                  "column_type" : "Bool"
                }
              } ], [ 11, {
                "Store" : {
                  "target" : 3,
                  "target_layout" : 2,
                  "column" : 1,
                  "value" : {
                    "Expr" : 10
                  },
                  "value_type" : "Bool"
                }
              } ] ],
              "terminator" : {
                "Return" : {
                  "value" : {
                    "Imm" : "Unit"
                  }
                }
              }
            }
          }
        },
        "key_layout" : 5,
        "value_layout" : 2
      }
    },
    "3083" : {
      "Fold" : {
        "input" : 3081,
        "init" : {
          "rows" : [ {
            "NonNull" : {
              "I64" : 0
            }
          } ]
        },
        "step_fn" : {
          "args" : [ {
            "id" : 1,
            "layout" : 6,
            "flags" : "input"
          }, {
            "id" : 2,
            "layout" : 2,
            "flags" : "input"
          }, {
            "id" : 3,
            "layout" : 7,
            "flags" : "input"
          }, {
            "id" : 4,
            "layout" : 6,
            "flags" : "output"
          } ],
          "ret" : "Unit",
          "entry_block" : 1,
          "blocks" : {
            "1" : {
              "id" : 1,
              "body" : [ [ 6, {
                "Load" : {
                  "source" : 5,
                  "source_layout" : 8,
                  "column" : 0,
                  "column_type" : "I64"
                }
              } ], [ 8, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 6,
                  "column" : 0,
                  "column_type" : "I64"
                }
              } ], [ 9, {
                "Constant" : {
                  "I64" : 1
                }
              } ], [ 10, {
                "Constant" : {
                  "Bool" : false
                }
              } ], [ 11, {
                "BinOp" : {
                  "lhs" : 9,
                  "rhs" : 5,
                  "kind" : "Mul",
                  "operand_ty" : "I64"
                }
              } ], [ 12, {
                "Constant" : {
                  "Bool" : false
                }
              } ], [ 13, {
                "BinOp" : {
                  "lhs" : 8,
                  "rhs" : 11,
                  "kind" : "Add",
                  "operand_ty" : "I64"
                }
              } ], [ 14, {
                "Store" : {
                  "target" : 4,
                  "target_layout" : 6,
                  "column" : 0,
                  "value" : {
                    "Expr" : 7
                  },
                  "value_type" : "I64"
                }
              } ] ],
              "terminator" : {
                "Return" : {
                  "value" : {
                    "Imm" : "Unit"
                  }
                }
              }
            }
          }
        },
        "finish_fn" : {
          "args" : [ {
            "id" : 1,
            "layout" : 6,
            "flags" : "input"
          }, {
            "id" : 2,
            "layout" : 6,
            "flags" : "output"
          } ],
          "ret" : "Unit",
          "entry_block" : 1,
          "blocks" : {
            "1" : {
              "id" : 1,
              "body" : [ [ 4, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 6,
                  "column" : 0,
                  "column_type" : "I64"
                }
              } ], [ 5, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 6,
                  "column" : 0,
                  "value" : {
                    "Expr" : 3
                  },
                  "value_type" : "I64"
                }
              } ] ],
              "terminator" : {
                "Return" : {
                  "value" : {
                    "Imm" : "Unit"
                  }
                }
              }
            }
          }
        },
        "acc_layout" : 6,
        "step_layout" : 6,
        "output_layout" : 6
      }
    },
    "3094" : {
      "Map" : {
        "input" : 3083,
        "map_fn" : {
          "args" : [ {
            "id" : 1,
            "layout" : 2,
            "flags" : "input"
          }, {
            "id" : 2,
            "layout" : 6,
            "flags" : "input"
          }, {
            "id" : 3,
            "layout" : 9,
            "flags" : "output"
          } ],
          "ret" : "Unit",
          "entry_block" : 1,
          "blocks" : {
            "1" : {
              "id" : 1,
              "body" : [ [ 4, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 10,
                  "column" : 0,
                  "column_type" : "I32"
                }
              } ], [ 5, {
                "Store" : {
                  "target" : 3,
                  "target_layout" : 9,
                  "column" : 0,
                  "value" : {
                    "Expr" : 4
                  },
                  "value_type" : "I32"
                }
              } ], [ 6, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 10,
                  "column" : 1,
                  "column_type" : "Bool"
                }
              } ], [ 7, {
                "Store" : {
                  "target" : 3,
                  "target_layout" : 9,
                  "column" : 1,
                  "value" : {
                    "Expr" : 6
                  },
                  "value_type" : "Bool"
                }
              } ], [ 8, {
                "Load" : {
                  "source" : 2,
                  "source_layout" : 11,
                  "column" : 0,
                  "column_type" : "I64"
                }
              } ], [ 9, {
                "Store" : {
                  "target" : 3,
                  "target_layout" : 9,
                  "column" : 2,
                  "value" : {
                    "Expr" : 8
                  },
                  "value_type" : "I64"
                }
              } ] ],
              "terminator" : {
                "Return" : {
                  "value" : {
                    "Imm" : "Unit"
                  }
                }
              }
            }
          }
        },
        "layout" : 9
      }
    },
    "3106" : {
      "Map" : {
        "input" : 3094,
        "map_fn" : {
          "args" : [ {
            "id" : 1,
            "layout" : 9,
            "flags" : "input"
          }, {
            "id" : 2,
            "layout" : 12,
            "flags" : "output"
          } ],
          "ret" : "Unit",
          "entry_block" : 1,
          "blocks" : {
            "1" : {
              "id" : 1,
              "body" : [ [ 3, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 13,
                  "column" : 0,
                  "column_type" : "I32"
                }
              } ], [ 4, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 12,
                  "column" : 0,
                  "value" : {
                    "Expr" : 3
                  },
                  "value_type" : "I32"
                }
              } ], [ 5, {
                "Load" : {
                  "source" : 1,
                  "source_layout" : 13,
                  "column" : 2,
                  "column_type" : "I64"
                }
              } ], [ 6, {
                "Store" : {
                  "target" : 2,
                  "target_layout" : 12,
                  "column" : 1,
                  "value" : {
                    "Expr" : 5
                  },
                  "value_type" : "I64"
                }
              } ] ],
              "terminator" : {
                "Return" : {
                  "value" : {
                    "Imm" : "Unit"
                  }
                }
              }
            }
          }
        },
        "layout" : 12
      }
    },
    "3108" : {
      "Sink" : {
        "input" : 3106,
        "query" : "CREATE VIEW V AS SELECT COL1, COUNT(col2) FROM T GROUP BY COL1, COL3"
      }
    }
  },
  "layouts" : {
    "12" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "I64"
      } ]
    },
    "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"
      } ]
    },
    "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"
      } ]
    },
    "11" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I64"
      } ]
    },
    "6" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I64"
      } ]
    },
    "9" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "Bool"
      }, {
        "nullable" : false,
        "ty" : "I64"
      } ]
    },
    "13" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "Bool"
      }, {
        "nullable" : false,
        "ty" : "I64"
      } ]
    },
    "2" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "Bool"
      } ]
    },
    "5" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "Bool"
      } ]
    },
    "4" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "Bool"
      } ]
    },
    "10" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I32"
      }, {
        "nullable" : false,
        "ty" : "Bool"
      } ]
    },
    "7" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I64"
      } ]
    },
    "8" : {
      "columns" : [ {
        "nullable" : false,
        "ty" : "I64"
      } ]
    }
  }
}
mihaibudiu commented 1 year ago

Here is a second failing program with this panic, much simpler:

{
  "nodes" : {
    "6335" : {
      "Source" : {
        "layout" : 1,
        "table" : "T"
      }
    },
    "6341" : {
      "Sum" : {
        "inputs" : [ 6335, 6335 ]
      }
    },
    "6342" : {
      "Distinct" : {
        "input" : 6341
      }
    },
    "6343" : {
      "Sink" : {
        "input" : 6342,
        "query" : "CREATE VIEW V AS (SELECT * FROM T) UNION (SELECT * 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"
      } ]
    }
  }
}