All Products
Search
Document Center

Realtime Compute for Apache Flink:Parameter configuration (VVR 11+)

Last Updated:Apr 29, 2026

This topic lists the WITH parameters for Ververica Runtime (VVR) versions 11 and later.

Parameter deprecation

To improve system architecture and maintenance, some legacy parameters from VVR 8 and earlier versions are now deprecated. The following tables list these parameters and their replacements.

Removed parameters

Parameter

Description

Notes

jdbcRetrySleepInitMs

The fixed wait time for each retry.

Use an incremental wait time: retry-sleep-step-ms.

jdbcMetaAutoRefreshFactor

Automatically refreshes the cache when its remaining lifetime falls below a specified threshold.

You only need to configure the cache time parameter meta-cache-ttl-ms. You do not need to configure this parameter.

type-mapping.timestamp-converting.legacy

Specifies whether to convert time types between Flink and Hologres.

This parameter was introduced for backward compatibility with the TIMESTAMP_LTZ type and is no longer required.

property-version

The version of the connector parameters.

Removed because the default values for common parameters have been optimized.

field_delimiter

The delimiter used between rows when exporting data.

Removed due to an optimized data reading method.

jdbcBinlogSlotName

The slot name of the Binlog source table in JDBC mode.

Removed due to an optimized data reading method.

binlogMaxRetryTimes

The number of read retries for Binlog data after an error.

You can use the retry-count parameter to configure it.

cdcMode

Specifies whether to use CDC mode to read Binlog data.

By default, data is read in CDC mode, and this parameter is removed. For non-CDC mode, you can use the source.binlog.change-log-mode parameter for configuration.

upsertSource

Specifies whether the source table uses an upsert Changelog.

Configure the source.binlog.change-log-mode parameter.

bulkload

Specifies whether to use bulkload for writing.

Use the sink.write-mode parameter.

useRpcMode

Specifies whether to use the Hologres connector via RPC.

We recommend that you use a JDBC connection and configure the sink.deduplication.enabled parameter to enable or disable deduplication.

partitionrouter

Specifies whether to write to a partitioned table.

Removed because writing to partitioned tables is now supported by default.

ignoredelete

Specifies whether to ignore retraction messages.

Configure the sink.delete-strategy parameter. This parameter specifies the processing strategy for retraction messages.

sdkMode

Specifies the SDK mode for reading or writing data.

This parameter has been optimized. Configure it based on the table type and the source.binlog.read-mode and sink.write-mode parameters.

jdbcReadBatchQueueSize

The buffer queue size for dimension table lookup requests.

When point query performance is poor, we recommend that you configure the connection.pool.size parameter.

jdbcReadRetryCount

The number of retries when a dimension table lookup times out.

The retry-count parameter for the general retry mechanism has been consolidated.

jdbcScanTransactionSessionTimeoutSeconds

The transaction timeout for a scan operation.

The general scan timeout setting has been consolidated into the source.scan.timeout-seconds parameter.

Renamed parameters

Old parameter

New parameter

Description

jdbcRetryCount

retry-count

The number of retries for write and query operations after a connection failure.

jdbcRetrySleepStepMs

retry-sleep-step-ms

The incremental wait time for each retry.

jdbcConnectionMaxIdleMs

connection.max-idle-ms

The maximum idle time for a JDBC connection.

jdbcMetaCacheTTL

meta-cache-ttl-ms

The Time to Live (TTL) for locally cached table schema information.

binlog

source.binlog

Specifies whether to consume Binlog data.

sdkMode

source.binlog.read-mode

Specifies the read mode.

binlogRetryIntervalMs

source.binlog.request-timeout-ms

The wait interval between retries when a Binlog read fails.

binlogBatchReadSize

source.binlog.batch-size

The number of rows to read in a batch from the Binlog.

binlogStartupMode

source.binlog.startup-mode

The consumption mode for Binlog data.

jdbcScanFetchSize

source.scan.fetch-size

The batch size for fetching data during a scan.

jdbcScanTimeoutSeconds

source.scan.timeout-seconds

The timeout for scan operations.

enable_filter_push_down

source.scan.filter-push-down.enabled

Specifies whether to enable filter pushdown during the full read phase.

partition-binlog.mode

source.binlog.partition-binlog-mode

The consumption mode for Binlog from a partitioned table.

partition-binlog-lateness-timeout-minutes

source.binlog.partition-binlog-lateness-timeout-minutes

The maximum lateness timeout when consuming from a partitioned table in DYNAMIC mode.

partition-values-to-read

source.binlog.partition-values-to-read

The partitions to read when consuming from a partitioned table in STATIC mode. Separate multiple partition values with a comma (,).

sdkMode

sink.write-mode

Specifies the write mode.

mutatetype

sink.on-conflict-action

The handling strategy for a primary key conflict.

createparttable

sink.create-missing-partition

When writing to a partitioned table, specifies whether to automatically create missing partitions based on partition values.

jdbcWriteBatchSize

sink.insert.batch-size

The maximum number of records for batching in the Hologres sink.

jdbcWriteBatchByteSize

sink.insert.batch-byte-size

The maximum byte size for batching in the Hologres sink.

jdbcWriteFlushInterval

sink.insert.flush-interval-ms

The maximum wait time before a batch of data is flushed to Hologres.

ignoreNullWhenUpdate

sink.ignore-null-when-update.enabled

When sink.on-conflict-action is set to an update action, specifies whether to ignore null values in the data being written.

jdbcEnableDefaultForNotNullColumn

sink.default-for-not-null-column.enabled

Specifies whether the connector provides a default value when null is written to a NOT NULL column that lacks a defined default.

remove-u0000-in-text.enabled

sink.remove-u0000-in-text.enabled

Specifies whether the connector automatically removes the illegal \u0000 character from string data before writing.

partial-insert.enabled

sink.partial-insert.enabled

Specifies whether to insert only the fields defined in the INSERT statement.

deduplication.enabled

sink.deduplication.enabled

Specifies whether to perform deduplication during the write batching process.

check-and-put.column

sink.insert.check-and-put.column

Enables conditional updates and specifies the column to check.

check-and-put.operator

sink.insert.check-and-put.operator

The comparison operator for the conditional update operation.

check-and-put.null-as

sink.insert.check-and-put.null-as

For a conditional update, if the existing data is null, the null value is treated as the value specified by this parameter.

aggressive.enabled

sink.aggressive-flush.enabled

Specifies whether to enable aggressive flush mode.

connectionSize

connection.pool.size

The size of the JDBC connection pool for a single Flink dimension table task.

connectionPoolName

connection.pool.name

The name of the connection pool. Within the same TaskManager, tables that specify the same pool name can share a connection pool.

jdbcReadBatchSize

lookup.read.batch-size

The maximum number of records to batch for dimension table lookups.

jdbcReadTimeoutMs

lookup.read.timeout-ms

The timeout for dimension table lookups.

WITH parameters

General

Parameter

Description

Type

Required

Default

Remarks

connector

The type of table.

String

Yes

The value must be hologres.

dbname

The name of the database.

String

Yes

You can connect to a specific virtual warehouse by appending a suffix to the database name. For example, to connect a dimension table to the read_warehouse virtual warehouse, specify 'dbname' = 'db_test@read_warehouse'.

tablename

The name of the table.

String

Yes

If the schema is not public, use the schema.tableName format.

username

  • The username for a custom account, in the format of BASIC$<user_name>.

  • The AccessKey ID of an Alibaba Cloud account or RAM user.

String

Yes

Important

To prevent your AccessKey information from being exposed, we recommend that you use namespace variables to store your AccessKey values. For more information, see Namespace variables.

password

  • The password for the custom account.

  • The AccessKey secret of an Alibaba Cloud account or RAM user.

String

Yes

endpoint

The endpoint of the Hologres service.

String

Yes

For more information, see Endpoints.

connection.pool.size

The size of the JDBC connection pool created for a single Flink table within a task.

Integer

No

5

If job performance is insufficient, consider increasing the connection pool size. The pool size is proportional to the data throughput. This parameter affects only dimension tables and sink tables.

connection.pool.name

Tables in the same TaskManager can share a connection pool by using the same name.

String

No

'default'

The default value is 'default'. If multiple tables are configured to use the same connection pool, the largest value specified for the connection.pool.size parameter among them is used.

For example, if a job contains five Hologres tables (dimension tables A and B, and sink tables C, D, and E), you can configure tables A and B to use pool1, tables C and D to use pool2, and table E, which handles high traffic, to use pool3.

Note
  • Tables can share a connection pool only if they use the same connection information, such as the endpoint and database.

  • If a job involves many tables, the number of available connections may be insufficient, which can degrade performance. In such cases, we recommend assigning different pool names to different tables.

