IITDBGroup / gprom

GProM is a middleware that adds support for provenance to database backends.
http://www.cs.iit.edu/%7edbgroup/research/gprom.php
Apache License 2.0
8 stars 5 forks source link

Reenactment with statement annotations fails if there is a DELETE #55

Open lordpretzel opened 5 years ago

lordpretzel commented 5 years ago

Try

REENACT WITH PROVENANCE STATEMENT ANNOTATIONS (DELETE FROM R WHERE B <> 1;);
Oracle SQL - Oracle:fga_user@ligeti.cs.iit.edu$REENACT WITH PROVENANCE STATEMENT ANNOTATIONS (DELETE FROM R WHERE B <> 1;);
INFO(parser.c:48) parse SQL:
REENACT WITH PROVENANCE STATEMENT ANNOTATIONS (DELETE FROM R WHERE B <> 1;);
INFO(parser_oracle.c:68) parse SQL:
REENACT WITH PROVENANCE STATEMENT ANNOTATIONS (DELETE FROM R WHERE B <> 1;);
INFO(analyze_oracle.c:1648) REENACT THIS:

{PROVENANCESTMT
  query: (
    {KEYVALUE
      key: 
      {DELETE
        schema: (
          {ATTRIBUTE_DEF
            dataType: DT_INT - 0
            attrName: "A"
          } 
          {ATTRIBUTE_DEF
            dataType: DT_INT - 0
            attrName: "B"
          }
        )
        deleteTableName: "R"
        cond: 
        {OPERATOR
          name: "<>"
          args: (
            {ATTRIBUTE_REFERENCE
              name: "B"
              fromClauseItem: 0
              attrPosition: 1
              outerLevelsUp: 0
              attrType: DT_INT - 0
            } 
            {CONSTANT
              constType: DT_INT - 0
              value 1
              isNull: false
            }
          )
        }
      }
      value: <>
    }
  )
  selectClause: (
  )
  dts: <>
  provType: PROV_NONE - 3
  inputType: PROV_INPUT_REENACT - 3
  transInfo: <>
  asOf: <>
  options: (
    {KEYVALUE
      key: 
      {CONSTANT
        constType: DT_STRING - 2
        value 'GENERATE_PROVENANCE'
        isNull: false
      }
      value: 
      {CONSTANT
        constType: DT_BOOL - 4
        value TRUE
        isNull: false
      }
    } 
    {KEYVALUE
      key: 
      {CONSTANT
        constType: DT_STRING - 2
        value 'STATEMENT_ANNOTATIONS'
        isNull: false
      }
      value: 
      {CONSTANT
        constType: DT_BOOL - 4
        value TRUE
        isNull: false
      }
    }
  )
  sumOpts: <>
}
INFO(translator_oracle.c:122) translate QB model

(
  {PROVENANCESTMT
    query: (
      {KEYVALUE
        key: 
        {DELETE
          schema: (
            {ATTRIBUTE_DEF
              dataType: DT_INT - 0
              attrName: "A"
            } 
            {ATTRIBUTE_DEF
              dataType: DT_INT - 0
              attrName: "B"
            }
          )
          deleteTableName: "R"
          cond: 
          {OPERATOR
            name: "<>"
            args: (
              {ATTRIBUTE_REFERENCE
                name: "B"
                fromClauseItem: 0
                attrPosition: 1
                outerLevelsUp: 0
                attrType: DT_INT - 0
              } 
              {CONSTANT
                constType: DT_INT - 0
                value 1
                isNull: false
              }
            )
          }
        }
        value: <>
      }
    )
    selectClause: (
    )
    dts: <>
    provType: PROV_NONE - 3
    inputType: PROV_INPUT_REENACT - 3
    transInfo: <>
    asOf: <>
    options: (
      {KEYVALUE
        key: 
        {CONSTANT
          constType: DT_STRING - 2
          value 'GENERATE_PROVENANCE'
          isNull: false
        }
        value: 
        {CONSTANT
          constType: DT_BOOL - 4
          value TRUE
          isNull: false
        }
      } 
      {KEYVALUE
        key: 
        {CONSTANT
          constType: DT_STRING - 2
          value 'STATEMENT_ANNOTATIONS'
          isNull: false
        }
        value: 
        {CONSTANT
          constType: DT_BOOL - 4
          value TRUE
          isNull: false
        }
      }
    )
    sumOpts: <>
  }
)
INFO(translate_update.c:176) translated delete:

