diff --git a/presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloErrorCode.java b/presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloErrorCode.java
index c041beebe8af7..1c5f129324729 100644
--- a/presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloErrorCode.java
+++ b/presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.accumulo;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum AccumuloErrorCode
implements ErrorCodeSupplier
diff --git a/presto-atop/src/main/java/com/facebook/presto/atop/AtopErrorCode.java b/presto-atop/src/main/java/com/facebook/presto/atop/AtopErrorCode.java
index 870137d2c039a..ec3d259c8ffb7 100644
--- a/presto-atop/src/main/java/com/facebook/presto/atop/AtopErrorCode.java
+++ b/presto-atop/src/main/java/com/facebook/presto/atop/AtopErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.atop;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum AtopErrorCode
implements ErrorCodeSupplier
diff --git a/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/JdbcErrorCode.java b/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/JdbcErrorCode.java
index 9cd14a865c315..76dc9343dbde4 100644
--- a/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/JdbcErrorCode.java
+++ b/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/JdbcErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.plugin.jdbc;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum JdbcErrorCode
implements ErrorCodeSupplier
diff --git a/presto-benchmark-runner/pom.xml b/presto-benchmark-runner/pom.xml
index 7b636c29a4045..f693144dc0185 100644
--- a/presto-benchmark-runner/pom.xml
+++ b/presto-benchmark-runner/pom.xml
@@ -67,6 +67,11 @@
validation-api
+
+ com.facebook.presto
+ presto-common
+
+
com.facebook.presto
presto-jdbc
diff --git a/presto-benchmark-runner/src/main/java/com/facebook/presto/benchmark/framework/AbstractPhaseExecutor.java b/presto-benchmark-runner/src/main/java/com/facebook/presto/benchmark/framework/AbstractPhaseExecutor.java
index 070ad0aebf7fe..58c1e285846f6 100644
--- a/presto-benchmark-runner/src/main/java/com/facebook/presto/benchmark/framework/AbstractPhaseExecutor.java
+++ b/presto-benchmark-runner/src/main/java/com/facebook/presto/benchmark/framework/AbstractPhaseExecutor.java
@@ -18,8 +18,8 @@
import com.facebook.presto.benchmark.event.BenchmarkQueryEvent;
import com.facebook.presto.benchmark.prestoaction.PrestoAction;
import com.facebook.presto.benchmark.prestoaction.PrestoActionFactory;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.jdbc.QueryStats;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.ErrorCodeSupplier;
import com.facebook.presto.sql.parser.ParsingOptions;
import com.facebook.presto.sql.parser.SqlParser;
diff --git a/presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryErrorCode.java b/presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryErrorCode.java
index 4eae7454a54d2..d1a95cc2abaf8 100644
--- a/presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryErrorCode.java
+++ b/presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.plugin.bigquery;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum BigQueryErrorCode
implements ErrorCodeSupplier
diff --git a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraErrorCode.java b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraErrorCode.java
index 80fa5112e6a7f..7669c95f9f1ce 100644
--- a/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraErrorCode.java
+++ b/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.cassandra;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum CassandraErrorCode
implements ErrorCodeSupplier
diff --git a/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseErrorCode.java b/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseErrorCode.java
index 2094f99db129f..caf75ec2b06d6 100755
--- a/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseErrorCode.java
+++ b/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.plugin.clickhouse;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum ClickHouseErrorCode
implements ErrorCodeSupplier
diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/ErrorCode.java b/presto-common/src/main/java/com/facebook/presto/common/ErrorCode.java
similarity index 98%
rename from presto-spi/src/main/java/com/facebook/presto/spi/ErrorCode.java
rename to presto-common/src/main/java/com/facebook/presto/common/ErrorCode.java
index c72729c2999f2..cb810d5d543ff 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/ErrorCode.java
+++ b/presto-common/src/main/java/com/facebook/presto/common/ErrorCode.java
@@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.facebook.presto.spi;
+package com.facebook.presto.common;
import com.facebook.drift.annotations.ThriftConstructor;
import com.facebook.drift.annotations.ThriftField;
diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/ErrorType.java b/presto-common/src/main/java/com/facebook/presto/common/ErrorType.java
similarity index 96%
rename from presto-spi/src/main/java/com/facebook/presto/spi/ErrorType.java
rename to presto-common/src/main/java/com/facebook/presto/common/ErrorType.java
index 3d722169a5074..868be01345bfe 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/ErrorType.java
+++ b/presto-common/src/main/java/com/facebook/presto/common/ErrorType.java
@@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.facebook.presto.spi;
+package com.facebook.presto.common;
import com.facebook.drift.annotations.ThriftEnum;
import com.facebook.drift.annotations.ThriftEnumValue;
diff --git a/presto-delta/src/main/java/com/facebook/presto/delta/DeltaErrorCode.java b/presto-delta/src/main/java/com/facebook/presto/delta/DeltaErrorCode.java
index 4d586cae3ed4f..ab759e2ef975f 100644
--- a/presto-delta/src/main/java/com/facebook/presto/delta/DeltaErrorCode.java
+++ b/presto-delta/src/main/java/com/facebook/presto/delta/DeltaErrorCode.java
@@ -13,13 +13,13 @@
*/
package com.facebook.presto.delta;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum DeltaErrorCode
implements ErrorCodeSupplier
diff --git a/presto-druid/src/main/java/com/facebook/presto/druid/DruidErrorCode.java b/presto-druid/src/main/java/com/facebook/presto/druid/DruidErrorCode.java
index b45ebbd88daee..4fae4a399ef52 100644
--- a/presto-druid/src/main/java/com/facebook/presto/druid/DruidErrorCode.java
+++ b/presto-druid/src/main/java/com/facebook/presto/druid/DruidErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.druid;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum DruidErrorCode
implements ErrorCodeSupplier
diff --git a/presto-elasticsearch/src/main/java/com/facebook/presto/elasticsearch/ElasticsearchErrorCode.java b/presto-elasticsearch/src/main/java/com/facebook/presto/elasticsearch/ElasticsearchErrorCode.java
index 27420a62bed7a..2b0c92b84a33c 100644
--- a/presto-elasticsearch/src/main/java/com/facebook/presto/elasticsearch/ElasticsearchErrorCode.java
+++ b/presto-elasticsearch/src/main/java/com/facebook/presto/elasticsearch/ElasticsearchErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.elasticsearch;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum ElasticsearchErrorCode
implements ErrorCodeSupplier
diff --git a/presto-function-namespace-managers/src/main/java/com/facebook/presto/functionNamespace/execution/ExceptionUtils.java b/presto-function-namespace-managers/src/main/java/com/facebook/presto/functionNamespace/execution/ExceptionUtils.java
index bc65da342a721..b7528406130ae 100644
--- a/presto-function-namespace-managers/src/main/java/com/facebook/presto/functionNamespace/execution/ExceptionUtils.java
+++ b/presto-function-namespace-managers/src/main/java/com/facebook/presto/functionNamespace/execution/ExceptionUtils.java
@@ -13,8 +13,8 @@
*/
package com.facebook.presto.functionNamespace.execution;
-import com.facebook.presto.spi.ErrorCode;
-import com.facebook.presto.spi.ErrorType;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.thrift.api.udf.ThriftUdfErrorCodeSupplier;
import com.facebook.presto.thrift.api.udf.ThriftUdfServiceException;
diff --git a/presto-google-sheets/src/main/java/com/facebook/presto/google/sheets/SheetsErrorCode.java b/presto-google-sheets/src/main/java/com/facebook/presto/google/sheets/SheetsErrorCode.java
index 1e1dbd83fc44c..5d0aa15463fa3 100644
--- a/presto-google-sheets/src/main/java/com/facebook/presto/google/sheets/SheetsErrorCode.java
+++ b/presto-google-sheets/src/main/java/com/facebook/presto/google/sheets/SheetsErrorCode.java
@@ -13,13 +13,13 @@
*/
package com.facebook.presto.google.sheets;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum SheetsErrorCode
implements ErrorCodeSupplier
diff --git a/presto-hive-common/src/main/java/com/facebook/presto/hive/HiveErrorCode.java b/presto-hive-common/src/main/java/com/facebook/presto/hive/HiveErrorCode.java
index ccfccac0e1aaa..7302355c5b944 100644
--- a/presto-hive-common/src/main/java/com/facebook/presto/hive/HiveErrorCode.java
+++ b/presto-hive-common/src/main/java/com/facebook/presto/hive/HiveErrorCode.java
@@ -13,13 +13,13 @@
*/
package com.facebook.presto.hive;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum HiveErrorCode
implements ErrorCodeSupplier
diff --git a/presto-hive-function-namespace/src/main/java/com/facebook/presto/hive/functions/HiveFunctionErrorCode.java b/presto-hive-function-namespace/src/main/java/com/facebook/presto/hive/functions/HiveFunctionErrorCode.java
index adc36aa0619c5..7fe276b0d51d3 100644
--- a/presto-hive-function-namespace/src/main/java/com/facebook/presto/hive/functions/HiveFunctionErrorCode.java
+++ b/presto-hive-function-namespace/src/main/java/com/facebook/presto/hive/functions/HiveFunctionErrorCode.java
@@ -14,15 +14,15 @@
package com.facebook.presto.hive.functions;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.common.type.Type;
import com.facebook.presto.common.type.TypeSignature;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
import com.facebook.presto.spi.PrestoException;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
import static com.facebook.presto.spi.StandardErrorCode.FUNCTION_NOT_FOUND;
import static java.lang.String.format;
diff --git a/presto-hive-metastore/src/main/java/com/facebook/presto/hive/metastore/SemiTransactionalHiveMetastore.java b/presto-hive-metastore/src/main/java/com/facebook/presto/hive/metastore/SemiTransactionalHiveMetastore.java
index a3a35c885ce31..3fcc919ff8746 100644
--- a/presto-hive-metastore/src/main/java/com/facebook/presto/hive/metastore/SemiTransactionalHiveMetastore.java
+++ b/presto-hive-metastore/src/main/java/com/facebook/presto/hive/metastore/SemiTransactionalHiveMetastore.java
@@ -67,6 +67,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
import static com.facebook.airlift.concurrent.MoreFutures.getFutureValue;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
import static com.facebook.presto.hive.HiveErrorCode.HIVE_CORRUPTED_COLUMN_STATISTICS;
import static com.facebook.presto.hive.HiveErrorCode.HIVE_FILESYSTEM_ERROR;
import static com.facebook.presto.hive.HiveErrorCode.HIVE_METASTORE_ERROR;
@@ -93,7 +94,6 @@
import static com.facebook.presto.hive.metastore.Statistics.ReduceOperator.SUBTRACT;
import static com.facebook.presto.hive.metastore.Statistics.merge;
import static com.facebook.presto.hive.metastore.Statistics.reduce;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
import static com.facebook.presto.spi.StandardErrorCode.ALREADY_EXISTS;
import static com.facebook.presto.spi.StandardErrorCode.NOT_SUPPORTED;
import static com.facebook.presto.spi.StandardErrorCode.TRANSACTION_CONFLICT;
diff --git a/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveTypeTranslator.java b/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveTypeTranslator.java
index 543393b3cb2f9..f5190a8e0d13f 100644
--- a/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveTypeTranslator.java
+++ b/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveTypeTranslator.java
@@ -13,8 +13,8 @@
*/
package com.facebook.presto.hive;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.common.type.Type;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.google.common.collect.ImmutableMap;
import org.testng.annotations.Test;
diff --git a/presto-hudi/src/main/java/com/facebook/presto/hudi/HudiErrorCode.java b/presto-hudi/src/main/java/com/facebook/presto/hudi/HudiErrorCode.java
index 14598e4467860..3dcb576a8f7b5 100644
--- a/presto-hudi/src/main/java/com/facebook/presto/hudi/HudiErrorCode.java
+++ b/presto-hudi/src/main/java/com/facebook/presto/hudi/HudiErrorCode.java
@@ -14,12 +14,12 @@
package com.facebook.presto.hudi;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
public enum HudiErrorCode
implements ErrorCodeSupplier
diff --git a/presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergErrorCode.java b/presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergErrorCode.java
index 8218dd847480f..7af5bbf5b91b9 100644
--- a/presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergErrorCode.java
+++ b/presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergErrorCode.java
@@ -13,13 +13,13 @@
*/
package com.facebook.presto.iceberg;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum IcebergErrorCode
implements ErrorCodeSupplier
diff --git a/presto-kafka/src/main/java/com/facebook/presto/kafka/KafkaErrorCode.java b/presto-kafka/src/main/java/com/facebook/presto/kafka/KafkaErrorCode.java
index 284a4ec6d51a9..d477f0ab0a620 100644
--- a/presto-kafka/src/main/java/com/facebook/presto/kafka/KafkaErrorCode.java
+++ b/presto-kafka/src/main/java/com/facebook/presto/kafka/KafkaErrorCode.java
@@ -13,12 +13,12 @@
*/
package com.facebook.presto.kafka;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
/**
* Kafka connector specific error codes.
diff --git a/presto-lark-sheets/src/main/java/com/facebook/presto/lark/sheets/LarkSheetsErrorCode.java b/presto-lark-sheets/src/main/java/com/facebook/presto/lark/sheets/LarkSheetsErrorCode.java
index 3f6c47269dd94..e0766463cd6ee 100644
--- a/presto-lark-sheets/src/main/java/com/facebook/presto/lark/sheets/LarkSheetsErrorCode.java
+++ b/presto-lark-sheets/src/main/java/com/facebook/presto/lark/sheets/LarkSheetsErrorCode.java
@@ -13,12 +13,12 @@
*/
package com.facebook.presto.lark.sheets;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum LarkSheetsErrorCode
implements ErrorCodeSupplier
diff --git a/presto-local-file/src/main/java/com/facebook/presto/localfile/LocalFileErrorCode.java b/presto-local-file/src/main/java/com/facebook/presto/localfile/LocalFileErrorCode.java
index 8ca0019f1e2a4..fbb1841cd0f86 100644
--- a/presto-local-file/src/main/java/com/facebook/presto/localfile/LocalFileErrorCode.java
+++ b/presto-local-file/src/main/java/com/facebook/presto/localfile/LocalFileErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.localfile;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum LocalFileErrorCode
implements ErrorCodeSupplier
diff --git a/presto-main/src/main/java/com/facebook/presto/dispatcher/FailedDispatchQuery.java b/presto-main/src/main/java/com/facebook/presto/dispatcher/FailedDispatchQuery.java
index d8aaca9698bed..3c828ea620791 100644
--- a/presto-main/src/main/java/com/facebook/presto/dispatcher/FailedDispatchQuery.java
+++ b/presto-main/src/main/java/com/facebook/presto/dispatcher/FailedDispatchQuery.java
@@ -14,11 +14,11 @@
package com.facebook.presto.dispatcher;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.ExecutionFailureInfo;
import com.facebook.presto.execution.QueryState;
import com.facebook.presto.execution.StateMachine.StateChangeListener;
import com.facebook.presto.server.BasicQueryInfo;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.resourceGroups.ResourceGroupId;
import com.facebook.presto.spi.resourceGroups.ResourceGroupQueryLimits;
diff --git a/presto-main/src/main/java/com/facebook/presto/dispatcher/LocalDispatchQuery.java b/presto-main/src/main/java/com/facebook/presto/dispatcher/LocalDispatchQuery.java
index 5b8e143fc4def..b5de19ee90530 100644
--- a/presto-main/src/main/java/com/facebook/presto/dispatcher/LocalDispatchQuery.java
+++ b/presto-main/src/main/java/com/facebook/presto/dispatcher/LocalDispatchQuery.java
@@ -15,6 +15,7 @@
import com.facebook.airlift.log.Logger;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.event.QueryMonitor;
import com.facebook.presto.execution.ClusterSizeMonitor;
import com.facebook.presto.execution.ExecutionFailureInfo;
@@ -23,7 +24,6 @@
import com.facebook.presto.execution.QueryStateMachine;
import com.facebook.presto.execution.StateMachine.StateChangeListener;
import com.facebook.presto.server.BasicQueryInfo;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.WarningCollector;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/ExecutionFailureInfo.java b/presto-main/src/main/java/com/facebook/presto/execution/ExecutionFailureInfo.java
index 2b53f22162f40..bf16b82cf3026 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/ExecutionFailureInfo.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/ExecutionFailureInfo.java
@@ -18,8 +18,8 @@
import com.facebook.drift.annotations.ThriftStruct;
import com.facebook.presto.client.ErrorLocation;
import com.facebook.presto.client.FailureInfo;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.spi.ErrorCause;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.HostAddress;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/Failure.java b/presto-main/src/main/java/com/facebook/presto/execution/Failure.java
index 8f57127407b99..3ef50d6dbde9b 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/Failure.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/Failure.java
@@ -13,7 +13,7 @@
*/
package com.facebook.presto.execution;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
import javax.annotation.Nullable;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/ManagedQueryExecution.java b/presto-main/src/main/java/com/facebook/presto/execution/ManagedQueryExecution.java
index 2a8885968d27d..c5029de1dcfc5 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/ManagedQueryExecution.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/ManagedQueryExecution.java
@@ -14,9 +14,9 @@
package com.facebook.presto.execution;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.StateMachine.StateChangeListener;
import com.facebook.presto.server.BasicQueryInfo;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.resourceGroups.ResourceGroupQueryLimits;
import io.airlift.units.DataSize;
import io.airlift.units.Duration;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/QueryInfo.java b/presto-main/src/main/java/com/facebook/presto/execution/QueryInfo.java
index b0cd7771d55fd..15023a71b8dc6 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/QueryInfo.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/QueryInfo.java
@@ -14,10 +14,10 @@
package com.facebook.presto.execution;
import com.facebook.presto.SessionRepresentation;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.common.resourceGroups.QueryType;
import com.facebook.presto.cost.StatsAndCosts;
-import com.facebook.presto.spi.ErrorCode;
-import com.facebook.presto.spi.ErrorType;
import com.facebook.presto.spi.PrestoWarning;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.function.SqlFunctionId;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java b/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java
index 67553b2e4941a..85e737eca5c1c 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java
@@ -15,6 +15,7 @@
import com.facebook.airlift.log.Logger;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.common.resourceGroups.QueryType;
import com.facebook.presto.common.type.Type;
import com.facebook.presto.cost.StatsAndCosts;
@@ -25,7 +26,6 @@
import com.facebook.presto.security.AccessControl;
import com.facebook.presto.server.BasicQueryInfo;
import com.facebook.presto.server.BasicQueryStats;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.SchemaTableName;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/SqlStageExecution.java b/presto-main/src/main/java/com/facebook/presto/execution/SqlStageExecution.java
index 4f9f946b94419..bff63579184e1 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/SqlStageExecution.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/SqlStageExecution.java
@@ -14,6 +14,7 @@
package com.facebook.presto.execution;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.StateMachine.StateChangeListener;
import com.facebook.presto.execution.buffer.OutputBuffers;
import com.facebook.presto.execution.scheduler.SplitSchedulerStats;
@@ -22,7 +23,6 @@
import com.facebook.presto.metadata.InternalNode;
import com.facebook.presto.metadata.RemoteTransactionHandle;
import com.facebook.presto.metadata.Split;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.plan.PlanNodeId;
import com.facebook.presto.split.RemoteSplit;
diff --git a/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroup.java b/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroup.java
index ba52262434858..2af8f0c12b32b 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroup.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroup.java
@@ -51,8 +51,8 @@
import java.util.function.Predicate;
import static com.facebook.presto.SystemSessionProperties.getQueryPriority;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
import static com.facebook.presto.server.QueryStateInfo.createQueryStateInfo;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
import static com.facebook.presto.spi.StandardErrorCode.INVALID_RESOURCE_GROUP;
import static com.facebook.presto.spi.resourceGroups.ResourceGroupQueryLimits.NO_LIMITS;
import static com.facebook.presto.spi.resourceGroups.ResourceGroupState.CAN_QUEUE;
diff --git a/presto-main/src/main/java/com/facebook/presto/server/BasicQueryInfo.java b/presto-main/src/main/java/com/facebook/presto/server/BasicQueryInfo.java
index e5f71bd287415..5615e99c8bbb6 100644
--- a/presto-main/src/main/java/com/facebook/presto/server/BasicQueryInfo.java
+++ b/presto-main/src/main/java/com/facebook/presto/server/BasicQueryInfo.java
@@ -18,12 +18,12 @@
import com.facebook.drift.annotations.ThriftStruct;
import com.facebook.presto.Session;
import com.facebook.presto.SessionRepresentation;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.common.resourceGroups.QueryType;
import com.facebook.presto.execution.ExecutionFailureInfo;
import com.facebook.presto.execution.QueryInfo;
import com.facebook.presto.execution.QueryState;
-import com.facebook.presto.spi.ErrorCode;
-import com.facebook.presto.spi.ErrorType;
import com.facebook.presto.spi.PrestoWarning;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.memory.MemoryPoolId;
diff --git a/presto-main/src/main/java/com/facebook/presto/server/QueryStateInfo.java b/presto-main/src/main/java/com/facebook/presto/server/QueryStateInfo.java
index c94874a1b57a4..ff08f315cbc34 100644
--- a/presto-main/src/main/java/com/facebook/presto/server/QueryStateInfo.java
+++ b/presto-main/src/main/java/com/facebook/presto/server/QueryStateInfo.java
@@ -16,8 +16,8 @@
import com.facebook.drift.annotations.ThriftConstructor;
import com.facebook.drift.annotations.ThriftField;
import com.facebook.drift.annotations.ThriftStruct;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.QueryState;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoWarning;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.WarningCode;
diff --git a/presto-main/src/main/java/com/facebook/presto/server/protocol/Query.java b/presto-main/src/main/java/com/facebook/presto/server/protocol/Query.java
index e20a1c9f8fe5f..0457134788ed9 100644
--- a/presto-main/src/main/java/com/facebook/presto/server/protocol/Query.java
+++ b/presto-main/src/main/java/com/facebook/presto/server/protocol/Query.java
@@ -20,6 +20,7 @@
import com.facebook.presto.client.QueryError;
import com.facebook.presto.client.QueryResults;
import com.facebook.presto.client.StatementStats;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.common.Page;
import com.facebook.presto.common.block.BlockEncodingSerde;
import com.facebook.presto.common.type.BooleanType;
@@ -32,7 +33,6 @@
import com.facebook.presto.execution.StageInfo;
import com.facebook.presto.execution.buffer.PagesSerdeFactory;
import com.facebook.presto.operator.ExchangeClient;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.function.SqlFunctionId;
import com.facebook.presto.spi.function.SqlInvokedFunction;
diff --git a/presto-main/src/main/java/com/facebook/presto/server/protocol/QueuedStatementResource.java b/presto-main/src/main/java/com/facebook/presto/server/protocol/QueuedStatementResource.java
index 95817e2b70f7f..6314ddf654466 100644
--- a/presto-main/src/main/java/com/facebook/presto/server/protocol/QueuedStatementResource.java
+++ b/presto-main/src/main/java/com/facebook/presto/server/protocol/QueuedStatementResource.java
@@ -18,6 +18,7 @@
import com.facebook.presto.client.QueryError;
import com.facebook.presto.client.QueryResults;
import com.facebook.presto.client.StatementStats;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.dispatcher.DispatchExecutor;
import com.facebook.presto.dispatcher.DispatchInfo;
import com.facebook.presto.dispatcher.DispatchManager;
@@ -27,7 +28,6 @@
import com.facebook.presto.server.HttpRequestSessionContext;
import com.facebook.presto.server.ServerConfig;
import com.facebook.presto.server.SessionContext;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.tracing.TracerProvider;
diff --git a/presto-main/src/main/java/com/facebook/presto/util/Failures.java b/presto-main/src/main/java/com/facebook/presto/util/Failures.java
index 4e8483433bfd9..28c9d87e22a42 100644
--- a/presto-main/src/main/java/com/facebook/presto/util/Failures.java
+++ b/presto-main/src/main/java/com/facebook/presto/util/Failures.java
@@ -15,10 +15,10 @@
import com.facebook.presto.ExceededMemoryLimitException;
import com.facebook.presto.client.ErrorLocation;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.ExecutionFailureInfo;
import com.facebook.presto.execution.Failure;
import com.facebook.presto.spi.ErrorCause;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.ErrorCodeSupplier;
import com.facebook.presto.spi.HostAddress;
import com.facebook.presto.spi.PrestoException;
diff --git a/presto-main/src/test/java/com/facebook/presto/execution/MockManagedQueryExecution.java b/presto-main/src/test/java/com/facebook/presto/execution/MockManagedQueryExecution.java
index f7bd2d5af011a..9d24305672288 100644
--- a/presto-main/src/test/java/com/facebook/presto/execution/MockManagedQueryExecution.java
+++ b/presto-main/src/test/java/com/facebook/presto/execution/MockManagedQueryExecution.java
@@ -14,10 +14,10 @@
package com.facebook.presto.execution;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.StateMachine.StateChangeListener;
import com.facebook.presto.server.BasicQueryInfo;
import com.facebook.presto.server.BasicQueryStats;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.memory.MemoryPoolId;
import com.facebook.presto.spi.resourceGroups.ResourceGroupId;
diff --git a/presto-main/src/test/java/com/facebook/presto/execution/TestThriftResourceGroupInfo.java b/presto-main/src/test/java/com/facebook/presto/execution/TestThriftResourceGroupInfo.java
index e94a791e18354..ad7640fdb8f52 100644
--- a/presto-main/src/test/java/com/facebook/presto/execution/TestThriftResourceGroupInfo.java
+++ b/presto-main/src/test/java/com/facebook/presto/execution/TestThriftResourceGroupInfo.java
@@ -26,11 +26,11 @@
import com.facebook.drift.protocol.TMemoryBuffer;
import com.facebook.drift.protocol.TProtocol;
import com.facebook.drift.protocol.TTransport;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.operator.BlockedReason;
import com.facebook.presto.server.QueryProgressStats;
import com.facebook.presto.server.QueryStateInfo;
import com.facebook.presto.server.ResourceGroupInfo;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.resourceGroups.ResourceGroupId;
import com.facebook.presto.spi.resourceGroups.ResourceGroupState;
@@ -51,8 +51,8 @@
import java.util.Set;
import java.util.function.Function;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
import static com.facebook.presto.operator.BlockedReason.WAITING_FOR_MEMORY;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
diff --git a/presto-main/src/test/java/com/facebook/presto/server/remotetask/TestHttpRemoteTask.java b/presto-main/src/test/java/com/facebook/presto/server/remotetask/TestHttpRemoteTask.java
index 29c5629ff4a6d..3b72f745ef5dd 100644
--- a/presto-main/src/test/java/com/facebook/presto/server/remotetask/TestHttpRemoteTask.java
+++ b/presto-main/src/test/java/com/facebook/presto/server/remotetask/TestHttpRemoteTask.java
@@ -28,6 +28,7 @@
import com.facebook.drift.codec.utils.DurationToMillisThriftCodec;
import com.facebook.drift.codec.utils.JodaDateTimeToEpochMillisThriftCodec;
import com.facebook.presto.client.NodeVersion;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.common.type.Type;
import com.facebook.presto.common.type.TypeManager;
import com.facebook.presto.connector.ConnectorTypeSerdeManager;
@@ -55,7 +56,6 @@
import com.facebook.presto.server.InternalCommunicationConfig;
import com.facebook.presto.server.TaskUpdateRequest;
import com.facebook.presto.spi.ConnectorId;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.plan.PlanNodeId;
import com.facebook.presto.spi.relation.VariableReferenceExpression;
import com.facebook.presto.sql.Serialization;
diff --git a/presto-main/src/test/java/com/facebook/presto/type/TestArrayOperators.java b/presto-main/src/test/java/com/facebook/presto/type/TestArrayOperators.java
index 853bf43650bc9..6afee6293d8be 100644
--- a/presto-main/src/test/java/com/facebook/presto/type/TestArrayOperators.java
+++ b/presto-main/src/test/java/com/facebook/presto/type/TestArrayOperators.java
@@ -13,6 +13,7 @@
*/
package com.facebook.presto.type;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.common.block.Block;
import com.facebook.presto.common.block.BlockBuilder;
import com.facebook.presto.common.type.ArrayType;
@@ -23,7 +24,6 @@
import com.facebook.presto.common.type.StandardTypes;
import com.facebook.presto.common.type.Type;
import com.facebook.presto.operator.scalar.AbstractTestFunctions;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.function.LiteralParameters;
import com.facebook.presto.spi.function.ScalarFunction;
diff --git a/presto-memory/src/main/java/com/facebook/presto/plugin/memory/MemoryErrorCode.java b/presto-memory/src/main/java/com/facebook/presto/plugin/memory/MemoryErrorCode.java
index 59bb281796c7f..a0aaa72ef8b5b 100644
--- a/presto-memory/src/main/java/com/facebook/presto/plugin/memory/MemoryErrorCode.java
+++ b/presto-memory/src/main/java/com/facebook/presto/plugin/memory/MemoryErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.plugin.memory;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum MemoryErrorCode
implements ErrorCodeSupplier
diff --git a/presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetErrorCode.java b/presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetErrorCode.java
index 389f2926adc57..c5f167df05edc 100644
--- a/presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetErrorCode.java
+++ b/presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetErrorCode.java
@@ -13,12 +13,12 @@
*/
package com.facebook.presto.parquet;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
public enum ParquetErrorCode
implements ErrorCodeSupplier
diff --git a/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotErrorCode.java b/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotErrorCode.java
index 3ea9928ba40bc..f307b2fe6da12 100644
--- a/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotErrorCode.java
+++ b/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotErrorCode.java
@@ -13,13 +13,13 @@
*/
package com.facebook.presto.pinot;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum PinotErrorCode
implements ErrorCodeSupplier
diff --git a/presto-prometheus/src/main/java/com/facebook/presto/plugin/prometheus/PrometheusErrorCode.java b/presto-prometheus/src/main/java/com/facebook/presto/plugin/prometheus/PrometheusErrorCode.java
index c4697e67011a4..fe1edd4be60e0 100644
--- a/presto-prometheus/src/main/java/com/facebook/presto/plugin/prometheus/PrometheusErrorCode.java
+++ b/presto-prometheus/src/main/java/com/facebook/presto/plugin/prometheus/PrometheusErrorCode.java
@@ -13,12 +13,12 @@
*/
package com.facebook.presto.plugin.prometheus;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum PrometheusErrorCode
implements ErrorCodeSupplier
diff --git a/presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorErrorCode.java b/presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorErrorCode.java
index b9a2304981ede..7bdf89076bc60 100644
--- a/presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorErrorCode.java
+++ b/presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.raptor;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum RaptorErrorCode
implements ErrorCodeSupplier
diff --git a/presto-record-decoder/src/main/java/com/facebook/presto/decoder/DecoderErrorCode.java b/presto-record-decoder/src/main/java/com/facebook/presto/decoder/DecoderErrorCode.java
index e0379821ab387..94f7c9652a974 100644
--- a/presto-record-decoder/src/main/java/com/facebook/presto/decoder/DecoderErrorCode.java
+++ b/presto-record-decoder/src/main/java/com/facebook/presto/decoder/DecoderErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.decoder;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum DecoderErrorCode
implements ErrorCodeSupplier
diff --git a/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java b/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java
index 1c0ec8ecba79e..4df9fc2b06fee 100644
--- a/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java
+++ b/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java
@@ -21,6 +21,7 @@
import com.facebook.presto.client.Column;
import com.facebook.presto.client.QueryError;
import com.facebook.presto.client.StatementStats;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.common.Page;
import com.facebook.presto.common.block.BlockEncodingManager;
import com.facebook.presto.common.resourceGroups.QueryType;
@@ -84,7 +85,6 @@
import com.facebook.presto.spark.planner.PrestoSparkRddFactory;
import com.facebook.presto.spi.ConnectorId;
import com.facebook.presto.spi.ConnectorSession;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.QueryId;
import com.facebook.presto.spi.WarningCollector;
diff --git a/presto-spark-base/src/main/java/com/facebook/presto/spark/execution/PrestoSparkExecutionExceptionFactory.java b/presto-spark-base/src/main/java/com/facebook/presto/spark/execution/PrestoSparkExecutionExceptionFactory.java
index b08edf262efa0..5fe032de512b1 100644
--- a/presto-spark-base/src/main/java/com/facebook/presto/spark/execution/PrestoSparkExecutionExceptionFactory.java
+++ b/presto-spark-base/src/main/java/com/facebook/presto/spark/execution/PrestoSparkExecutionExceptionFactory.java
@@ -14,12 +14,12 @@
package com.facebook.presto.spark.execution;
import com.facebook.airlift.json.JsonCodec;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.execution.ExecutionFailureInfo;
import com.facebook.presto.spark.classloader_interface.PrestoSparkExecutionException;
import com.facebook.presto.spark.classloader_interface.PrestoSparkNonRetryableExecutionException;
import com.facebook.presto.spark.classloader_interface.PrestoSparkRetryableExecutionException;
-import com.facebook.presto.spi.ErrorCode;
-import com.facebook.presto.spi.ErrorType;
import org.apache.spark.SparkException;
import javax.inject.Inject;
@@ -29,10 +29,10 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
import static com.facebook.presto.spark.util.PrestoSparkUtils.compress;
import static com.facebook.presto.spark.util.PrestoSparkUtils.decompress;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
import static com.facebook.presto.util.Failures.toFailure;
import static java.util.Objects.requireNonNull;
import static java.util.regex.Pattern.DOTALL;
diff --git a/presto-spark-base/src/main/java/com/facebook/presto/spark/util/PrestoSparkFailureUtils.java b/presto-spark-base/src/main/java/com/facebook/presto/spark/util/PrestoSparkFailureUtils.java
index ebb40b0233d9c..dd788be9d8632 100644
--- a/presto-spark-base/src/main/java/com/facebook/presto/spark/util/PrestoSparkFailureUtils.java
+++ b/presto-spark-base/src/main/java/com/facebook/presto/spark/util/PrestoSparkFailureUtils.java
@@ -14,11 +14,11 @@
package com.facebook.presto.spark.util;
import com.facebook.presto.Session;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.ExecutionFailureInfo;
import com.facebook.presto.spark.classloader_interface.PrestoSparkFailure;
import com.facebook.presto.spark.classloader_interface.RetryExecutionStrategy;
import com.facebook.presto.spi.ErrorCause;
-import com.facebook.presto.spi.ErrorCode;
import com.google.common.collect.ImmutableList;
import javax.annotation.Nullable;
diff --git a/presto-spark-base/src/test/java/com/facebook/presto/spark/execution/TestPrestoSparkExecutionExceptionFactory.java b/presto-spark-base/src/test/java/com/facebook/presto/spark/execution/TestPrestoSparkExecutionExceptionFactory.java
index f5cd94a7f7215..7f65c230e3f4f 100644
--- a/presto-spark-base/src/test/java/com/facebook/presto/spark/execution/TestPrestoSparkExecutionExceptionFactory.java
+++ b/presto-spark-base/src/test/java/com/facebook/presto/spark/execution/TestPrestoSparkExecutionExceptionFactory.java
@@ -13,10 +13,10 @@
*/
package com.facebook.presto.spark.execution;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.execution.ExecutionFailureInfo;
import com.facebook.presto.execution.Failure;
import com.facebook.presto.spark.classloader_interface.PrestoSparkExecutionException;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.PrestoException;
import com.google.common.collect.ImmutableList;
import org.apache.spark.ExceptionFailure;
diff --git a/presto-spark-common/pom.xml b/presto-spark-common/pom.xml
index bc8720ce4e9e1..3e86fd0620379 100644
--- a/presto-spark-common/pom.xml
+++ b/presto-spark-common/pom.xml
@@ -26,6 +26,11 @@
jackson-annotations
+
+ com.facebook.presto
+ presto-common
+
+
com.facebook.presto
presto-spi
diff --git a/presto-spark-common/src/main/java/com/facebook/presto/spark/SparkErrorCode.java b/presto-spark-common/src/main/java/com/facebook/presto/spark/SparkErrorCode.java
index 76e93d3335f14..16fb7b9fac6d5 100644
--- a/presto-spark-common/src/main/java/com/facebook/presto/spark/SparkErrorCode.java
+++ b/presto-spark-common/src/main/java/com/facebook/presto/spark/SparkErrorCode.java
@@ -13,13 +13,13 @@
*/
package com.facebook.presto.spark;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INSUFFICIENT_RESOURCES;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INSUFFICIENT_RESOURCES;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
public enum SparkErrorCode
implements ErrorCodeSupplier
diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/ErrorCodeSupplier.java b/presto-spi/src/main/java/com/facebook/presto/spi/ErrorCodeSupplier.java
index 0d1eda8f3798b..c556c753b3a4e 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/ErrorCodeSupplier.java
+++ b/presto-spi/src/main/java/com/facebook/presto/spi/ErrorCodeSupplier.java
@@ -13,6 +13,8 @@
*/
package com.facebook.presto.spi;
+import com.facebook.presto.common.ErrorCode;
+
public interface ErrorCodeSupplier
{
ErrorCode toErrorCode();
diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/PrestoException.java b/presto-spi/src/main/java/com/facebook/presto/spi/PrestoException.java
index 70ac66c217206..ed7caa318f5c2 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/PrestoException.java
+++ b/presto-spi/src/main/java/com/facebook/presto/spi/PrestoException.java
@@ -13,6 +13,8 @@
*/
package com.facebook.presto.spi;
+import com.facebook.presto.common.ErrorCode;
+
public class PrestoException
extends RuntimeException
{
diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/StandardErrorCode.java b/presto-spi/src/main/java/com/facebook/presto/spi/StandardErrorCode.java
index cb002c48996bb..918c2949cd7cf 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/StandardErrorCode.java
+++ b/presto-spi/src/main/java/com/facebook/presto/spi/StandardErrorCode.java
@@ -13,9 +13,12 @@
*/
package com.facebook.presto.spi;
-import static com.facebook.presto.spi.ErrorType.INSUFFICIENT_RESOURCES;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
+
+import static com.facebook.presto.common.ErrorType.INSUFFICIENT_RESOURCES;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum StandardErrorCode
implements ErrorCodeSupplier
diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/eventlistener/QueryFailureInfo.java b/presto-spi/src/main/java/com/facebook/presto/spi/eventlistener/QueryFailureInfo.java
index 4f60fcfd514fb..1b9e87c0dbf08 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/eventlistener/QueryFailureInfo.java
+++ b/presto-spi/src/main/java/com/facebook/presto/spi/eventlistener/QueryFailureInfo.java
@@ -13,7 +13,7 @@
*/
package com.facebook.presto.spi.eventlistener;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
import java.util.Optional;
diff --git a/presto-spi/src/test/java/com/facebook/presto/spi/TestPrestoException.java b/presto-spi/src/test/java/com/facebook/presto/spi/TestPrestoException.java
index 6e316efac5cac..bbf4ebcfeb483 100644
--- a/presto-spi/src/test/java/com/facebook/presto/spi/TestPrestoException.java
+++ b/presto-spi/src/test/java/com/facebook/presto/spi/TestPrestoException.java
@@ -13,9 +13,10 @@
*/
package com.facebook.presto.spi;
+import com.facebook.presto.common.ErrorCode;
import org.testng.annotations.Test;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
import static org.testng.Assert.assertEquals;
public class TestPrestoException
diff --git a/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfErrorCodeSupplier.java b/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfErrorCodeSupplier.java
index 7650a4f85834c..6237ab41edac5 100644
--- a/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfErrorCodeSupplier.java
+++ b/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfErrorCodeSupplier.java
@@ -13,14 +13,14 @@
*/
package com.facebook.presto.thrift.api.udf;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
-import static com.facebook.presto.spi.ErrorType.INSUFFICIENT_RESOURCES;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
-import static com.facebook.presto.spi.ErrorType.USER_ERROR;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.INSUFFICIENT_RESOURCES;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.USER_ERROR;
public enum ThriftUdfErrorCodeSupplier
implements ErrorCodeSupplier
diff --git a/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfServiceException.java b/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfServiceException.java
index 686a6bab8e142..532d281d76cb6 100644
--- a/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfServiceException.java
+++ b/presto-thrift-api/src/main/java/com/facebook/presto/thrift/api/udf/ThriftUdfServiceException.java
@@ -16,7 +16,7 @@
import com.facebook.drift.annotations.ThriftConstructor;
import com.facebook.drift.annotations.ThriftField;
import com.facebook.drift.annotations.ThriftStruct;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
import java.util.Arrays;
diff --git a/presto-thrift-connector/src/main/java/com/facebook/presto/connector/thrift/ThriftErrorCode.java b/presto-thrift-connector/src/main/java/com/facebook/presto/connector/thrift/ThriftErrorCode.java
index 36eee07f76fd6..0c4452743f5ed 100644
--- a/presto-thrift-connector/src/main/java/com/facebook/presto/connector/thrift/ThriftErrorCode.java
+++ b/presto-thrift-connector/src/main/java/com/facebook/presto/connector/thrift/ThriftErrorCode.java
@@ -13,11 +13,11 @@
*/
package com.facebook.presto.connector.thrift;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.spi.ErrorCodeSupplier;
-import com.facebook.presto.spi.ErrorType;
-import static com.facebook.presto.spi.ErrorType.EXTERNAL;
+import static com.facebook.presto.common.ErrorType.EXTERNAL;
public enum ThriftErrorCode
implements ErrorCodeSupplier
diff --git a/presto-thrift-spec/pom.xml b/presto-thrift-spec/pom.xml
index e390c9c5a323a..6efd9e539b814 100644
--- a/presto-thrift-spec/pom.xml
+++ b/presto-thrift-spec/pom.xml
@@ -15,6 +15,10 @@
+
+ com.facebook.presto
+ presto-common
+
com.facebook.presto
presto-main
@@ -28,6 +32,7 @@
maven-dependency-plugin
+ com.facebook.presto:presto-common
com.facebook.presto:presto-main
diff --git a/presto-thrift-testing-udf-server/src/main/java/com/facebook/presto/udf/thrift/EchoFirstInputThriftUdfService.java b/presto-thrift-testing-udf-server/src/main/java/com/facebook/presto/udf/thrift/EchoFirstInputThriftUdfService.java
index e376113672af4..c743bc7520c7d 100644
--- a/presto-thrift-testing-udf-server/src/main/java/com/facebook/presto/udf/thrift/EchoFirstInputThriftUdfService.java
+++ b/presto-thrift-testing-udf-server/src/main/java/com/facebook/presto/udf/thrift/EchoFirstInputThriftUdfService.java
@@ -13,10 +13,10 @@
*/
package com.facebook.presto.udf.thrift;
+import com.facebook.presto.common.ErrorCode;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.common.Page;
import com.facebook.presto.common.block.BlockEncodingSerde;
-import com.facebook.presto.spi.ErrorCode;
-import com.facebook.presto.spi.ErrorType;
import com.facebook.presto.spi.page.PagesSerde;
import com.facebook.presto.thrift.api.udf.PrestoThriftPage;
import com.facebook.presto.thrift.api.udf.ThriftUdfPage;
@@ -31,7 +31,7 @@
import java.util.Optional;
-import static com.facebook.presto.spi.ErrorType.INTERNAL_ERROR;
+import static com.facebook.presto.common.ErrorType.INTERNAL_ERROR;
import static com.facebook.presto.thrift.api.udf.ThriftUdfPage.prestoPage;
import static com.facebook.presto.thrift.api.udf.ThriftUdfPage.thriftPage;
import static com.facebook.presto.thrift.api.udf.ThriftUdfServiceException.toThriftUdfServiceException;
diff --git a/presto-verifier/src/main/java/com/facebook/presto/verifier/event/QueryFailure.java b/presto-verifier/src/main/java/com/facebook/presto/verifier/event/QueryFailure.java
index fb85582d55c41..15d0ee017e58c 100644
--- a/presto-verifier/src/main/java/com/facebook/presto/verifier/event/QueryFailure.java
+++ b/presto-verifier/src/main/java/com/facebook/presto/verifier/event/QueryFailure.java
@@ -15,7 +15,7 @@
import com.facebook.airlift.event.client.EventField;
import com.facebook.airlift.event.client.EventType;
-import com.facebook.presto.spi.ErrorType;
+import com.facebook.presto.common.ErrorType;
import com.facebook.presto.verifier.framework.QueryStage;
import javax.annotation.concurrent.Immutable;
diff --git a/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/PrestoQueryException.java b/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/PrestoQueryException.java
index f5cf74b38cab6..6cc6b5cd6798b 100644
--- a/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/PrestoQueryException.java
+++ b/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/PrestoQueryException.java
@@ -13,7 +13,7 @@
*/
package com.facebook.presto.verifier.framework;
-import com.facebook.presto.spi.ErrorCode;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.spi.ErrorCodeSupplier;
import com.facebook.presto.verifier.prestoaction.QueryActionStats;
diff --git a/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/QueryException.java b/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/QueryException.java
index 805861db06892..ed7a2255c9ef8 100644
--- a/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/QueryException.java
+++ b/presto-verifier/src/main/java/com/facebook/presto/verifier/framework/QueryException.java
@@ -13,8 +13,8 @@
*/
package com.facebook.presto.verifier.framework;
+import com.facebook.presto.common.ErrorCode;
import com.facebook.presto.jdbc.QueryStats;
-import com.facebook.presto.spi.ErrorCode;
import com.facebook.presto.spi.ErrorCodeSupplier;
import com.facebook.presto.verifier.event.QueryFailure;