Skip to content
  • Allen Lai's avatar
    8ae45ffe
    Bug#21076238 ASSERT !CURSOR->INDEX->IS_COMMITTED(), GIS UPDATE, · 8ae45ffe
    Allen Lai authored
    
    ROW_INS_SEC_INDEX_ENTRY_BY_MO
    
    This bug has 2 issues:
    Issue 1: Same as bug#20734998, partial update cause the problem. The
    different is there're more that 1 update
    in a transaction. For example, in trx1, we execute update table t1, then
    update table t2. Update t1 is ok, but update t2 hit a dup key error, so
    we need to rollback. Since the patch for bug#20734998 will set last
    updated spatial index to NULL before every update, so, update on t1 will
    be skipped. The solution is we need to search spatial index twice, one
    for finding an undel-marked rec, if can't find it, we do the second
    round search for finding a del-marked rec. And we will do some
    optimization on this later.
    Issue 2: Purge found a undel-marked rec to purge, and this shouldn't
    happen. It's caused by the spatial index is not sync with cluster index.
    And the root cause is, we generate wrong mbr for externally stored
    geometry field in function row_upd_changes_ord_field_binary_func. And
    this will cause we skipped the spatial index on this field in update.
    The solution is read the whole field data from cluster row to generate
    mbr. This issue is a flaw of bug#20313067 fix.
    
    Reviewed-by: default avatarJimmy <Yang&lt;jimmy.yang@oracle.com>
    RB: 9223
    8ae45ffe
    Bug#21076238 ASSERT !CURSOR->INDEX->IS_COMMITTED(), GIS UPDATE,
    Allen Lai authored
    
    ROW_INS_SEC_INDEX_ENTRY_BY_MO
    
    This bug has 2 issues:
    Issue 1: Same as bug#20734998, partial update cause the problem. The
    different is there're more that 1 update
    in a transaction. For example, in trx1, we execute update table t1, then
    update table t2. Update t1 is ok, but update t2 hit a dup key error, so
    we need to rollback. Since the patch for bug#20734998 will set last
    updated spatial index to NULL before every update, so, update on t1 will
    be skipped. The solution is we need to search spatial index twice, one
    for finding an undel-marked rec, if can't find it, we do the second
    round search for finding a del-marked rec. And we will do some
    optimization on this later.
    Issue 2: Purge found a undel-marked rec to purge, and this shouldn't
    happen. It's caused by the spatial index is not sync with cluster index.
    And the root cause is, we generate wrong mbr for externally stored
    geometry field in function row_upd_changes_ord_field_binary_func. And
    this will cause we skipped the spatial index on this field in update.
    The solution is read the whole field data from cluster row to generate
    mbr. This issue is a flaw of bug#20313067 fix.
    
    Reviewed-by: default avatarJimmy <Yang&lt;jimmy.yang@oracle.com>
    RB: 9223
Loading