From 1856ca01c68ae841d90f8ed27ec577c708cec4f7 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Mon, 19 Dec 2016 14:58:20 -0800 Subject: [PATCH] DRILL-5136: Server unable to prepare some non SELECT queries Currently, the server makes every incoming queries a limit 0 query during server prepare. This is causing some non select queries to fail. We need to add an additional check to determine if the query is a SELECT query before wrapping it with LIMIT 0. --- .../drill/exec/work/prepare/PreparedStatementProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/prepare/PreparedStatementProvider.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/prepare/PreparedStatementProvider.java index daadcfcd3fe..3eec5057f8a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/prepare/PreparedStatementProvider.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/prepare/PreparedStatementProvider.java @@ -130,10 +130,11 @@ public void run() { try { UserClientConnectionWrapper wrapper = new UserClientConnectionWrapper(connection); + boolean isSelectQry = req.getSqlQuery().trim().toUpperCase().startsWith("SELECT"); final RunQuery limit0Query = RunQuery.newBuilder() .setType(QueryType.SQL) - .setPlan(String.format("SELECT * FROM (%s) LIMIT 0", req.getSqlQuery())) + .setPlan((isSelectQry)?String.format("SELECT * FROM (%s) LIMIT 0", req.getSqlQuery()):req.getSqlQuery()) .build(); final QueryId limit0QueryId = userWorker.submitWork(wrapper, limit0Query);