Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-1278

CalciteSignature's ColumnMetaData for DELETE should be same as INSERT

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.7.0
    • 1.9.0
    • core
    • None

    Description

      DELETE, as one type of TableModify operation, has the same RelDataType as INSERT, which is RelRecordType(ROWCOUNT INTEGER). But during "prepare" stage, the corresponding ColumnMetaData info becomes inconsistent, due to:

            preparedResult = preparingStmt.prepareSql(
                sqlNode, Object.class, validator, true);
            switch (sqlNode.getKind()) {
            case INSERT:
            case EXPLAIN:
              // FIXME: getValidatedNodeType is wrong for DML
              x = RelOptUtil.createDmlRowType(sqlNode.getKind(), typeFactory);
              break;
            default:
              x = validator.getValidatedNodeType(sqlNode);
            }
      

      I've noticed that there is a "FIXME: getValidatedNodeType is wrong for DML". Guess that's the root cause, and RelOptUtil.createDmlRowType() is probably a workaround? For now, we can simply include DELETE and other TableModify Operation in the first switch case.

      Attachments

        1. CALCITE-1278.patch
          11 kB
          Wei Xue

        Activity

          People

            maryannxue Wei Xue
            maryannxue Wei Xue
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: