Rogier
03/09/2026, 5:46 PMgreptime_timestamp prefix. We tried setting the prefix to empty in the config, but since that didn't work, we decided to pre-create the table schema to explicitly define the time index as ts.
The Issue: When we pre-create the table using the SQL below, we experience partial data loss in specific columns during ingestion:
CREATE TABLE IF NOT EXISTS $table (
ts TIMESTAMP(9) TIME INDEX,
periph_id STRING,
PRIMARY KEY (periph_id)
) ENGINE=mito;
• Symptoms: Most columns are created automatically via auto-schema evolution, but data only populates in some of them. For example, for accelerometer data (g_x, g_y, g_z), only g_z contains data; the others remain null or empty.
• The Twist: If we do not pre-create the table (starting with an empty database), all columns (g_x, g_y, g_z) are created and populated correctly—but we are stuck with the default greptime_timestamp name.
Our Questions:
1. Is there a known limitation when mixing pre-defined TIME INDEX columns with auto-evolving ILP ingestion?
2. Why would g_z succeed while g_x and g_y fail when the table is pre-created?
3. Is there a way to force the default timestamp name to timestamp (empty prefix) in the configuration without pre-creating every table?
Thanks for the help!dennis zhuang
03/09/2026, 11:56 PMmerge_mode. For the InfluxDB data model, merge_mode must be set to last_non_null. This affects the UPDATE semantics. Please refer to the following documentation:
• https://docs.greptime.com/user-guide/ingest-data/for-iot/influxdb-line-protocol/#data-model
• https://docs.greptime.com/reference/sql/create/#create-a-table-with-merge-mode
3. You can set default_column_prefix="" in the configuration (standalone and datanode). This will change the default time index column from greptime_timestamp to`timestamp`.Rogier
03/10/2026, 5:38 PMwith('merge_mode'='last_non_null'); did the trick! Still I don't get why the merge mode is different in a non-initialized table? Is this done to gain influxdb compatibility when a table is initialized purely by ILP, and follow "SQL semantics" when created by a create table SQL statement? Anyway cleared up now, many thanks! 🙂
About the setting of `default_column_prefix=""`I'm running greptime in a Docker container, passsing most of the config params via Env vars. When i try to pass an set, but empty env var (in my case GREPTIMEDB_STANDALONE__DEFAULT_COLUMN_PREFIX="") greptime complaints about illegal chars in the prefix seemingly referring to the literal " interpreted as prefix. So setting the prefix works, but not setting it empty.. I could introduce a config file purely for this, but there must be a cleaner way IMO. Furthermore would it hurt to ad a config param for setting the default primary timestamp name directly (instead of just making the prefix configurable)dennis zhuang
03/11/2026, 3:00 AMmerge_mode set to last_non_null by default. You can run SHOW CREATE TABLE [table] to see the table definition.
2. Good catch. Would you mind creating an issue in the GreptimeDB repo so we can look into it?
3. We discussed this before, but decided to use the prefix approach because there are other columns such as greptime_value.Rogier
03/12/2026, 11:44 AMdennis zhuang
03/12/2026, 11:50 AMdennis zhuang
03/12/2026, 2:42 PMRogier
03/13/2026, 9:34 AM