Interface Database

All Known Implementing Classes:
AbstractDatabase, BaseDatabase, DatabaseWrapper, ImporterDatabase, OnDiskDatabase, OnDiskQueryDatabase, RemoteDatabase, ReplayDatabase

public interface Database
Common interface for Deephaven databases.
  • Method Details

    • getWorkerName

      String getWorkerName()
      Gets the worker name.
      Returns:
      worker name
    • getProcessInfoId

      String getProcessInfoId()
      Gets the unique processInfoId of the worker.
      Returns:
      process info id
    • getUserContext

      com.fishlib.auth.UserContext getUserContext() throws IOException
      Gets the user authentication context.
      Returns:
      user authentication context
      Throws:
      IOException - problem retrieving the context
    • getClientHost

      String getClientHost()
      Gets a client hostname.
      Returns:
      client hostname
    • getServerHost

      String getServerHost()
      Gets the server hostname.
      Returns:
      server hostname.
    • startup

      void startup()
      Starts this database up.
    • shutdown

      void shutdown()
      Shuts this database down.
    • reloadData

      void reloadData()
      Reload any internally-cached data.
      ImplNote:
      OnDiskQueryDatabase resets its TableDataService.
    • gc

      void gc()
      Invoke the garbage collector for this database.
    • getErrorLog

      Table getErrorLog() throws Exception
      Get an error log for the DB. This is a real-time table.
      Returns:
      error log
      Throws:
      Exception - problems retrieving the error log.
    • setWatchdogMillis

      int setWatchdogMillis​(int millis) throws IOException
      Sets monitoring of delays in the LiveTableMonitor refresh loop. If the LiveTableMonitor refresh loop takes longer than the specified amount of time, the watchdog timeout procedure is executed. The watchdog timeout procedure is specified by calling setWatchdogTimeoutProcedure(LongConsumer).
      Parameters:
      millis - if LiveTableMonitor refresh loop takes longer than this amount of time, the watchdog timeout procedure will be called.
      Returns:
      the new value of the watchdog timer, in ms
      Throws:
      IOException - problems setting the monitor interval
    • setWatchdogTimeoutProcedure

      void setWatchdogTimeoutProcedure​(LongConsumer watchdogTimeoutProcedure) throws IOException
      Set the watchdog timeout procedure. If LiveTableMonitor refresh loop takes longer than the amount of time specified via setWatchdogMillis(int), the timeout procedure is called.
      Parameters:
      watchdogTimeoutProcedure - the procedure called when the LiveTableMonitor refresh loop takes longer than watchdogMillis.
      Throws:
      IOException
    • executeQuery

      <T> T executeQuery​(RemoteQuery<T> remoteQuery, Class<?>... additionalClasses) throws IOException
      Executes a DB query.
      Type Parameters:
      T - return type
      Parameters:
      remoteQuery - query to execute
      additionalClasses - additional classes to use during the query
      Returns:
      result of the query (must be serializable)
      Throws:
      IOException - problems executing the query or transmitting results
    • importClass

      void importClass​(Class classToImport)
      Imports a class for use in a query. For example:
       db.importClass(X.class)
       t=db.t(namespace,tablename).where("X.func(A)")
       
      Parameters:
      classToImport - the class
    • importStatic

      void importStatic​(Class classToImport)
      Imports the static methods from a class for use in a query. For example:
       db.importStaticClass(X.class)
       t=db.t(namespace,tablename).where("staticFunc(A)")
       

      where staticFunc is a static function of X.

      Parameters:
      classToImport - The class
    • mr

      Table mr​(Table value)
      Convenience method for makeRemote(Table).
      Make a copy of a local table on a remote server.
      Parameters:
      value - local table
      Returns:
      remote table.
    • makeRemote

      Table makeRemote​(Table value)
      Make a copy of a local table on a remote server.
      Parameters:
      value - local table
      Returns:
      remote table.
    • getReplayer

      ReplayerInterface getReplayer​(DBDateTime timeStart, DBDateTime timeEnd) throws IOException
      Creates a data replayer.
      Parameters:
      timeStart - replay start time
      timeEnd - replay end time
      Returns:
      replayer
      Throws:
      IOException - problems creating the replayer
    • getReplayer

      default ReplayerInterface getReplayer​(String timeStart, String timeEnd) throws IOException
      Creates a data replayer.
      Parameters:
      timeStart - replay start time
      timeEnd - replay end time
      Returns:
      replayer
      Throws:
      IOException - problems creating the replayer
    • getReplayer

      ReplayerInterface getReplayer​(DBDateTime timeStart, DBDateTime timeEnd, long interval) throws Exception
      Creates a data replayer.
      Parameters:
      timeStart - replay start time
      timeEnd - replay end time
      interval - replay step size
      Returns:
      replayer
      Throws:
      IOException - problems creating the replayer
      Exception
    • getReplayer

      default ReplayerInterface getReplayer​(String timeStart, String timeEnd, String interval) throws Exception
      Creates a data replayer.
      Parameters:
      timeStart - replay start time
      timeEnd - replay end time
      interval - replay step size
      Returns:
      replayer
      Throws:
      IOException - problems creating the replayer
      Exception
    • getReplayer

      default ReplayerInterface getReplayer​(DBDateTime timeStart, DBDateTime timeEnd, String interval) throws Exception
      Creates a data replayer.
      Parameters:
      timeStart - replay start time
      timeEnd - replay end time
      interval - replay step size
      Returns:
      replayer
      Throws:
      IOException - problems creating the replayer
      Exception
    • getSystemNamespaces

      List<String> getSystemNamespaces()
      Retrieves system namespace names from the database.
      Returns:
      The list of namespace names
    • getUserNamespaces

      List<String> getUserNamespaces()
      Retrieves user namespace names from the database.
      Returns:
      The list of namespace names
    • getNamespaces

      List<String> getNamespaces()
      Retrieves all namespace names from the database.
      Returns:
      The list of namespace names
    • hasNamespace

      boolean hasNamespace​(String namespace)
      Determines if the namespace is present in the DB.
      Parameters:
      namespace - namespace
      Returns:
      true if the namespace exists; false otherwise.
    • getCatalog

      Table getCatalog()
      Gets a table containing information on all tables in the DB.
      Returns:
      table containing information on all tables in the DB
    • getTableNames

      List<String> getTableNames​(String namespace)
      Gets all table names from the specified namespace.
      Parameters:
      namespace - The namespace to list the contents of
      Returns:
      The list of table names
    • hasTable

      boolean hasTable​(String namespace, String tableName)
      Determines if the table is defined in the DB.
      Parameters:
      namespace - namespace
      tableName - table name
      Returns:
      true if the table definition exists; false otherwise.
    • hasIntradayTable

      boolean hasIntradayTable​(String namespace, String tableName)
      Determines if the table is present in the DB and currently has intraday data.
      Parameters:
      namespace - namespace
      tableName - table name
      Returns:
      true if the table exists and has intraday data; false otherwise.
      ImplNote:
      OnDiskQueryDatabase only allows this call for System tables.
    • getTableDefinition

      @Nullable TableDefinition getTableDefinition​(String namespace, String tableName)
      Retrieves a table definition by namespace and name, generally from the schema service.
      Parameters:
      namespace - The namespace of the definition to retrieve
      tableName - The table name of the definition to retrieve
      Returns:
      The table definition retrieved, null if not found
    • getIntradayPartitions

      List<String> getIntradayPartitions​(String namespace, String tableName)
      Get a list of all internal partition values available for the specified intraday table.
      Parameters:
      namespace - The namespace of the table
      tableName - The table name to examine in the intraday data space
      Returns:
      A list of internal partition values for top-level partitioning of the intraday table. Typically represents one partition per source.
      ImplNote:
      OnDiskQueryDatabase only allows this call for System tables.
    • getIntradayPartitionsAsTable

      Table getIntradayPartitionsAsTable​(String namespace, String tableName)
      Get all internal partition values available for the specified intraday table, returned as table.
      Parameters:
      namespace - The namespace of the table
      tableName - The table name to examine in the intraday data space
      Returns:
      A table containing the internal partition values for top-level partitioning of the intraday table. Typically represents one partition per source.
      ImplNote:
      OnDiskQueryDatabase only allows this call for System tables.
    • hasImportedData

      boolean hasImportedData​(String namespace, String tableName, String columnPartitionValue)
      Determines if the historical table's column partition is present in the DB.
      Parameters:
      namespace - namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      Returns:
      true if the table's column partition exists; false otherwise.
      ImplNote:
      OnDiskQueryDatabase only allows this call for System tables.
    • hasIntradayData

      boolean hasIntradayData​(String namespace, String tableName, String columnPartitionValue)
      Determines if the intraday table's column partition is present in the DB.
      Parameters:
      namespace - namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      Returns:
      true if the intraday table's column partition exists; false otherwise.
      ImplNote:
      OnDiskQueryDatabase only allows this call for System tables.
    • getSchemaService

      SchemaService getSchemaService()
      Get the SchemaService for retrieving Schemas from which TableDefinitions can be retrieved.
      Returns:
      The SchemaService that this Database was created with.
    • getTable

      default Table getTable​(String namespace, String tableName)
      Retrieves a table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      table
    • t

      default Table t​(String namespace, String tableName)
      Retrieves a table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      table
    • getTableV2

      Table getTableV2​(String namespace, String tableName)
      Retrieves a table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      table in "v2" format
    • t2

      default Table t2​(String namespace, String tableName)
      Retrieves a table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      table in "v2" format
    • getIntradayTable

      default Table getIntradayTable​(String namespace, String tableName)
      Retrieves an intraday table by namespace and name. Throws exceptions for unknown tables. Always provides a live result.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      live intraday table
    • i

      default Table i​(String namespace, String tableName)
      Retrieves an intraday table by namespace and name. Throws exceptions for unknown tables. Always provides a live result.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      live intraday table
    • getIntradayTableV2

      default Table getIntradayTableV2​(String namespace, String tableName)
      Retrieves an intraday table by namespace and name. Throws exceptions for unknown tables. Always provides a live result.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      live intraday table
    • i2

      default Table i2​(String namespace, String tableName)
      Convenience method delegates to getIntradayTableV2(String, String).
    • getIntradayTable

      default Table getIntradayTable​(String namespace, String tableName, boolean live)
      Retrieves an intraday table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      live - true if the table should be live/updating; false otherwise
      Returns:
      intraday table
    • i

      default Table i​(String namespace, String tableName, boolean live)
      Retrieves an intraday table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      live - true if the table should be live/updating; false otherwise
      Returns:
      intraday table
    • getIntradayTableV2

      Table getIntradayTableV2​(String namespace, String tableName, boolean live)
      Retrieves an intraday table by namespace and name. Throws exceptions for unknown tables.
      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      live - true if the table should be live/updating; false otherwise
      Returns:
      intraday table
    • i2

      default Table i2​(String namespace, String tableName, boolean live)
      Convenience method delegates to getIntradayTableV2(String, String, boolean).
    • getIntradayTable

      default Table getIntradayTable​(String namespace, String tableName, String internalPartitionValue)
      Retrieves a single internal partition of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Always provides a live result.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValue - locations will be restricted to this internal partition value
      Returns:
      live single partition intraday table
      ImplNote:
      Delegates to getIntradayTableV2(String, String, String, boolean) with live set to true.
    • i

      default Table i​(String namespace, String tableName, String internalPartitionValue)
      Convenience method for getIntradayTable(String, String, String).

      Retrieves a single internal partition of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Always provides a live result.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValue - locations will be restricted to this internal partition value
      Returns:
      live single partition intraday table
    • getIntradayTableV2

      default Table getIntradayTableV2​(String namespace, String tableName, String internalPartitionValue)
      Retrieves a single internal partition of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Always provides a live result.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValue - locations will be restricted to this internal partition value
      Returns:
      live single partition intraday table
      ImplNote:
      Delegates to getIntradayTableV2(String, String, String, boolean) with live set to true.
    • i2

      default Table i2​(String namespace, String tableName, String internalPartitionValue)
      Convenience method delegates to getIntradayTableV2(String, String, String).
    • getIntradayTable

      default Table getIntradayTable​(String namespace, String tableName, String internalPartitionValue, boolean live)
      Retrieves a single internal partition of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValue - locations will be restricted to this internal partition value
      live - true if the table should be live/updating; false otherwise
      Returns:
      single partition intraday table
      ImplNote:
      Delegates to getIntradayTableV2(String, String, String, boolean).
    • i

      default Table i​(String namespace, String tableName, String internalPartitionValue, boolean live)
      Convenience method for getIntradayTable(String, String, String, boolean).

      Retrieves a single internal partition of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValue - locations will be restricted to this internal partition value
      live - true if the table should be live/updating; false otherwise
      Returns:
      single partition intraday table
    • getIntradayTableV2

      default Table getIntradayTableV2​(String namespace, String tableName, String internalPartitionValue, boolean live)
      Retrieves a single internal partition of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValue - locations will be restricted to this internal partition value
      live - true if the table should be live/updating; false otherwise
      Returns:
      single partition intraday table
      ImplNote:
      OnDiskDatabase only allows this call for System tables.
    • i2

      default Table i2​(String namespace, String tableName, String internalPartitionValue, boolean live)
    • getIntradayTable

      default Table getIntradayTable​(String namespace, String tableName, Set<String> internalPartitionValues)
      Retrieves the specified internal partitions of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Always provides a live result.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValues - locations will be restricted to these internal partition values
      Returns:
      live intraday table with the specified internal partitions
      ImplNote:
      Delegates to getIntradayTableV2(String, String, Set)
    • i

      default Table i​(String namespace, String tableName, Set<String> internalPartitionValues)
      Convenience method for getIntradayTable(String, String, Set)

      Retrieves the specified internal partitions of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Always provides a live result.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValues - locations will be restricted to these internal partition values
      Returns:
      live intraday table with the specified internal partitions
    • getIntradayTableV2

      default Table getIntradayTableV2​(String namespace, String tableName, Set<String> internalPartitionValues)
      Retrieves the specified internal partitions of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Always provides a live result.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValues - locations will be restricted to these internal partition values
      Returns:
      live intraday table with the specified internal partitions
      ImplNote:
      OnDiskDatabase only allows this call for System tables.
    • i2

      default Table i2​(String namespace, String tableName, Set<String> internalPartitionValues)
      Convenience method delegates to getIntradayTableV2(String, String, Set)
    • getIntradayTable

      default Table getIntradayTable​(String namespace, String tableName, Set<String> internalPartitionValues, boolean live)
      Retrieves the specified internal partitions of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValues - locations will be restricted to these internal partition values
      live - true if the table should be live/updating; false otherwise
      Returns:
      single partition intraday table
      ImplNote:
      Delegates to getIntradayTableV2(String, String, Set, boolean)
    • i

      default Table i​(String namespace, String tableName, Set<String> internalPartitionValues, boolean live)
      Convenience method for getIntradayTable(String, String, Set, boolean)

      Retrieves the specified internal partitions of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValues - locations will be restricted to these internal partition values
      live - true if the table should be live/updating; false otherwise
      Returns:
      single partition intraday table
    • getIntradayTableV2

      Table getIntradayTableV2​(String namespace, String tableName, Set<String> internalPartitionValues, boolean live)
      Retrieves the specified internal partitions of the specified intraday table. The result may contain locations for multiple column partition values, and so a subsequent filter (e.g. on "Date") will often be desired.

      Throws exceptions for unknown tables.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      internalPartitionValues - locations will be restricted to these internal partition values
      live - true if the table should be live/updating; false otherwise
      Returns:
      single partition intraday table
      ImplNote:
      OnDiskDatabase only allows this call for System tables.
    • i2

      default Table i2​(String namespace, String tableName, Set<String> internalPartitionValues, boolean live)
      Convenience method delegates to getIntradayTableV2(String, String, Set, boolean)
    • getLastByTable

      Table getLastByTable​(String namespace, String tableName)
      Retrieves an intraday last-by table by namespace and name.

      Throws exceptions for unknown tables.

      Always provides a live result.

      This may not be configured on your system.

      Parameters:
      namespace - namespace of the table
      tableName - name of the table
      Returns:
      live intraday last-by table
    • timeTable

      default Table timeTable​(String period) throws Exception
      Creates a table that adds a new row on a regular interval.
      Parameters:
      period - time interval between new row additions.
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(String period, ReplayerInterface replayer) throws Exception
      Creates a table that adds a new row on a regular interval. For use with data replay.
      Parameters:
      period - time interval between new row additions
      replayer - data replayer
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(DBDateTime startTime, String period) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time.
      Parameters:
      startTime - start time for adding new rows
      period - time interval between new row additions
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(DBDateTime startTime, String period, ReplayerInterface replayer) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time. For use with data replay.
      Parameters:
      startTime - start time for adding new rows
      period - time interval between new row additions
      replayer - data replayer
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(String startTime, String period) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time.
      Parameters:
      startTime - start time for adding new rows
      period - time interval between new row additions
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(String startTime, String period, ReplayerInterface replayer) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time. For use with data replay.
      Parameters:
      startTime - start time for adding new rows
      period - time interval between new row additions
      replayer - data replayer
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(long periodNanos) throws Exception
      Creates a table that adds a new row on a regular interval.
      Parameters:
      periodNanos - time interval between new row additions in nanoseconds.
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(long periodNanos, ReplayerInterface replayer) throws Exception
      Creates a table that adds a new row on a regular interval. For use with data replay.
      Parameters:
      periodNanos - time interval between new row additions in nanoseconds.
      replayer - data replayer
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(DBDateTime startTime, long periodNanos) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time.
      Parameters:
      startTime - start time for adding new rows
      periodNanos - time interval between new row additions in nanoseconds.
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(DBDateTime startTime, long periodNanos, ReplayerInterface replayer) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time. For use with data replay.
      Parameters:
      startTime - start time for adding new rows
      periodNanos - time interval between new row additions in nanoseconds.
      replayer - data replayer
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(String startTime, long periodNanos) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time.
      Parameters:
      startTime - start time for adding new rows
      periodNanos - time interval between new row additions in nanoseconds.
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • timeTable

      default Table timeTable​(String startTime, long periodNanos, ReplayerInterface replayer) throws Exception
      Creates a table that adds a new row on a regular interval, starting from a specified time. For use with data replay.
      Parameters:
      startTime - start time for adding new rows
      periodNanos - time interval between new row additions in nanoseconds.
      replayer - data replayer
      Returns:
      time table
      Throws:
      Exception - problem creating the time table
    • deleteNamespace

      void deleteNamespace​(String namespace)
      Delete all files related to the specified namespace.

      Note: This is a dangerous API - don't use it if you don't fully understand the implications.

      Parameters:
      namespace - namespace to be deleted.
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • deleteTables

      void deleteTables​(String namespace, String... tableNames)
      Delete all files related to a set of tables. removeTable(String, String) is a better option, unless the underlying table is damaged.
      Parameters:
      namespace - table namespace
      tableNames - table names to delete
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • deleteMatchingTables

      void deleteMatchingTables​(String namespace, String tableNameRegex)
      Delete all files related to the set of tables whose names match the supplied regular expression.

      Note: This only works for tables that still have a definition file, although it need not be readable.

      Note: This is a dangerous API - don't use it if you don't fully understand the implications.

      Parameters:
      namespace - table namespace
      tableNameRegex - table names in the given namespace that match this regular expression will be cleaned up.
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addTable

      @FinalDefault default void addTable​(String namespace, String tableName, Table table)
      Adds a non-partitioned table by name to the specified namespace.
      Parameters:
      namespace - table namespace
      tableName - table name
      table - table to add
      Throws:
      RuntimeException - table already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addTable

      void addTable​(String namespace, String tableName, Table table, Database.StorageFormat storageFormat)
      Adds a non-partitioned table by name to the specified namespace.
      Parameters:
      namespace - table namespace
      tableName - table name
      table - table to add
      storageFormat - the storage format to use (ex DeephavenV1 or Parquet)
      Throws:
      RuntimeException - table already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • appendTable

      void appendTable​(String namespace, String tableName, Table table)
      Appends to a non-partitioned table, or adds the table if it is not present. Adds a TableDefinition if necessary.
      Parameters:
      namespace - table namespace
      tableName - table name
      table - data to add or append
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • rm

      default void rm​(String namespace, String tableName)
      Convenience method for removeTable(String, String).
    • removeTable

      void removeTable​(String namespace, String tableName)
      Removes a table. This method is a better choice than deleteTables(String, String...), unless the underlying table no longer has consistent metadata. Throws an exception for tables that don't exist.
      Parameters:
      namespace - table namespace
      tableName - table name
      Throws:
      RuntimeException - table does not exist
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • replaceTable

      @FinalDefault default void replaceTable​(String namespace, String tableName, Table table)
      Replaces a non-partitioned table with a new table, or adds the table, if it is not already present. Not guaranteed to be atomic in the case of failures.
      Parameters:
      namespace - table namespace
      tableName - table name
      table - data for the replacement table
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • replaceTable

      void replaceTable​(String namespace, String tableName, Table table, Database.StorageFormat storageFormat)
      Replaces a non-partitioned table with a new table, or adds the table, if it is not already present. Not guaranteed to be atomic in the case of failures.
      Parameters:
      namespace - table namespace
      tableName - table name
      table - data for the replacement table
      storageFormat - the storage format to use (ex DeephavenV1 or Parquet)
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addTableDefinition

      void addTableDefinition​(String namespace, String tableName, TableDefinition tableDefinition)
      Adds a table definition to the specified namespace. Throws an exception if the table definition already exists.
      Parameters:
      namespace - table namespace
      tableName - table name
      tableDefinition - table definition to add
      Throws:
      RuntimeException - table definition already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • removeTableDefinition

      @Deprecated void removeTableDefinition​(String namespace, String tableName)
      Removes a table definition.
      Parameters:
      namespace - table namespace
      tableName - table name
      Throws:
      RuntimeException - table definition does not exist
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • replaceTableDefinition

      void replaceTableDefinition​(String namespace, String tableName, TableDefinition tableDefinition)
      Replaces a user table definition.

      Not guaranteed to be atomic in the case of failures.

      Does not throw an exception for tables that don't exist.

      Parameters:
      namespace - table namespace
      tableName - table name
      tableDefinition - table definition for the replacement
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables..
    • addTablePartition

      @FinalDefault default void addTablePartition​(String namespace, String tableName, String columnPartitionValue, Table data)
      Adds a single table partition (e.g. one date) to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      This variant implicitly uses internalPartitionValue set by the iris.defaultInternalPartitionNamingFunction property.

      Throws an exception if the partition already exists.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data for this partition. Must *not* contain the partitioning column.
      Throws:
      RuntimeException - if the partition already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addTablePartition

      void addTablePartition​(String namespace, String tableName, String columnPartitionValue, Table data, Database.StorageFormat storageFormat)
      Adds a single table partition (e.g. one date) to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      This variant implicitly uses internalPartitionValue set by the iris.defaultInternalPartitionNamingFunction property.

      Throws an exception if the partition already exists.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data for this partition. Must *not* contain the partitioning column.
      storageFormat - the format used for storage
      Throws:
      RuntimeException - if the partition already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addTablePartition

      @FinalDefault default void addTablePartition​(String namespace, String tableName, String internalPartitionValue, String columnPartitionValue, Table data)
      Adds a single table partition (e.g. one date) to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      Throws an exception if the partition already exists.

      Parameters:
      namespace - table namespace
      tableName - table name
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data for this partition. Must *not* contain the partitioning column.
      Throws:
      RuntimeException - if the partition already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addTablePartition

      void addTablePartition​(String namespace, String tableName, String internalPartitionValue, String columnPartitionValue, Table data, Database.StorageFormat storageFormat)
      Adds a single table partition (e.g. one date) to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      Throws an exception if the partition already exists.

      Parameters:
      namespace - table namespace
      tableName - table name
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data for this partition. Must *not* contain the partitioning column.
      storageFormat - the format used for storage
      Throws:
      RuntimeException - if the partition already exists
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • appendTablePartition

      void appendTablePartition​(String namespace, String tableName, String columnPartitionValue, Table data)
      Adds or appends to a single table location (e.g. one date) to a partitioned user table.

      Requires that a suitable TableDefinition has already been added.

      This variant implicitly uses internalPartitionName set by the iris.defaultInternalPartitionNamingFunction property.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data to append to this partition. Must *not* contain the partitioning column.
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • appendTablePartition

      void appendTablePartition​(String namespace, String tableName, String internalPartitionValue, String columnPartitionValue, Table data)
      Adds or appends to a single table location (e.g. one date) to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      Parameters:
      namespace - table namespace
      tableName - table name
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data to append to this partition. Must *not* contain the partitioning column.
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • removeTablePartition

      void removeTablePartition​(String namespace, String tableName, String columnPartitionValue)
      Removes a single table location (e.g. one date) from a partitioned user table.

      Requires that a suitable TableDefinition still exists.

      This variant implicitly uses internalPartitionValue set by the iris.defaultInternalPartitionNamingFunction property.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • removeTablePartition

      void removeTablePartition​(String namespace, String tableName, String internalPartitionValue, String columnPartitionValue)
      Removes a single table location (e.g. one date) from a partitioned table. Requires that a suitable TableDefinition still exists.
      Parameters:
      namespace - table namespace
      tableName - table name
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • replaceTablePartition

      @FinalDefault default void replaceTablePartition​(String namespace, String tableName, String columnPartitionValue, Table data)
      Removes and re-adds a single table location (e.g. one date) from/to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      This variant implicitly uses internalPartitionName set by the iris.defaultInternalPartitionNamingFunction property.

      Not guaranteed to be atomic in the case of failures.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data for this partition. Must *not* contain the partitioning column.
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • replaceTablePartition

      void replaceTablePartition​(String namespace, String tableName, String columnPartitionValue, Table data, Database.StorageFormat storageFormat)
      Removes and re-adds a single table location (e.g. one date) from/to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      This variant implicitly uses internalPartitionName set by the iris.defaultInternalPartitionNamingFunction property.

      Not guaranteed to be atomic in the case of failures.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data for this partition. Must *not* contain the partitioning column.
      storageFormat - the storage format to use (ex DeephavenV1 or Parquet)
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • replaceTablePartition

      @FinalDefault default void replaceTablePartition​(String namespace, String tableName, String internalPartitionValue, String columnPartitionValue, Table data)
      Replaces a single table location (e.g. one date) from/to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      Not guaranteed to be atomic in the case of failures.

      Parameters:
      namespace - table namespace
      tableName - table name
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data to replace this partition. Must *not* contain the partitioning column.
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • replaceTablePartition

      void replaceTablePartition​(String namespace, String tableName, String internalPartitionValue, String columnPartitionValue, Table data, Database.StorageFormat storageFormat)
      Replaces a single table location (e.g. one date) from/to a partitioned table.

      Requires that a suitable TableDefinition has already been added.

      Not guaranteed to be atomic in the case of failures.

      Parameters:
      namespace - table namespace
      tableName - table name
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - data to replace this partition. Must *not* contain the partitioning column.
      storageFormat - the storage format to use (ex DeephavenV1 or Parquet)
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addPartitionedTableDefinitionIfAbsent

      void addPartitionedTableDefinitionIfAbsent​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull TableDefinition prototypeDefinition)
      Adds a table definition for a partitioned table, if the table definition is absent.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      prototypeDefinition - prototype table definition used to generate the table definition
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • addPartitionedTableDefinitionIfAbsent

      void addPartitionedTableDefinitionIfAbsent​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull TableDefinition prototypeDefinition, boolean checkPartitioningColumn)
      Adds a table definition for a partitioned table, if the table definition is absent.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      prototypeDefinition - prototype table definition used to generate the table definition
      checkPartitioningColumn - true to make sure the partitioning columns are the same
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • addPartitionedTableDefinition

      void addPartitionedTableDefinition​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull TableDefinition prototypeDefinition)
      Adds a table definition for a partitioned table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      prototypeDefinition - prototype table definition used to generate the table definition
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • addPartitionedTableDefinition

      void addPartitionedTableDefinition​(@NotNull String namespace, @NotNull String tableName, @NotNull TableDefinition prototypeDefinition)
      Adds a table definition for a partitioned table. The partitioning column depends on the iris.defaultColumnPartitionColumnName property.
      Parameters:
      namespace - table namespace
      tableName - table name
      prototypeDefinition - prototype table definition used to generate the table definition
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • addTablePartitionAndDefinition

      void addTablePartitionAndDefinition​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull String internalPartitionValue, @NotNull String columnPartitionValue, @NotNull Table data)
      Adds a table definition and data for a partitioned table.

      This operation is not atomic.

      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      internalPartitionValue - internal (not user-visible) partition value.
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - table containing the data and table definition to write out
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addColumnPartitionAndDefinition

      @Deprecated default void addColumnPartitionAndDefinition​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull String internalPartitionValue, @NotNull String columnPartitionValue, @NotNull Table data)
    • addTablePartitionAndDefinition

      void addTablePartitionAndDefinition​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull String columnPartitionValue, @NotNull Table data)
      Adds a table definition and data for a partitioned user table location.

      This operation is not atomic.

      This variant implicitly uses internalPartitionName set by the iris.defaultInternalPartitionNamingFunction property.

      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      data - table containing the data and table definition to write out
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables, and it is not intended for use with centrally managed tables.
    • addColumnPartitionAndDefinition

      @Deprecated default void addColumnPartitionAndDefinition​(@NotNull String namespace, @NotNull String tableName, @NotNull String partitioningColumnName, @NotNull String columnPartitionValue, @NotNull Table data)
    • appendCentral

      void appendCentral​(String namespace, String tableName, String columnPartitionValue, Table table, boolean flush) throws IOException
      Append to a table via a centralized table appender.

      Note: The table data is appended to a system-defined internal partition, and the specified column partition value.

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - new data
      flush - true to flush the table to disk; false to wait for flushing (if the implementation supports waiting)
      Throws:
      IOException - problem appending
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • appendCentral

      void appendCentral​(String namespace, String tableName, Table table, boolean flush) throws IOException
      Append to a table via a centralized table appender.

      This variant implicitly uses a default partitioning column value set by the iris.defaultColumnPartitionNamingFunction function.

      Parameters:
      namespace - table namespace
      tableName - table name
      table - new data
      flush - true to flush the table to disk; false to wait for flushing (if the implementation supports waiting)
      Throws:
      IOException - problem appending
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • closeAndDeleteCentral

      void closeAndDeleteCentral​(@NotNull String namespace, @NotNull String tableName) throws IOException
      Close all logger connections to the centralized logging for the specified table, and then atomically delete all centrally logged table data for this namespace and table name. Remove all local table data also, as with removeTable(String, String).

      USE WITH EXTREME CAUTION!!!

      Parameters:
      namespace - table namespace
      tableName - table name
      Throws:
      IOException - problems encountered
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • closeAndDeleteCentral

      void closeAndDeleteCentral​(@NotNull String namespace, @NotNull String tableName, @Nullable String columnPartitionValue) throws IOException
      Close all logger connections to the centralized logging for the specified table, and then atomically delete all centrally logged table data for this namespace and table name, restricted to the column partition value if provided.

      USE WITH EXTREME CAUTION!!!

      Parameters:
      namespace - table namespace
      tableName - table name
      columnPartitionValue - optional column partition value
      Throws:
      IOException - problems encountered
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • logPartitionTableSnapshot

      Database.LogHandle logPartitionTableSnapshot​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, Table table, String logInterval, ReplayerInterface replayer, boolean append) throws Exception
      Snapshots a table at a regular interval and writes the snapshot to a centrally managed table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - table to snapshot and log (does not contain the partition column)
      logInterval - interval to log snapshots at
      replayer - data replayer
      append - true to append to an existing partition; false to replace the existing partition.
      Returns:
      log handle
      Throws:
      Exception - problems
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • logPartitionTableSnapshot

      Database.LogHandle logPartitionTableSnapshot​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, Table table, String logInterval, boolean append) throws Exception
      Snapshots a table at a regular interval and writes the snapshot to a centrally managed table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - table to snapshot and log (does not contain the partition column)
      logInterval - interval to log snapshots at
      append - true to append to an existing partition; false to replace the existing partition.
      Returns:
      log handle
      Throws:
      Exception - problems
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • logPartitionTableSnapshot

      Database.LogHandle logPartitionTableSnapshot​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, Table table, long logIntervalMillis, ReplayerInterface replayer, boolean append) throws IOException
      Snapshots a table at a regular interval and writes the snapshot to a centrally managed table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - table to snapshot and log (does not contain the partition column)
      logIntervalMillis - interval in milliseconds to log snapshots at
      replayer - data replayer
      append - true to append to an existing partition; false to replace the existing partition.
      Returns:
      log handle
      Throws:
      IOException - problems
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • logPartitionTableSnapshot

      Database.LogHandle logPartitionTableSnapshot​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, Table table, long logIntervalMillis, boolean append) throws IOException
      Snapshots a table at a regular interval and writes the snapshot to a centrally managed table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - table to snapshot and log (does not contain the partition column)
      logIntervalMillis - interval in milliseconds to log snapshots at
      append - true to append to an existing partition; false to replace the existing partition.
      Returns:
      log handle
      Throws:
      IOException - problems
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • logPartitionTableIncremental

      Database.LogHandle logPartitionTableIncremental​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, Table table, ReplayerInterface replayer, boolean append) throws IOException
      Writes all changes in a table to a centrally managed table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - table to log (does not contain the partition column)
      replayer - data replayer
      append - true to append to an existing partition; false to replace the existing partition.
      Returns:
      log handle
      Throws:
      IOException - problems
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • logPartitionTableIncremental

      Database.LogHandle logPartitionTableIncremental​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, Table table, boolean append) throws IOException
      Writes all changes in a table to a centrally managed table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      table - table to log (does not contain the partition column)
      append - true to append to an existing partition; false to replace the existing partition.
      Returns:
      log handle
      Throws:
      IOException - problems
      ImplNote:
      OnDiskQueryDatabase only allows this call for User tables.
    • getColumnPartitionTableWriter

      TableWriter getColumnPartitionTableWriter​(String namespace, String tableName, String partitioningColumnName, String columnPartitionValue, TableDefinition tableDefinition, boolean append)
      Gets a table writer for a partitioned table.
      Parameters:
      namespace - table namespace
      tableName - table name
      partitioningColumnName - name of the partitioning column
      columnPartitionValue - column partition value (e.g. "2015-09-25" for a Date partitioning column).
      tableDefinition - table definition
      append - true to append to an existing partition; false to overwrite an existing partition.
      Returns:
      table writer
    • getTableWriter

      TableWriter getTableWriter​(String namespace, String tableName, TableDefinition tableDefinition, boolean append) throws IOException
      Gets a table writer for an unpartitioned table.
      Parameters:
      namespace - table namespace
      tableName - table name
      tableDefinition - table definition
      append - true to append to an existing partition; false to overwrite an existing partition.
      Returns:
      table writer
      Throws:
      IOException