{"record":{"id":"8b1af4f7316c1c35","repo":"prestodb/presto","slug":"not-supported-8b1af4","errorCode":"NOT_SUPPORTED","errorMessage":"Merge paradigm not supported: ","messagePattern":"Merge paradigm not supported: ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/operator/MergeProcessorOperator.java","lineNumber":88,"sourceCode":"                int rowIdChannel,\n                int mergeRowChannel,\n                List<Integer> targetColumnChannels)\n        {\n            switch (merge.getParadigm()) {\n                case DELETE_ROW_AND_INSERT_ROW:\n                    return new DeleteAndInsertMergeProcessor(\n                            merge.getColumnTypes(),\n                            merge.getTargetTableRowIdColumnType(),\n                            rowIdChannel,\n                            mergeRowChannel,\n                            targetColumnChannels);\n                case CHANGE_ONLY_UPDATED_COLUMNS:\n                    return new ChangeOnlyUpdatedColumnsMergeProcessor(\n                            rowIdChannel,\n                            mergeRowChannel,\n                            targetColumnChannels);\n                default:\n                    throw new PrestoException(NOT_SUPPORTED, \"Merge paradigm not supported: \" + merge.getParadigm());\n            }\n        }\n\n        @Override\n        public Operator createOperator(DriverContext driverContext)\n        {\n            checkState(!closed, \"Factory is already closed\");\n            OperatorContext context = driverContext.addOperatorContext(operatorId, planNodeId, MergeProcessorOperator.class.getSimpleName());\n            return new MergeProcessorOperator(context, rowChangeProcessor);\n        }\n\n        @Override\n        public void noMoreOperators()\n        {\n            closed = true;\n        }\n\n        @Override","sourceCodeStart":70,"sourceCodeEnd":106,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/operator/MergeProcessorOperator.java#L70-L106","documentation":"MergeProcessorOperator.createRowChangeProcessor switches on the MergeSourceHandle's paradigm (e.g. CHANGE_ONLY_UPDATED_COLUMNS) to build the row change processor. If the paradigm has no case, Presto throws NOT_SUPPORTED, meaning the plan requested a merge paradigm this operator version cannot execute.","triggerScenarios":"A MERGE statement (or connector-provided merge handle) produces a paradigm value not covered by the switch in createRowChangeProcessor.","commonSituations":"Running a query planned by a newer coordinator/connector against workers with an older operator implementation, or connector authors introducing a custom paradigm without operator support.","solutions":["Upgrade all nodes to a version that supports the merge paradigm in use","Use a MERGE form supported by your Presto version","If you are a connector author, implement the missing paradigm case in MergeProcessorOperator.createRowChangeProcessor"],"exampleFix":"// before\ncase CHANGE_ONLY_UPDATED_COLUMNS: ...\ndefault: throw new PrestoException(NOT_SUPPORTED, \"Merge paradigm not supported: \" + merge.getParadigm());\n// after\ncase CHANGE_ONLY_UPDATED_COLUMNS: ...\ncase FULL_ROW_UPDATE: return new FullRowUpdateMergeProcessor(...);\ndefault: throw ...","handlingStrategy":"try-catch","validationCode":"// ensure client and server versions support the merge paradigm used\n// check coordinator: SELECT * FROM runtime.nodes; -- all nodes same version","typeGuard":null,"tryCatchPattern":"try { execute(mergeSql); } catch (PrestoException e) {\n    if (e.getErrorCode().getName().equals(\"NOT_SUPPORTED\") && e.getMessage().startsWith(\"Merge paradigm not supported\")) {\n        throw new IllegalStateException(\"Upgrade Presto or use a supported MERGE form: \" + e.getMessage());\n    } throw e;\n}","preventionTips":["Keep coordinator and workers on identical versions","Check release notes for supported MERGE paradigms before using new MERGE syntax","Connector authors: add the paradigm case to createRowChangeProcessor in the same change that introduces it"],"tags":["merge","not-supported","version-mismatch"],"backgroundTag":"feature-not-supported-version","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}