connection.fixed.enabled

Specifies whether to use the lightweight connection mode.

Boolean

No

Hologres has a connection limit. Starting from Hologres V2.1, real-time writes support lightweight connections that are not subject to this limit.

Note
  • The default value of this parameter depends on the version of your Hologres instance. For dimension tables and sink tables, the connector automatically selects the lightweight connection mode for Hologres versions later than 3.0.28.

  • For dimension tables, the lightweight connection mode does not support queries on JSONB and RoaringBitmap data types.

connection.max-idle-ms

The idle timeout for a JDBC connection, in milliseconds.

Long

No

60000

If a connection remains idle longer than this time, it is closed. A new connection is automatically created when needed.

connection.ssl.mode

Specifies whether to enable Secure Sockets Layer (SSL) encryption in transit and which mode to use.

String

No

disable

  • disable (default): Disables encryption in transit.

  • require: Enables SSL and encrypts only the data link.

  • verify-ca: Enables SSL, encrypts the data link, and uses a CA certificate to verify the authenticity of the Hologres server.

  • verify-full: Enables SSL, encrypts the data link, uses a CA certificate to verify the authenticity of the Hologres server, and verifies that the Common Name (CN) or DNS name in the certificate matches the configured Hologres endpoint.

Note
  • Hologres V2.1 and later support the verify-ca and verify-full modes. For more information, see Encryption in transit.

  • If you set this parameter to verify-ca or verify-full, you must also set the connection.ssl.root-cert.location parameter.

connection.ssl.root-cert.location

The path to the CA certificate, required for certificate-based encryption modes.

String

No

If connection.ssl.mode is set to verify-ca or verify-full, you must specify the path to the CA certificate. You can upload the certificate file by using the Manage artifacts feature on the Realtime Compute console. After the upload, the file is stored in the /flink/usrlib directory. For example, if the CA certificate file is named certificate.crt, set this parameter to '/flink/usrlib/certificate.crt'.

Note

For information about how to obtain a CA certificate, see Download the CA certificate.

retry-count

The number of times to retry a write or query operation on connection failure.

Integer

No

10

retry-sleep-step-ms

The incremental wait time for each retry, in milliseconds.

Long

No

5000

For example, with the default value of 5,000 (5 seconds), the first retry waits for 5 seconds, the second for 10 seconds, and so on.

meta-cache-ttl-ms

The time-to-live (TTL) for locally cached TableSchema information, in milliseconds.

Long

No

600000

serverless-computing.enabled

Specifies whether to use serverless resources.

Boolean

No

false

If this parameter is set to true, the connector uses Hologres serverless resources for read and write operations instead of the resources of your Hologres instance. This parameter is supported only for batch reads and batch imports. It is not valid for binary log consumption, dimension table point queries, or real-time writes. For more information, see Overview.

Note
  • Batch reads apply when source.binlog is set to false, or during the full data read phase when source.binlog.startup-mode is set to INITIAL.

  • Batch import operations apply when sink.write-mode is set to COPY_BULK_LOAD or COPY_BULK_LOAD_ON_CONFLICT.

Note

We recommend enabling this parameter for large-scale data imports or exports to avoid impacting other queries on your Hologres instance. For more information, see Overview.

Source table parameters

Parameter

Description

Type

Required

Default

Remarks

source.binlog

Specifies whether to consume binlog data.

Boolean

No

true

  • true (default): Consumes binlog data.

  • false: Does not consume binlog data. The job performs a batch read and then stops.

source.binlog.read-mode

Specifies the read mode.

ENUM

No

AUTO

  • AUTO (default): Automatically selects the optimal mode based on the instance version.

  • HOLOHUB: Uses HoloHub mode to consume binlog data.

  • JDBC: Uses JDBC mode to consume binlog data.

Note

The selection logic for AUTO mode is as follows:

  • For Hologres instances V2.1.27 and later, the connector selects JDBC mode and lightweight connection is enabled by default (the connection.fixed.enabled parameter defaults to true).

  • For Hologres instances from V2.1.0 to V2.1.26, the connector selects JDBC mode.

  • For Hologres instances V2.0 and earlier, the connector selects HOLOHUB mode.

source.binlog.change-log-mode

Specifies the ChangeLog types supported by the CDC source table.

ENUM

No

