{"record":{"id":"57c2e51424dd57c5","repo":"apache/seatunnel","slug":"the-variable-placeholder-table-name-has-been","errorCode":null,"errorMessage":"The variable placeholder `${table_name}` has been marked as deprecated and will be removed soon, please use `${table}`","messagePattern":"The variable placeholder `(.+?)` has been marked as deprecated and will be removed soon, please use `(.+?)`","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/util/CatalogUtil.java","lineNumber":102,"sourceCode":"                        SaveModePlaceHolder.ROWTYPE_UNIQUE_KEY.getReplacePlaceHolder(),\n                        Matcher.quoteReplacement(uniqueKey));\n        Map<String, CreateTableParser.ColumnInfo> columnInTemplate =\n                CreateTableParser.getColumnList(template);\n        template = mergeColumnInTemplate(columnInTemplate, tableSchema, template);\n\n        String rowTypeFields =\n                tableSchema.getColumns().stream()\n                        .filter(column -> !columnInTemplate.containsKey(column.getName()))\n                        .map(x -> columnToConnectorType(x))\n                        .collect(Collectors.joining(\",\\n\"));\n\n        if (template.contains(SaveModePlaceHolder.TABLE_NAME.getPlaceHolder())) {\n            // TODO: Remove this compatibility config\n            template =\n                    template.replaceAll(\n                            SaveModePlaceHolder.TABLE_NAME.getReplacePlaceHolder(),\n                            Matcher.quoteReplacement(table));\n            log.warn(\n                    \"The variable placeholder `${table_name}` has been marked as deprecated and will be removed soon, please use `${table}`\");\n        }\n\n        return template.replaceAll(\n                        SaveModePlaceHolder.DATABASE.getReplacePlaceHolder(),\n                        Matcher.quoteReplacement(database))\n                .replaceAll(\n                        SaveModePlaceHolder.TABLE.getReplacePlaceHolder(),\n                        Matcher.quoteReplacement(table))\n                .replaceAll(\n                        SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(),\n                        Matcher.quoteReplacement(rowTypeFields))\n                .replaceAll(\n                        SaveModePlaceHolder.COMMENT.getReplacePlaceHolder(),\n                        Matcher.quoteReplacement(\n                                Objects.isNull(comment)\n                                        ? \"\"\n                                        : comment.replace(\"'\", \"''\").replace(\"\\\\\", \"\\\\\\\\\")));","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/util/CatalogUtil.java#L84-L120","documentation":"CatalogUtil.getCreateTableSql applies save-mode placeholders to a template SQL. The legacy `${table_name}` placeholder is deprecated in favor of `${table}`; when the template still contains the old placeholder, this warning is logged and the substitution still proceeds for backward compatibility.","triggerScenarios":"A save-mode template (e.g. save_mode_create_template option) contains `${table_name}` instead of `${table}`; the code replaces it but warns that support will be removed.","commonSituations":"Templates copied from old SeaTunnel versions or older documentation; upgrades where user configs were not migrated to the new placeholder name.","solutions":["Replace `${table_name}` with `${table}` in your create-table template","Review connector docs for the current SaveModePlaceHolder list and update templates accordingly","Test the save-mode template after upgrade so removal of the legacy placeholder doesn't break automation"],"exampleFix":"// before\nsave_mode_create_template = \"CREATE TABLE IF NOT EXISTS ${database}.${table_name} (...)\"\n// after\nsave_mode_create_template = \"CREATE TABLE IF NOT EXISTS ${database}.${table} (...)\"","handlingStrategy":"validation","validationCode":"// Before deploying, check your template\nif (template.contains(\"${table_name}\")) {\n  throw new IllegalStateException(\"Template uses deprecated ${table_name}; use ${table}\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Grep your SeaTunnel configs for ${table_name} before upgrades","Use only current SaveModePlaceHolder names from docs","Add a config lint step in CI for save-mode templates"],"tags":["deprecation","config","placeholder","save-mode"],"backgroundTag":"deprecated-api-usage","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}