StatementDML.java (hsqldb-2.6.0) | : | StatementDML.java (hsqldb-2.6.1) | ||
---|---|---|---|---|
skipping to change at line 57 | skipping to change at line 57 | |||
import org.hsqldb.result.ResultConstants; | import org.hsqldb.result.ResultConstants; | |||
import org.hsqldb.result.ResultMetaData; | import org.hsqldb.result.ResultMetaData; | |||
import org.hsqldb.trigger.Trigger; | import org.hsqldb.trigger.Trigger; | |||
import org.hsqldb.types.Type; | import org.hsqldb.types.Type; | |||
import org.hsqldb.types.Types; | import org.hsqldb.types.Types; | |||
/** | /** | |||
* Implementation of Statement for DML statements.<p> | * Implementation of Statement for DML statements.<p> | |||
* | * | |||
* @author Fred Toussi (fredt@users dot sourceforge.net) | * @author Fred Toussi (fredt@users dot sourceforge.net) | |||
* @version 2.6.0 | * @version 2.6.1 | |||
* @since 1.9.0 | * @since 1.9.0 | |||
*/ | */ | |||
// support for MERGE statement originally contributed by Justin Spadea (jzs9783@ users dot sourceforge.net) | // support for MERGE statement originally contributed by Justin Spadea (jzs9783@ users dot sourceforge.net) | |||
public class StatementDML extends StatementDMQL { | public class StatementDML extends StatementDMQL { | |||
Expression[] targets; | Expression[] targets; | |||
boolean isTruncate; | boolean isTruncate; | |||
boolean isMergeDeleteFirst; | boolean isMergeDeleteFirst; | |||
skipping to change at line 1584 | skipping to change at line 1584 | |||
it.setCurrent(newData); | it.setCurrent(newData); | |||
if (!filter.testCondition(session)) { | if (!filter.testCondition(session)) { | |||
throw Error.error(ErrorCode.X_44000); | throw Error.error(ErrorCode.X_44000); | |||
} | } | |||
} | } | |||
for (int i = 0, size = table.checkConstraints.length; i < size; i++) { | for (int i = 0, size = table.checkConstraints.length; i < size; i++) { | |||
table.checkConstraints[i].checkInsert(session, table, newData, | table.checkConstraints[i].checkInsert(session, table, newData, | |||
oldData == null); | oldData); | |||
} | } | |||
if (!session.database.isReferentialIntegrity()) { | if (!session.database.isReferentialIntegrity()) { | |||
return; | return; | |||
} | } | |||
for (int i = 0, size = table.fkConstraints.length; i < size; i++) { | for (int i = 0, size = table.fkConstraints.length; i < size; i++) { | |||
boolean check = oldData == null; | boolean check = oldData == null; | |||
Constraint c = table.fkConstraints[i]; | Constraint c = table.fkConstraints[i]; | |||
int[] fkColumns = c.getRefColumns(); | ||||
if (!check) { | if (!check) { | |||
check = ArrayUtil.haveCommonElement(c.getRefColumns(), | check = ArrayUtil.haveCommonElement(fkColumns, updatedColumns); | |||
updatedColumns); | ||||
} | } | |||
if (check) { | if (check) { | |||
c.checkInsert(session, table, newData, oldData == null); | c.checkInsert(session, table, newData, oldData); | |||
} | } | |||
} | } | |||
} | } | |||
static void performReferentialActions(Session session, | static void performReferentialActions(Session session, | |||
RowSetNavigatorDataChange navigator, | RowSetNavigatorDataChange navigator, | |||
Row row, Object[] data, | Row row, Object[] data, | |||
int[] changedCols, HashSet path, | int[] changedCols, HashSet path, | |||
boolean deleteCascade) { | boolean deleteCascade) { | |||
End of changes. 5 change blocks. | ||||
7 lines changed or deleted | 7 lines changed or added |