UPSERT

  • ALL: Supports all ChangeLog types, including INSERT, DELETE, UPDATE_BEFORE, and UPDATE_AFTER.

  • UPSERT (default): Supports only upsert ChangeLogs, including INSERT, DELETE, and UPDATE_AFTER.

  • ALL_AS_APPEND_ONLY: Treats all ChangeLog types as INSERT.

Note

If the downstream pipeline includes a retraction operator (for example, using ROW_NUMBER OVER WINDOW for deduplication), you must set upsertSource to true. In this case, the source table reads data from Hologres in upsert mode.

source.binlog.startup-mode

Specifies the consumption mode for binlog data.

ENUM

No

INITIAL

  • INITIAL (default): Performs a full read of the data, and then starts incremental consumption from the binlog.

  • EARLIEST_OFFSET: Starts consumption from the earliest available binlog offset.

  • TIMESTAMP: Starts consumption from the binlog at the specified startTime.

  • LATEST_OFFSET: Starts consumption from the latest binlog offset.

Note
  • If startTime is set or a start time is selected in the startup interface, this parameter is automatically set to TIMESTAMP mode, and other consumption modes are ignored. The startTime parameter takes precedence.

  • The LATEST_OFFSET mode is supported only in VVR 11.6 and later.

source.binlog.batch-size

Specifies the number of rows to read per batch from the binlog.

Integer

No

512

Not applicable.

source.binlog.request-timeout-ms

Specifies the timeout for reading binlog data.

Long

No

300000

Unit: milliseconds.

Note

A timeout may indicate backpressure caused by downstream operators processing source table data too slowly.

source.binlog.project-columns.enabled

Specifies whether to read only the fields specified in the user table when reading binlog data.

Boolean

No

None

The specified fields are those declared in the CREATE TEMPORARY TABLE statement; undeclared fields are not read. When a table has many fields but you only need to consume a subset, this option can avoid unnecessary data transfer and conversion, which improves read performance and saves bandwidth.

Note

This parameter is supported only in VVR 11.3 and later and Hologres instances V3.2 and later. You do not usually need to configure this parameter. The connector enables it by default if the version requirements are met.

source.binlog.compression.enabled

Specifies whether to enable data compression during transit when reading binlog data.

Boolean

No

None

When consuming the binlog, the server returns a byte stream compressed with the LZ4 algorithm. This improves read performance and reduces bandwidth usage.

Note

This parameter is supported only in VVR 11.3 and later and Hologres instances V3.2 and later. You do not usually need to configure this parameter. The connector enables it by default if the version requirements are met.

source.binlog.partition-binlog-mode

Specifies the binlog consumption mode for a partitioned table.

Enum

No

DISABLE

  • DISABLE (default): Use for non-partitioned source tables. The job throws an exception if the specified Hologres table is a partitioned table.

  • DYNAMIC: Continuously consumes the latest partitions of a partitioned table. The table must have dynamic partitioning enabled. DYNAMIC mode consumes partitions in chronological order. When consumption reaches the second-latest partition, it starts consuming the latest partition when a new time unit begins.

  • STATIC: Consumes a fixed set of partitions from a partitioned table. Multiple partitions can be consumed simultaneously. Partitions cannot be added or removed during consumption. By default, it consumes all partitions of the parent table.

source.binlog.partition-binlog-lateness-timeout-minutes

In DYNAMIC mode, specifies the maximum lateness timeout when consuming a partitioned table.

Integer

No

60

  • Unit: minutes. In DYNAMIC mode, when a new time unit begins, the connector starts consuming the latest partition for the current time. However, it does not immediately close the previous partition, but continues to monitor it to capture late-arriving data.

For example, if dynamic partitioning is by DAY, for partition 20240920, and the maximum data lateness is 1 hour, consumption for this partition stops at 2024-09-21 01:00:00, not at 2024-09-21 00:00:00.

  • The lateness-timeout value cannot exceed the partition's time unit.

If partitioning is by day, the maximum value is 24 * 60 = 1440 minutes. In DYNAMIC mode, the connector usually consumes only one partition at a time, but it may consume two partitions simultaneously during the lateness period.

source.binlog.partition-values-to-read

In STATIC mode, specifies the partitions to consume. Use commas (,) to separate partition values.

String

No

None

  • If you do not configure this parameter, STATIC mode consumes all partitions of the specified parent table. If configured, it consumes only the specified partitions.

  • Specify only the partition values, not the full partition names. Separate multiple values with commas (,). This parameter does not support regular expressions.

