mirror of
https://github.com/apache/impala.git
synced 2025-12-20 10:29:58 -05:00
The only thing this commit does is upgrade sqlparse. The upgrade was done by downloading and extracting the tarball, nothing else (such as patching). The older version of sqlparse would parse SELECT ' ; ' ; into two statements. Neither statement is complete due to the open quote and this would cause an infinite loop. The bug is already fixed in the newest version of sqlparse. Change-Id: I7ce7c269769ae0cde3dc8ca386d0b0e11bea71c1 Reviewed-on: http://gerrit.cloudera.org:8080/102 Reviewed-by: Casey Ching <casey@cloudera.com> Tested-by: Internal Jenkins
45 lines
991 B
Python
45 lines
991 B
Python
'''
|
|
Created on 17/05/2012
|
|
|
|
@author: piranna
|
|
|
|
Several utility functions to extract info from the SQL sentences
|
|
'''
|
|
|
|
from sqlparse.filters import ColumnsSelect, Limit
|
|
from sqlparse.pipeline import Pipeline
|
|
from sqlparse.tokens import Keyword, Whitespace
|
|
|
|
|
|
def getlimit(stream):
|
|
"""Function that return the LIMIT of a input SQL """
|
|
pipe = Pipeline()
|
|
|
|
pipe.append(Limit())
|
|
|
|
result = pipe(stream)
|
|
try:
|
|
return int(result)
|
|
except ValueError:
|
|
return result
|
|
|
|
|
|
def getcolumns(stream):
|
|
"""Function that return the colums of a SELECT query"""
|
|
pipe = Pipeline()
|
|
|
|
pipe.append(ColumnsSelect())
|
|
|
|
return pipe(stream)
|
|
|
|
|
|
class IsType(object):
|
|
"""Functor that return is the statement is of a specific type"""
|
|
def __init__(self, type):
|
|
self.type = type
|
|
|
|
def __call__(self, stream):
|
|
for token_type, value in stream:
|
|
if token_type not in Whitespace:
|
|
return token_type in Keyword and value == self.type
|