private void validateTableCompatibility ( String theName , String otherName , Table theTable , Table otherTable , FailureMessage failureMessage ) { if ( theTable . getIsdred ( ) != otherTable . getIsdred ( ) ) { failureMessage . addReason ( "To swap table " + theName + " with table " + otherName + " both tables must be DR enabled or both tables must not be DR enabled." ) ; } if ( theTable . getIsreplicated ( ) != otherTable . getIsreplicated ( ) ) { failureMessage . addReason ( "one table is partitioned and the other is not" ) ; } if ( theTable . getTuplelimit ( ) != otherTable . getTuplelimit ( ) ) { failureMessage . addReason ( "the tables differ in the LIMIT PARTITION ROWS constraint" ) ; } if ( ( theTable . getMaterializer ( ) != null || ! theTable . getMvhandlerinfo ( ) . isEmpty ( ) ) || ( otherTable . getMaterializer ( ) != null || ! otherTable . getMvhandlerinfo ( ) . isEmpty ( ) ) ) { failureMessage . addReason ( "one or both of the tables is actually a view" ) ; } StringBuilder viewNames = new StringBuilder ( ) ; if ( viewsDependOn ( theTable , viewNames ) ) { failureMessage . addReason ( theName + " is referenced in views " + viewNames . toString ( ) ) ; } viewNames . setLength ( 0 ) ; if ( viewsDependOn ( otherTable , viewNames ) ) { failureMessage . addReason ( otherName + " is referenced in views " + viewNames . toString ( ) ) ; } }
Flag any issues of incompatibility between the two table operands of a swap by appending error details to a feedback buffer . These details and possibly others should get attached to a PlannerErrorException s message by the caller .