startTime

Specifies the start time for the consumption offset.

String

No

None

Format: yyyy-MM-dd hh:mm:ss. If this parameter is not set and the job is not resuming from a saved state, consumption starts from the earliest binlog.

source.scan.fetch-size

Specifies the batch size for batch reads.

Integer

No

512

Not applicable.

source.scan.timeout-seconds

Specifies the timeout for batch reads.

Integer

No

60

Unit: seconds.

source.scan.filter-push-down.enabled

Specifies whether to push down filters during a batch read.

Boolean

No

false

  • false (default): Does not push down filters.

  • true: Pushes down supported filter conditions to Hologres during a batch read.

Note
  • This parameter cannot be enabled at the same time as the source.binlog.filter-push-down.enabled parameter.

  • This parameter takes effect in two scenarios:

    • If source.binlog is set to false, a batch read is performed and filter pushdown is enabled.

    • Setting source.binlog to true and source.binlog.startup-mode to INITIAL enables full and incremental data reading, and filter pushdown takes effect during the full data reading phase.

source.binlog.filter-push-down.enabled

Specifies whether to push down filters during binlog consumption.

Boolean

No

false

  • false (default): Does not push down filters.

  • true: Pushes down supported filter conditions to Hologres during binlog consumption.

Note
  • This parameter is supported only for VVR 11.3 or later and Hologres instances of version 4.0 or later. This parameter cannot be enabled at the same time as the source.scan.filter-push-down.enabled parameter.

  • When source.binlog is set to true, filter pushdown is enabled. For example, when source.binlog.startup-mode is set to INITIAL, filter pushdown is effective for both the full and incremental phases.

scan.prefer.physical-column.over.metadata-column

Specifies whether to prioritize reading data from a physical column when it shares the same name as a metadata column.

Boolean

No

false

This parameter is supported only in VVR 11.5 and later. Earlier versions always prioritize reading data from the metadata column.

Sink table parameters

Parameter

Description

Type

Required

Default

Remarks

sink.write-mode

The data write mode.

ENUM

No

INSERT

  • INSERT: Default. Uses JDBC to write data with INSERT statements.

  • COPY_STREAM: Uses the fixed COPY streaming method, a high-performance option for scenarios requiring high throughput and low latency. This mode does not support deleting data, writing to a parent partitioned table, or using the sink.ignore-null-when-update.enabled parameter.

  • COPY_BULK_LOAD: Performs bulk writes by using the COPY protocol. COPY_BULK_LOAD currently applies only to tables without a primary key (an exception is thrown if a primary key is duplicated). Compared to COPY_STREAM, this mode uses fewer Hologres resources for writes.

  • COPY_BULK_LOAD_ON_CONFLICT: Uses the COPY protocol for batch writes and supports writing to tables with a primary key and handling primary key conflicts.

Note
  • The COPY_BULK_LOAD_ON_CONFLICT mode is supported only in VVR 11.3 and later and requires Hologres V3.1 or later. The mode works by reshuffling data on the Flink side based on the DistributionKey of the Hologres sink table. This ensures that data for the same shard is written by the same Flink task, which reduces the table lock scope from table level to shard level for batch imports and enables concurrent writes to different shards. Therefore, set the job concurrency to match the shard count of the Hologres sink table.

  • In COPY_BULK_LOAD and COPY_BULK_LOAD_ON_CONFLICT modes, data becomes visible only after a checkpoint succeeds. These modes are suitable for scenarios where immediate data visibility is not required or for batch imports of historical data.

  • In COPY_STREAM mode, the values of time functions such as CURRENT_TIMESTAMP and NOW() are fixed when the COPY connection is established and are not updated for each record. If a Hologres table column uses these functions as its default value (for example, DEFAULT CURRENT_TIMESTAMP), the value of the column reflects the connection establishment time, not the actual write time of the record. To obtain accurate write times, you must explicitly specify the timestamp value in your Flink job instead of relying on the default value in Hologres.

sink.on-conflict-action

The policy for handling a primary key conflict.

ENUM

No

INSERT_OR_UPDATE

  • INSERT_OR_IGNORE: Keeps the first record and ignores all subsequent records with the same primary key.

  • INSERT_OR_REPLACE: Replaces the entire existing row with the new row.

  • INSERT_OR_UPDATE: Default. Updates a subset of columns in an existing row.

    For example, consider a table with columns a, b, c, and d, where a is the primary key. If an incoming record provides values only for columns a and b, a primary key conflict causes the system to update only column b and leave columns c and d unchanged.

