Details
-
Bug
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
Impala 2.7.0
-
None
-
None
Description
While there was ostensible support in the random query generator for Oracle as the reference database, it's not run consistently, has no unit tests, and has bitrotted.
Here are a few high level points that describe the problems.
I. Typing
1. Oracle hasn't Boolean types. The random data generator tries to create tables with Boolean types, and fails.
2. CREATE TABLE accepts all kinds of types, like INT, but those are just aliases for NUMBER, which one gets when he does a DESCRIBE. The query generator doesn't understand types like "NUMBER(30)" yet.
3. Other type discrepancies exists between Impala and Oracle. We can handle these like we do with PostgresQL already, via TYPE_NAME_ALIASES and EXACT_TYPES_TO_SQL.
II. Cursor/connection interface bitrot
1. The SQL in OracleCursor.make_list_table_names_sql() doesn't produce usable rows for consumption. It's some sort of internal Oracle stuff that's not useful.
2. The Python in OracleCursor.make_describe_table_sql() raises NameError.
3. The cx_Oracle.connect() call isn't properly formatted.
III. Testing support
1. IMPALA-3864
2. The query generator system is complex. It would be good to know that it's generating syntactically valid Oracle queries by simply running a series of EXPLAINs. The EXPLAIN system in Oracle is somewhat complicated. At the least you need an ID for each query you want to explain.
https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9010.htm#SQLRF01601
IV. Setup
Due to licensing we can't distribute Oracle packages with Impala. We should have documentation describing how an Impala community contributor could set this up on his own.
There's probably more than this, but this bug is long enough. I will probably create subtasks from this as needed.