Class DMLWriteGeneratedColumnsResultSet

    • Field Detail

      • aiCache

        protected DataValueDescriptor[] aiCache
        keeps track of autoincrement values that are generated by getSetAutoincrementValues.
      • identitySequenceUUIDString

        protected java.lang.String identitySequenceUUIDString
      • autoGeneratedKeysResultSet

        protected ResultSet autoGeneratedKeysResultSet
      • autoGeneratedKeysColumnIndexes

        protected int[] autoGeneratedKeysColumnIndexes
      • autoincrementGenerated

        protected boolean autoincrementGenerated
        If set to true, implies that Derby has generated autoincrement values for this (rep)resultset. During refresh for example, the autoincrement values are not generated but sent from the source to target or vice-versa.
      • identityVal

        protected long identityVal
      • setIdentity

        protected boolean setIdentity
    • Method Detail

      • getSetAutoincrementValue

        public NumberDataValue getSetAutoincrementValue​(int columnPosition,
                                                        long increment)
                                                 throws StandardException
        getSetAutoincrementValue will get the autoincrement value of the columnPosition specified for the target table. If increment is non-zero we will also update the autoincrement value.
        Parameters:
        columnPosition - position of the column in the table (1-based)
        increment - amount of increment.
        Throws:
        StandardException - if anything goes wrong.
      • saveAIcacheInformation

        public void saveAIcacheInformation​(java.lang.String schemaName,
                                           java.lang.String tableName,
                                           java.lang.String[] columnNames)
                                    throws StandardException
        Throws:
        StandardException
      • verifyAutoGeneratedColumnsIndexes

        private void verifyAutoGeneratedColumnsIndexes​(int[] columnIndexes,
                                                       UUID targetUUID)
                                                throws StandardException
        Verify that the auto-generated columns list (by position) has valid column positions for the table.
        Throws:
        StandardException
      • verifyAutoGeneratedColumnsNames

        private void verifyAutoGeneratedColumnsNames​(java.lang.String[] columnNames,
                                                     UUID targetUUID)
                                              throws StandardException
        Verify that the auto-generated columns list (by name) has valid column names for the table. If all the column names are valid, convert column names array to corresponding column positions array Save that column positions array in activation. We do this to simplify the rest of the logic(it only has to deal with column positions here after).
        Throws:
        StandardException - Thrown on error if invalid column name in the list.
      • verifyAutoGenColumn

        private boolean verifyAutoGenColumn​(ColumnDescriptor cd)
        Check that the received ColumnDescriptor corresponds to a column for which it is possible to fetch auto-generated keys.
      • generatedColumnPositionsArray

        private int[] generatedColumnPositionsArray​(UUID targetUUID)
                                             throws StandardException
        If user didn't provide columns list for auto-generated columns, then only include columns with auto-generated values in the resultset. Those columns would be ones with default value defined.
        Throws:
        StandardException
      • uniqueColumnPositionArray

        private int[] uniqueColumnPositionArray​(int[] columnIndexes,
                                                UUID targetUUID)
                                         throws StandardException
        Remove duplicate columns from the array. Then use this array to generate a sub-set of insert resultset to be returned for JDBC3.0 getGeneratedKeys() call.
        Throws:
        StandardException
      • getCompactRow

        protected ExecRow getCompactRow​(ExecRow inputRow,
                                        int[] columnIndexes)
                                 throws StandardException
        Take the input row and return a new compact ExecRow using the column positions provided in columnIndexes. Copies references, no cloning.
        Throws:
        StandardException