{"record":{"id":"2d423a571e18975c","repo":"prestodb/presto","slug":"hive-invalid-metadata-2d423a","errorCode":"HIVE_INVALID_METADATA","errorMessage":"Table/partition metadata has invalid sorting order: ","messagePattern":"Table/partition metadata has invalid sorting order: ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-hive-metastore/src/main/java/com/facebook/presto/hive/metastore/SortingColumn.java","lineNumber":67,"sourceCode":"\n        public SortOrder getSortOrder()\n        {\n            return sortOrder;\n        }\n\n        public int getHiveOrder()\n        {\n            return hiveOrder;\n        }\n\n        public static Order fromMetastoreApiOrder(int value, String tablePartitionName)\n        {\n            for (Order order : values()) {\n                if (value == order.getHiveOrder()) {\n                    return order;\n                }\n            }\n            throw new PrestoException(HIVE_INVALID_METADATA, \"Table/partition metadata has invalid sorting order: \" + tablePartitionName);\n        }\n    }\n\n    private final String columnName;\n    private final Order order;\n\n    @JsonCreator\n    public SortingColumn(\n            @JsonProperty(\"columnName\") String columnName,\n            @JsonProperty(\"order\") Order order)\n    {\n        this.columnName = requireNonNull(columnName, \"columnName is null\");\n        this.order = requireNonNull(order, \"order is null\");\n    }\n\n    @JsonProperty\n    public String getColumnName()\n    {","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-hive-metastore/src/main/java/com/facebook/presto/hive/metastore/SortingColumn.java#L49-L85","documentation":"SortingColumn.fromMetastoreApiOrder converts a Hive metastore Order byte value into Presto's SortingColumn.Order enum (ASC/DESC). If the stored sort-order byte does not map to any known HiveOrder value, the metadata is considered corrupt and HIVE_INVALID_METADATA is thrown. This guards against manually edited or foreign metadata in the metastore.","triggerScenarios":"Reading table or partition SORT_ORDER metadata whose <column, order> byte is not 0 (ASC) or 1 (DESC) — e.g. metastore data written by another engine or corrupted by manual edits to the SerDe/table properties.","commonSituations":"Hive tables whose table parameters were hand-edited; metastore populated by third-party tools writing non-standard sort order values; metadata corruption after failed upgrades; partition-level sort info diverging from table-level.","solutions":["Inspect the table/partition SORT_ORDER in the metastore (DESCRIBE FORMATTED or metastore DB) and fix the byte value to 0 or 1","Drop and re-create the affected table/partition sort order with valid ASC/DESC values","Restore the metastore entry from backup if corruption is suspected","If another engine wrote the metadata, align it to Hive-standard sort order encoding"],"exampleFix":"// before (corrupt metastore metadata)\nSORT_ORDER: (col_a, 2)\n// after\nSORT_ORDER: (col_a, 1)  -- 1 = DESC, 0 = ASC","handlingStrategy":"validation","validationCode":"// Validate sort-order bytes before reading table metadata in Presto\nfor (Order order : storageDescriptor.getSortCols()) {\n    if (order.getOrder() != 0 && order.getOrder() != 1) {\n        throw new IllegalArgumentException(\"bad sort order byte: \" + order.getOrder());\n    }\n}","typeGuard":"boolean hasValidSortOrder(byte hiveOrder) {\n    return hiveOrder == 0 || hiveOrder == 1;\n}","tryCatchPattern":"try {\n    table.getSortColumns();\n} catch (PrestoException e) {\n    if (e.getErrorCode().getName().equals(\"HIVE_INVALID_METADATA\")) {\n        // fix SORT_ORDER in metastore to 0 (ASC) or 1 (DESC)\n    }\n    throw e;\n}","preventionTips":["Do not hand-edit metastore SORT_ORDER values","Only use 0/1 for sort order bytes when writing metadata from external tools","Validate metadata after metastore migrations","Prefer ASC/DESC keywords in DDL over raw bytes"],"tags":["hive","metadata","sort-order","corrupt-metadata"],"backgroundTag":"hive-invalid-metadata","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"}