{"record":{"id":"f64eeeda0b9d0437","repo":"influxdata/influxdb","slug":"0-is-a-reserved-column","errorCode":null,"errorMessage":"'{0}' is a reserved column","messagePattern":"'(.+?)' is a reserved column","errorType":"validation","errorClass":"CatalogError","httpStatus":400,"severity":"error","filePath":"influxdb3_catalog/src/error.rs","lineNumber":97,"sourceCode":"    InvalidDistinctCacheColumnType,\n\n    #[error(\"only uint64, int64, bool, tag, and string columns are supported in the last cache\")]\n    InvalidLastCacheKeyColumnType,\n\n    #[error(\"plugin trigger is already enabled\")]\n    TriggerAlreadyEnabled,\n\n    #[error(\"plugin trigger is already disabled\")]\n    TriggerAlreadyDisabled,\n\n    #[error(\"invalid column type for column '{column_name}', expected {expected}, got {got}\")]\n    InvalidColumnType {\n        column_name: Arc<str>,\n        expected: InfluxColumnType,\n        got: InfluxColumnType,\n    },\n\n    #[error(\"'{0}' is a reserved column\")]\n    ReservedColumn(Arc<str>),\n\n    #[error(\n        \"table '{table_name}' is not defined in database '{db_name}', which uses explicit schemas; \\\n         create the table with the /api/v3/configure/table API before writing to it\"\n    )]\n    UndeclaredTable {\n        db_name: Arc<str>,\n        table_name: Arc<str>,\n    },\n\n    #[error(\n        \"column '{column_name}' ({column_type}) is not defined in table '{table_name}' of \\\n         database '{db_name}', which uses explicit schemas; add the column with the \\\n         /api/v3/configure/table API before writing to it\"\n    )]\n    UndeclaredColumn {\n        db_name: Arc<str>,","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/error.rs#L79-L115","documentation":"CatalogError::ReservedColumn is thrown when attempting to create a table that defines a column using a name reserved by the system, such as the intrinsic 'time' column. The catalog rejects the table definition so its internal columns are never shadowed (raised from TableDefinition creation, e.g. influxdb3_catalog/src/catalog/versions/v2.rs:3301).","triggerScenarios":"Calling create-table (or the /api/v3/configure/table API) with a column named 'time' (or another reserved name) in its column list.","commonSituations":"Auto-generating schemas from CSV/Parquet headers that contain a 'time' column; porting schemas from other databases where 'time' is an ordinary identifier; ORM-generated table definitions.","solutions":["Rename the column to a non-reserved name (e.g. 'event_time') in the table definition.","Remove the column from the definition — the intrinsic 'time' column exists automatically and need not be declared.","If importing data, map the source's reserved-name column onto an allowed column name during ingestion."],"exampleFix":"// before\n{\"table\": \"cpu\", \"columns\": [{\"name\": \"time\", \"type\": \"string\"}, {\"name\": \"host\", \"type\": \"tag\"}]}\n// after\n{\"table\": \"cpu\", \"columns\": [{\"name\": \"event_time\", \"type\": \"string\"}, {\"name\": \"host\", \"type\": \"tag\"}]}","handlingStrategy":"validation","validationCode":"const RESERVED = new Set([\"time\"]);\nfunction assertNoReservedColumns(columns) {\n  const bad = columns.filter(c => RESERVED.has(c.name.toLowerCase()));\n  if (bad.length) throw new Error(`reserved column names: ${bad.map(c => c.name)}`);\n}","typeGuard":"const isReserved = (name) => [\"time\"].includes(name.toLowerCase());","tryCatchPattern":null,"preventionTips":["Never declare 'time' explicitly — it is intrinsic to every table.","Rename columns during CSV/Parquet imports before creating tables.","Keep a denylist of reserved names in schema-generation tooling."],"tags":["influxdb3","schema","reserved-name","column"],"backgroundTag":"invalid-identifier","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}