Selection [(NOT ((B <> 1)))] [SELECT] (A B )(DT_INT DT_INT ) [0x12bf7ad4a]()
  TableAccess [R] [(null)] (A B )(DT_INT DT_INT ) [0x12bf7a87b](0x12bf7ad4a )

INFO(translator_oracle.c:127) result of translation overview is

ProvenanceComputation [PROVENANCE] ()() [0x12bf7a180]()
  Selection [(NOT ((B <> 1)))] [SELECT] (A B )(DT_INT DT_INT ) [0x12bf7ad4a](0x12bf7a180 )
    TableAccess [R] [(null)] (A B )(DT_INT DT_INT ) [0x12bf7a87b](0x12bf7ad4a )

INFO(prov_update_and_transaction.c:327) after adding projection to remove annotation attrs:

ProvenanceComputation [PROVENANCE] ()() [0x12bd7a25d]()
  Projection [A B ] [PROJECTION] (A B )(DT_INT DT_INT ) [0x12bd7cc97](0x12bd7a25d )
    Projection [A B FALSE ] [PROJECTION] (A B del )(DT_INT DT_INT DT_BOOL ) [0x12bd7c9c0](0x12bd7cc97 )

INFO(prov_update_and_transaction.c:280) after adding projection:
ProvenanceComputation [PROVENANCE] ()() [0x12bd7a25d]()
  Projection [A B ] [PROJECTION] (A B )(DT_INT DT_INT ) [0x12bd7cc97](0x12bd7a25d )
    Projection [A B FALSE ] [PROJECTION] (A B del )(DT_INT DT_INT DT_BOOL ) [0x12bd7c9c0](0x12bd7cc97 )

INFO(prov_update_and_transaction.c:148) reenacted statements to merge are:

Projection [A B ] [PROJECTION] (A B )(DT_INT DT_INT ) [0x12bd7cc97]()
  Projection [A B FALSE ] [PROJECTION] (A B del )(DT_INT DT_INT DT_BOOL ) [0x12bd7c9c0](0x12bd7cc97 )

INFO(prov_update_and_transaction.c:159) Replace table access operators in

Projection [A B ] [PROJECTION] (A B )(DT_INT DT_INT ) [0x12bd7cc97]()
  Projection [A B FALSE ] [PROJECTION] (A B del )(DT_INT DT_INT DT_BOOL ) [0x12bd7c9c0](0x12bd7cc97 )

INFO(prov_update_and_transaction.c:300) updates after merge:
ProvenanceComputation [PROVENANCE] ()() [0x12bd7a25d]()
  Projection [A B ] [PROJECTION] (A B )(DT_INT DT_INT ) [0x12bd7cc97](0x12bd7a25d )
    Projection [A B FALSE ] [PROJECTION] (A B del )(DT_INT DT_INT DT_BOOL ) [0x12bd7c9c0](0x12bd7cc97 )

INFO(prov_rewriter_main.c:151) treeified operator model:

ProvenanceComputation [PROVENANCE] ()() [0x12bd7a25d]()
  Projection [A B ] [PROJECTION] (A B )(DT_INT DT_INT ) [0x12bd7cc97](0x12bd7a25d )
    Projection [A B FALSE ] [PROJECTION] (A B del )(DT_INT DT_INT DT_BOOL ) [0x12bd7c9c0](0x12bd7cc97 )

ERROR (exception.c:145) exception was thrown (RECOVERABLE) pi_cs_main.c - 608 - <failed assertion: OP_LCHILD(op)
>

Error occured
(pi_cs_main.c:608) 
failed assertion: OP_LCHILD(op)

ABORT BASED ON EXCEPTION wipe <QUERY_CONTEXT>

INFO(mem_mgr.c:596) now in context PROCESS_CONTEXT with stack:

[0] - Context[PROCESS_CONTEXT 0x7fe17f900da0] - numChunks: 1 - BytesInCurChunk: 1048016 - LongLived: 0
[1048576] 
[1] - Context[DEFAULT_MEMORY_CONTEXT 0x7fe17ef000f0] - numChunks: 1 - BytesInCurChunk: 930857 - LongLived: 0
[1048576] 

Oracle SQL - Oracle:fga_user@ligeti.cs.iit.edu$