dropbox / dropbox/PyHive

Presto DataBaseError returns an unreadable json

Open
#241 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.7k
Forks
545
PR merge metrics
No merged PRs in 30d

Description

I've noticed that the Presto errors come back as unreadable json, leading a bad user experience.

For example :

```
DatabaseError: {'errorName': 'SYNTAX_ERROR', 'errorType': 'USER_ERROR', 'errorLocation': {'columnNumber': 15, 'lineNumber': 1}, 'errorCode': 1, 'failureInfo': {'suppressed': [], 'type': 'com.facebook.presto.sql.analyzer.SemanticException', 'errorLocation': {'columnNumber': 15, 'lineNumber': 1}, 'stack': ['com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:838)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:257)', 'com.facebook.presto.sql.tree.Table.accept(Table.java:53)', 'com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:269)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.analyzeFrom(StatementAnalyzer.java:1787)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:944)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:257)', 'com.facebook.presto.sql.tree.QuerySpecification.accept(QuerySpecification.java:127)', 'com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:269)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:279)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:675)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:257)', 'com.facebook.presto.sql.tree.Query.accept(Query.java:94)', 'com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:269)', 'com.facebook.presto.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:243)', 'com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:72)', 'com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:64)', 'com.facebook.presto.execution.SqlQueryExecution.(SqlQueryExecution.java:169)', 'com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:677)', 'com.facebook.presto.execution.SqlQueryManager.createQueryInternal(SqlQueryManager.java:439)', 'com.facebook.presto.execution.SqlQueryManager.lambda$createQuery$3(SqlQueryManager.java:372)', 'java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)', 'java.util.concurrent.FutureTask.run(FutureTask.java:266)', 'java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)', 'java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)', 'java.lang.Thread.run(Thread.java:748)'], 'message': 'line 1:15: Table foo.bar.xyz does not exist'}, 'message': 'line 1:15: Table foo.bar.xyz does not exist'}
```

It would look much better if it was pretty printed, like
```
DatabaseError: {
"errorName": "SYNTAX_ERROR",
"errorType": "USER_ERROR",
"errorLocation": {
"columnNumber": 15,
"lineNumber": 1
},
"errorCode": 1,
"failureInfo": {
"suppressed": [],
"type": "com.facebook.presto.sql.analyzer.SemanticException",
"errorLocation": {
"columnNumber": 15,
"lineNumber": 1
},
"stack": [
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:838)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:257)",
"com.facebook.presto.sql.tree.Table.accept(Table.java:53)",
"com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:269)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.analyzeFrom(StatementAnalyzer.java:1787)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:944)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:257)",
"com.facebook.presto.sql.tree.QuerySpecification.accept(QuerySpecification.java:127)",
"com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:269)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:279)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:675)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:257)",
"com.facebook.presto.sql.tree.Query.accept(Query.java:94)",
"com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:269)",
"com.facebook.presto.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:243)",
"com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:72)",
"com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:64)",
"com.facebook.presto.execution.SqlQueryExecution.(SqlQueryExecution.java:169)",
"com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:677)",
"com.facebook.presto.execution.SqlQueryManager.createQueryInternal(SqlQueryManager.java:439)",
"com.facebook.presto.execution.SqlQueryManager.lambda$createQuery$3(SqlQueryManager.java:372)",
"java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)",
"java.util.concurrent.FutureTask.run(FutureTask.java:266)",
"java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)",
"java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)",
"java.lang.Thread.run(Thread.java:748)"
],
"message": "line 1:15: Table foo.bar.xyz does not exist"
},
"message": "line 1:15: Table foo.bar.xyz does not exist"
}
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.