sink.create-missing-partition

Specifies whether to automatically create a partition based on the partition value if a matching one does not exist when writing to a partitioned table.

Boolean

No

false

  • If you use the DATE data type as the partition key and enable dynamic partitioning, the names of auto-created partitions follow the dynamic partitioning naming convention.

  • Use this parameter with caution. Ensure that partition values do not contain dirty data. Otherwise, you might create incorrect partitions, which can lead to a failover.

  • If sink.write-mode is not INSERT, you cannot write to a parent partitioned table.

sink.delete-strategy

The policy for handling retraction messages.

String

No

CHANGELOG_STANDARD

  • IGNORE_DELETE: Ignores UPDATE_BEFORE and DELETE messages. This option is suitable for scenarios that require only inserts or updates but not deletes.

  • NON_PK_FIELD_TO_NULL: Ignores UPDATE_BEFORE messages and processes DELETE messages by setting non-primary key fields to NULL. This option is suitable for partial update scenarios where you want to perform a delete without affecting other columns.

  • DELETE_ROW_ON_PK: Ignores UPDATE_BEFORE messages and processes DELETE messages by deleting the entire row based on the primary key. This option is suitable for partial update scenarios where you want to delete the entire row.

  • CHANGELOG_STANDARD: Follows the standard Flink SQL changelog mechanism. It does not ignore delete operations. This option performs updates by first deleting the old record and then inserting the new one, which ensures data accuracy. This option is suitable for scenarios that do not involve partial updates.

Note

Enabling the NON_PK_FIELD_TO_NULL option can result in records where only the primary key column has a value and all other columns are null.

sink.ignore-null-when-update.enabled

When sink.on-conflict-action is 'INSERT_OR_UPDATE', specifies whether to ignore null values in the incoming data during an update.

Boolean

No

false

  • false: Default. Writes null values to the Hologres sink table.

  • true: Ignores null values in the incoming update data.

Note

This parameter is supported only when sink.write-mode is set to INSERT.

sink.ignore-null-when-update-by-expr.enabled

When sink.on-conflict-action is 'INSERT_OR_UPDATE', specifies whether to use an expression-based method to ignore null values in incoming update data.

Boolean

No

false

This method offers better performance than sink.ignore-null-when-update.enabled.

  • false: Default.

    • If sink.ignore-null-when-update.enabled is true, null values in updates are ignored.

    • If sink.ignore-null-when-update.enabled is false, null values are written to the Hologres sink table.

  • true: Ignores null values in incoming update data, regardless of the sink.ignore-null-when-update.enabled setting.

Note
  • This parameter is supported only when sink.write-mode is set to INSERT.

  • Requires Hologres V4.0 or later.

sink.default-for-not-null-column.enabled

Specifies whether the connector provides a default value when a null is written to a NOT NULL column that lacks a defined default value.

Boolean

No

true

  • true: Default. Allows the connector to provide and write a default value based on the following rules:

    • For a String data type, an empty string ("") is written.

    • For a Number data type, 0 is written.

    • For Date, timestamp, or timestamptz data types, 1970-01-01 00:00:00 is written.

  • false: Does not provide a default value. Writing a null value to a NOT NULL column throws an exception.

Note

This parameter is supported only when sink.write-mode is set to INSERT, and sink.on-conflict-action is set to an option other than INSERT_OR_UPDATE.

sink.remove-u0000-in-text.enabled

Specifies whether the connector removes the illegal \u0000 character from string types during a write operation.

Boolean

No

true

  • false: The connector does not modify the data. If dirty data is encountered, a write operation may throw an error similar to the following: ERROR: invalid byte sequence for encoding "UTF8": 0x00

    In this case, you must either process the dirty data in the source table or define the logic for handling dirty data in your SQL statement.

  • true: Default. The connector removes the \u0000 character from string types to prevent write errors.

sink.partial-insert.enabled

Specifies whether to insert or update only the fields defined in the INSERT statement.

Boolean

No

false

  • false: Default. All fields defined in the DDL of the sink table are updated. Fields that are not declared in the INSERT statement are updated to null.

  • true: Pushes only the fields defined in the INSERT statement to the connector, which allows you to update or insert only the declared fields.

