Class Insert

All Implemented Interfaces:
ResultTarget

public final class Insert extends CommandWithValues implements ResultTarget
This class represents the statement INSERT
  • Field Details

    • table

      private Table table
    • columns

      private Column[] columns
    • query

      private Query query
    • rowNumber

      private long rowNumber
    • insertFromSelect

      private boolean insertFromSelect
    • overridingSystem

      private Boolean overridingSystem
    • duplicateKeyAssignmentMap

      private HashMap<Column,Expression> duplicateKeyAssignmentMap
      For MySQL-style INSERT ... ON DUPLICATE KEY UPDATE ....
    • onDuplicateKeyRow

      private Value[] onDuplicateKeyRow
    • ignore

      private boolean ignore
      For MySQL-style INSERT IGNORE and PostgreSQL-style ON CONFLICT DO NOTHING.
    • deltaChangeCollector

      private ResultTarget deltaChangeCollector
    • deltaChangeCollectionMode

      private DataChangeDeltaTable.ResultOption deltaChangeCollectionMode
  • Constructor Details

  • Method Details

    • setCommand

      public void setCommand(Command command)
      Description copied from class: Prepared
      Set the command.
      Overrides:
      setCommand in class Prepared
      Parameters:
      command - the new command
    • getTable

      public Table getTable()
      Description copied from class: DataChangeStatement
      Return the target table.
      Specified by:
      getTable in class DataChangeStatement
      Returns:
      the target table
    • setTable

      public void setTable(Table table)
    • setColumns

      public void setColumns(Column[] columns)
    • setIgnore

      public void setIgnore(boolean ignore)
      Sets MySQL-style INSERT IGNORE mode or PostgreSQL-style ON CONFLICT DO NOTHING.
      Parameters:
      ignore - ignore duplicates
    • setQuery

      public void setQuery(Query query)
    • setOverridingSystem

      public void setOverridingSystem(Boolean overridingSystem)
    • addAssignmentForDuplicate

      public void addAssignmentForDuplicate(Column column, Expression expression)
      Keep a collection of the columns to pass to update if a duplicate key happens, for MySQL-style INSERT ... ON DUPLICATE KEY UPDATE ....
      Parameters:
      column - the column
      expression - the expression
    • update

      public long update(ResultTarget deltaChangeCollector, DataChangeDeltaTable.ResultOption deltaChangeCollectionMode)
      Description copied from class: DataChangeStatement
      Execute the statement with specified delta change collector and collection mode.
      Specified by:
      update in class DataChangeStatement
      Parameters:
      deltaChangeCollector - target result
      deltaChangeCollectionMode - collection mode
      Returns:
      the update count
    • insertRows

      private long insertRows()
    • addRow

      public void addRow(Value... values)
      Description copied from interface: ResultTarget
      Add the row to the result set.
      Specified by:
      addRow in interface ResultTarget
      Parameters:
      values - the values
    • getRowCount

      public long getRowCount()
      Description copied from interface: ResultTarget
      Get the number of rows.
      Specified by:
      getRowCount in interface ResultTarget
      Returns:
      the number of rows
    • limitsWereApplied

      public void limitsWereApplied()
      Description copied from interface: ResultTarget
      A hint that sorting, offset and limit may be ignored by this result because they were applied during the query. This is useful for WITH TIES clause because result may contain tied rows above limit.
      Specified by:
      limitsWereApplied in interface ResultTarget
    • getPlanSQL

      public String getPlanSQL(int sqlFlags)
      Description copied from class: Prepared
      Get the SQL statement with the execution plan.
      Overrides:
      getPlanSQL in class Prepared
      Parameters:
      sqlFlags - formatting flags
      Returns:
      the execution plan
    • prepare

      public void prepare()
      Description copied from class: Prepared
      Prepare this statement.
      Overrides:
      prepare in class Prepared
    • getType

      public int getType()
      Description copied from class: Prepared
      Get the command type as defined in CommandInterface
      Specified by:
      getType in class Prepared
      Returns:
      the statement type
    • getStatementName

      public String getStatementName()
      Description copied from class: DataChangeStatement
      Return the name of this statement.
      Specified by:
      getStatementName in class DataChangeStatement
      Returns:
      the short name of this statement.
    • setInsertFromSelect

      public void setInsertFromSelect(boolean value)
    • isCacheable

      public boolean isCacheable()
      Overrides:
      isCacheable in class DataChangeStatement
    • handleOnDuplicate

      private boolean handleOnDuplicate(DbException de, Value[] currentRow)
      Parameters:
      de - duplicate key exception
      currentRow - current row values (optional)
      Returns:
      true if row was updated, false if row was ignored
    • prepareUpdateCondition

      private Expression prepareUpdateCondition(Index foundIndex, Expression[] row)
    • getOnDuplicateKeyValue

      public Value getOnDuplicateKeyValue(int columnIndex)
      Get the value to use for the specified column in case of a duplicate key.
      Parameters:
      columnIndex - the column index
      Returns:
      the value
    • collectDependencies

      public void collectDependencies(HashSet<DbObject> dependencies)
      Description copied from class: Prepared
      Find and collect all DbObjects, this Prepared depends on.
      Overrides:
      collectDependencies in class Prepared
      Parameters:
      dependencies - collection of dependencies to populate