Note
  • This parameter takes effect only when the sink.on-conflict-action parameter is set to INSERT_OR_UPDATE.

sink.deduplication.enabled

Specifies whether to perform deduplication during batching.

Boolean

No

true

  • true: Default. If a batch contains multiple records with the same primary key, the connector deduplicates them and writes only the last record to the Hologres sink table. Consider a table with two fields, where the first is the primary key:

    • If the records INSERT (1,'a') and INSERT (1,'b') arrive in sequence, only the last record, (1,'b'), is written to the Hologres sink table after deduplication.

    • If the Hologres sink table already contains the record (1,'a'), and the records DELETE (1,'a') and INSERT (1,'b') arrive in sequence, only the last record (1,'b') is written to Hologres. This results in a direct update instead of a delete followed by an insert.

  • false: Disables deduplication during batching. If a new record has the same primary key as a record in the current batch, the batch is first written to the sink, and then the new record is processed.

Note
  • This parameter is supported only when sink.write-mode is set to INSERT.

  • If deduplication is disabled, write operations may degrade to single-row writes in extreme cases, such as when all records have the same primary key. This can degrade performance.

sink.aggressive-flush.enabled

Specifies whether to enable aggressive flush mode.

Boolean

No

false

If set to true, the connector forcibly flushes a batch when the connection is idle, even if the batch has not reached its configured size. This reduces data write latency during low-traffic periods.

Note

This parameter is supported only when sink.write-mode is set to INSERT or COPY_STREAM.

sink.insert.check-and-put.column

Enables conditional updates and specifies the column to check.

String

No

None

The value of this parameter must be an existing column name in the Hologres table.

Important
  • This parameter is supported only when sink.write-mode is set to INSERT.

  • The sink table must have a primary key, and the sink.on-conflict-action parameter must be INSERT_OR_UPDATE or INSERT_OR_REPLACE.

  • Because a reverse lookup is required, create the sink table as a row-oriented table or a hybrid row-column table for better performance.

  • If many records share the same primary key, check-and-put operations can degrade to single-row writes, which reduces write performance.

sink.insert.check-and-put.operator

The comparison operator for the conditional update operation.

String

No

GREATER

Compares the check column of the incoming record with the existing value in the table. The update proceeds if the condition is met. Supported operators are: GREATER, GREATER_OR_EQUAL, EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, IS_NULL, and IS_NOT_NULL.

sink.insert.check-and-put.null-as

During a conditional update, treats a null value in the existing data as the value specified by this parameter.

String

No

None

In PostgreSQL, any comparison with NULL returns FALSE. Therefore, when the existing value in the table is NULL, you must set this parameter to a specific value to use for comparison. This is equivalent to the COALESCE function in SQL.

sink.insert.batch-size

In INSERT mode, the maximum number of records to include in a batch before writing.

Integer

No

512

The connector triggers a write when any of the sink.insert.batch-size, sink.insert.batch-byte-size, or sink.insert.flush-interval-ms thresholds is reached.

sink.insert.batch-byte-size

In INSERT mode, the maximum size in bytes of a batch before writing.

Long

No

2097152 (2 MB)

sink.insert.flush-interval-ms

In INSERT mode, the maximum interval in milliseconds to wait before a batch is flushed to Hologres.

Long

No

10000

sink.copy.format

The data transmission format used in COPY mode.

String

No

  • COPY_STREAM mode defaults to binary.

  • COPY_BULK_LOAD or COPY_BULK_LOAD_ON_CONFLICT mode defaults to text.

Supported formats for COPY_STREAM mode:

  • binary

  • text

  • binaryrow (Requires Hologres engine V4.1.0 or later)

Supported format for COPY_BULK_LOAD or COPY_BULK_LOAD_ON_CONFLICT mode: text only

Note

This parameter is supported only when sink.write-mode is set to COPY_STREAM, COPY_BULK_LOAD, or COPY_BULK_LOAD_ON_CONFLICT.

sink.insert.conflict-update-set

The Hologres expression used to update the row when a primary key conflict occurs.

String

No

None

Equivalent to insert into tbl values(xxx) on conflict(pk) do update set <conflict-update-set>. You can specify a Hologres expression or function.

For example, if this parameter is set to col1=old.col1+excluded.col1,col2=excluded.col2, a primary key conflict causes the value of col1 to be updated to the sum of the old and new values, and the value of col2 to be updated to the new value.

  • If this parameter is not specified, the connector updates all incoming fields to their new values by default.

  • For stateful expressions where the result depends on the old value (for example, col=old.col+excluded.col), ensure that a column can serve as a row version number and set sink.insert.conflict-where to excluded.seq>old.seq. This ensures data correctness after a failover and recovery.

Note

This parameter is supported only when sink.write-mode is set to INSERT.

sink.insert.conflict-where

The Hologres filter condition for triggering an update during a primary key conflict.

String

No

None

Equivalent to insert into tbl values(xxx) on conflict(pk) do update set <conflict-update-set> where <conflict-where>. You can specify a Hologres expression or function.

For example, if this parameter is set to excluded.col1>old.col1, an update is triggered only when the new value of col1 is greater than the existing value.

Note
  • This parameter is supported only when sink.write-mode is set to INSERT.

  • This parameter conflicts with sink.insert.check-and-put* parameters. Configuring them at the same time causes an error.

Dimension table parameters

Parameter

Description

Type

Required

Default

Notes

lookup.read.batch-size

The maximum number of records to batch for point queries on a Hologres dimension table.

Integer

No

256

None

lookup.read.timeout-ms

The timeout for point queries on a dimension table.

Long

No

0, which means no timeout.

None

lookup.read.column-table.enabled

Specifies whether to use a column-oriented table as the dimension table.

Boolean

No

false

Column-oriented tables perform poorly for point queries. We recommend using a row-oriented or hybrid row-column table as a dimension table. A warning is logged if this parameter is enabled for a column-oriented table.

lookup.insert-if-not-exists

Specifies whether to insert a record if it does not exist.

Boolean

No

false

If a point query finds no match for the current record in the dimension table, the connector inserts the record.

cache

The cache policy.

String

No

None

Hologres supports only two cache policies: None and LRU.

cacheSize

The cache size, in rows.

Integer

No

10000

After you select the LRU cache policy, you can set the cache size. The unit is entries.

cacheTTLMs

The cache time-to-live (TTL), in milliseconds.

Long

No

See Notes.

The unit is milliseconds. The default value of cacheTTLMs depends on the cache configuration:

  • If the cache is configured as LRU, cacheTTLMs specifies the cache timeout. The default setting is no expiration.

  • If the cache is configured as None, cacheTTLMs can be omitted, which indicates that the cache does not time out.

cacheEmpty

Specifies whether to cache empty join results.

Boolean

No

true

  • true (Default): Caches empty join results.

  • false: Does not cache empty join results.

    However, if the condition before AND in a join statement is met but the condition after AND is not, the empty result is still cached. The following code provides an example.

    LEFT JOIN latest_emergency FOR SYSTEM_TIME AS OF PROCTIME() AS t2
     ON t1.alarm_id = t2.alarm_id -- If a dynamic alarm is detected, match it by using the dynamic alarm ID. Otherwise, ignore the dynamic alarm ID field.
     AND CASE
     WHEN alarm_type = 2 THEN t1.dynamic_id = t2.dynamic_alarm_id
     ELSE true
     END
Important

  • To improve performance and reduce I/O pressure on static or slowly changing dimension tables, use the default value (true).

  • For frequently updated dimension tables, set this parameter to false or use a short cacheTTLMs value. This ensures that empty cache entries are evicted promptly to prevent subsequent join failures.

async

Specifies whether to return results asynchronously.

Boolean

No

false

  • true: Returns results asynchronously.

  • false (Default): Returns results synchronously.

Note
  • Asynchronous results are unordered.

  • Asynchronous queries for a dimension table are controlled by both the async and lookup.async parameters. Asynchronous querying is enabled if either this parameter or lookup.async is true.

    The default value of lookup.async is true. Therefore, asynchronous querying is enabled if async is set to false.

    To disable asynchronous queries, you must set both parameters to false.

lookup.async

Specifies whether to enable asynchronous queries for dimension tables.

Boolean

No

true

  • true (Default): Enables asynchronous queries.

  • false: Disables asynchronous queries.

lookup.filter-push-down.enabled

Specifies whether to push down dimension table filter conditions to the Hologres server.

Boolean

No

false

This feature supports only comparison operations between a column and a constant. The connector pushes down only equality (=) and comparison (<, <=, >, >=) operators.

Note

This parameter is supported only in Realtime Compute Engine VVR 11.4 and later.