blob: df66d30d7f2b395543f5fda2d40fee6e7d602273 [file] [log] [blame]
====
---- QUERY
# Create external JDBC table
DROP TABLE IF EXISTS alltypes_jdbc_datasource;
CREATE EXTERNAL TABLE alltypes_jdbc_datasource (
id INT,
bool_col BOOLEAN,
tinyint_col TINYINT,
smallint_col SMALLINT,
int_col INT,
bigint_col BIGINT,
float_col FLOAT,
double_col DOUBLE,
date_string_col STRING,
string_col STRING,
timestamp_col TIMESTAMP)
STORED BY JDBC
TBLPROPERTIES (
"database.type"="IMPALA",
"jdbc.url"="jdbc:impala://$INTERNAL_LISTEN_HOST:21050/functional",
"jdbc.auth"="AuthMech=0",
"jdbc.properties"="MEM_LIMIT=1000000000, MAX_ERRORS = 10000, ENABLED_RUNTIME_FILTER_TYPES=\"BLOOM,MIN_MAX\"",
"jdbc.driver"="com.cloudera.impala.jdbc.Driver",
"driver.url"="$FILESYSTEM_PREFIX/test-warehouse/data-sources/jdbc-drivers/ImpalaJDBC42.jar",
"dbcp.username"="impala",
"dbcp.password"="cloudera",
"table"="alltypes");
---- RESULTS
'Table has been created.'
====
---- QUERY
# Create external JDBC table
DROP TABLE IF EXISTS alltypes_jdbc_datasource_2;
CREATE EXTERNAL TABLE alltypes_jdbc_datasource_2 (
id INT,
bool_col BOOLEAN,
tinyint_col TINYINT,
smallint_col SMALLINT,
int_col INT,
bigint_col BIGINT,
float_col FLOAT,
double_col DOUBLE,
date_string_col STRING,
string_col STRING,
timestamp_col TIMESTAMP)
STORED BY JDBC
TBLPROPERTIES (
"database.type"="IMPALA",
"jdbc.url"="jdbc:impala://$INTERNAL_LISTEN_HOST:21050/functional",
"jdbc.auth"="AuthMech=0",
"jdbc.properties"="QUERY_TIMEOUT_S=600, REQUEST_POOL= \"default-pool\", DEBUG_ACTION",
"jdbc.driver"="com.cloudera.impala.jdbc.Driver",
"driver.url"="$FILESYSTEM_PREFIX/test-warehouse/data-sources/jdbc-drivers/ImpalaJDBC42.jar",
"dbcp.username"="impala",
"dbcp.password"="cloudera",
"table"="alltypes");
---- RESULTS
'Table has been created.'
====
---- QUERY
# Create external JDBC table with decimal type of columns.
# The decimal precisions and scales of decimal columns equal to the decimal precisions
# and scales of the corresponding decimal columns in the remote table.
DROP TABLE IF EXISTS jdbc_decimal_tbl;
CREATE EXTERNAL TABLE jdbc_decimal_tbl (
d1 DECIMAL(9,0),
d2 DECIMAL(10,0),
d3 DECIMAL(20,10),
d4 DECIMAL(38,38),
d5 DECIMAL(10,5),
d6 DECIMAL(9,0))
STORED BY JDBC
TBLPROPERTIES (
"database.type"="IMPALA",
"jdbc.url"="jdbc:impala://$INTERNAL_LISTEN_HOST:21050/functional",
"jdbc.auth"="AuthMech=0",
"jdbc.driver"="com.cloudera.impala.jdbc.Driver",
"driver.url"="$FILESYSTEM_PREFIX/test-warehouse/data-sources/jdbc-drivers/ImpalaJDBC42.jar",
"dbcp.username"="impala",
"dbcp.password"="cloudera",
"table"="decimal_tbl");
---- RESULTS
'Table has been created.'
====
---- QUERY
# Create external JDBC table with decimal type.
# The decimal precisions and scales of decimal columns are greater than or equal to the
# decimal precision and scales of the corresponding decimal columns in the remote table.
DROP TABLE IF EXISTS jdbc_decimal_tbl_2;
CREATE EXTERNAL TABLE jdbc_decimal_tbl_2 (
d1 DECIMAL(10,1),
d2 DECIMAL(11,1),
d3 DECIMAL(21,11),
d4 DECIMAL(38,38),
d5 DECIMAL(11,6),
d6 DECIMAL(10,1))
STORED BY JDBC
TBLPROPERTIES (
"database.type"="IMPALA",
"jdbc.url"="jdbc:impala://$INTERNAL_LISTEN_HOST:21050/functional",
"jdbc.auth"="AuthMech=0",
"jdbc.driver"="com.cloudera.impala.jdbc.Driver",
"driver.url"="$FILESYSTEM_PREFIX/test-warehouse/data-sources/jdbc-drivers/ImpalaJDBC42.jar",
"dbcp.username"="impala",
"dbcp.password"="cloudera",
"table"="decimal_tbl");
---- RESULTS
'Table has been created.'
====
---- QUERY
# Create external JDBC table with decimal type.
# The decimal scales of two columns d3 and d5 are less than the decimal scales of the
# corresponding decimal columns in the remote table, which cause truncation, hence
# exception will be thrown.
DROP TABLE IF EXISTS jdbc_decimal_tbl_3;
CREATE EXTERNAL TABLE jdbc_decimal_tbl_3 (
d1 DECIMAL(9,0),
d2 DECIMAL(10,0),
d3 DECIMAL(20,9),
d4 DECIMAL(38,38),
d5 DECIMAL(10,4),
d6 DECIMAL(9,0))
STORED BY JDBC
TBLPROPERTIES (
"database.type"="IMPALA",
"jdbc.url"="jdbc:impala://$INTERNAL_LISTEN_HOST:21050/functional",
"jdbc.auth"="AuthMech=0",
"jdbc.driver"="com.cloudera.impala.jdbc.Driver",
"driver.url"="$FILESYSTEM_PREFIX/test-warehouse/data-sources/jdbc-drivers/ImpalaJDBC42.jar",
"dbcp.username"="impala",
"dbcp.password"="cloudera",
"table"="decimal_tbl");
---- RESULTS
'Table has been created.'
====
---- QUERY
# Create external JDBC table with decimal type.
# The decimal scale of column d5 is larger than the decimal scale of the corresponding
# decimal columns in the remote table, but their decimal precisions are same, which cause
# truncation, hence exception will be thrown.
DROP TABLE IF EXISTS jdbc_decimal_tbl_4;
CREATE EXTERNAL TABLE jdbc_decimal_tbl_4 (
d1 DECIMAL(9,0),
d2 DECIMAL(10,0),
d3 DECIMAL(20,10),
d4 DECIMAL(38,38),
d5 DECIMAL(10,6),
d6 DECIMAL(9,0))
STORED BY JDBC
TBLPROPERTIES (
"database.type"="IMPALA",
"jdbc.url"="jdbc:impala://$INTERNAL_LISTEN_HOST:21050/functional",
"jdbc.auth"="AuthMech=0",
"jdbc.driver"="com.cloudera.impala.jdbc.Driver",
"driver.url"="$FILESYSTEM_PREFIX/test-warehouse/data-sources/jdbc-drivers/ImpalaJDBC42.jar",
"dbcp.username"="impala",
"dbcp.password"="cloudera",
"table"="decimal_tbl");
---- RESULTS
'Table has been created.'
====
---- QUERY
# Test the jdbc DataSource
# count(*) with a predicate evaluated by Impala
# Binary predicates are pushed to the external jdbc DataSource.
select count(*) from alltypes_jdbc_datasource
where float_col = 0 and string_col is not NULL
---- RESULTS
730
---- TYPES
BIGINT
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 1 .*
row_regex: .*RowsRead: 730 .*
aggregation(SUM, RowsRead): 730
====
---- QUERY
# count(*) with no predicates has no materialized slots
select count(*) from alltypes_jdbc_datasource
---- RESULTS
7300
---- TYPES
BIGINT
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 1 .*
row_regex: .*RowsRead: 7.30K .*
aggregation(SUM, RowsRead): 7300
====
---- QUERY
# Gets all types including a row with a NULL value. The binary predicates are pushed to
# the DataSource, "order by" and "limit" are evaluated locally.
select *
from alltypes_jdbc_datasource
where id > 10 and int_col< 5 order by id limit 5 offset 0
---- RESULTS
11,false,1,1,1,10,1.100000023841858,10.1,'01/02/09','1',2009-01-02 00:11:00.450000000
12,true,2,2,2,20,2.200000047683716,20.2,'01/02/09','2',2009-01-02 00:12:00.460000000
13,false,3,3,3,30,3.299999952316284,30.3,'01/02/09','3',2009-01-02 00:13:00.480000000
14,true,4,4,4,40,4.400000095367432,40.4,'01/02/09','4',2009-01-02 00:14:00.510000000
20,true,0,0,0,0,0,0,'01/03/09','0',2009-01-03 00:20:00.900000000
---- TYPES
INT, BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, STRING, STRING, TIMESTAMP
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 4 .*
row_regex: .*RowsRead: 3.64K .*
aggregation(SUM, RowsRead): 3644
====
---- QUERY
# Gets specified columns.
# The binary predicates are pushed to the DataSource, "order by" and "limit" are
# evaluated locally.
select id, bool_col, smallint_col, float_col, double_col, date_string_col
from alltypes_jdbc_datasource
where id > 10 and int_col< 5 order by id limit 5 offset 0
---- RESULTS
11,false,1,1.100000023841858,10.1,'01/02/09'
12,true,2,2.200000047683716,20.2,'01/02/09'
13,false,3,3.299999952316284,30.3,'01/02/09'
14,true,4,4.400000095367432,40.4,'01/02/09'
20,true,0,0,0,'01/03/09'
---- TYPES
INT, BOOLEAN, SMALLINT, FLOAT, DOUBLE, STRING
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 4 .*
row_regex: .*RowsRead: 3.64K .*
aggregation(SUM, RowsRead): 3644
====
---- QUERY
# Gets specified columns from external jdbc table with case sensitive column names
# and table name.
# The binary predicates are pushed to the DataSource, "order by" and "limit" are
# evaluated locally.
select id, bool_col, smallint_col, float_col, double_col, date_string_col
from alltypes_jdbc_datasource_2
where id > 10 and int_col< 5 order by id limit 5 offset 0
---- RESULTS
11,false,1,1.100000023841858,10.1,'01/02/09'
12,true,2,2.200000047683716,20.2,'01/02/09'
13,false,3,3.299999952316284,30.3,'01/02/09'
14,true,4,4.400000095367432,40.4,'01/02/09'
20,true,0,0,0,'01/03/09'
---- TYPES
INT, BOOLEAN, SMALLINT, FLOAT, DOUBLE, STRING
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 4 .*
row_regex: .*RowsRead: 3.64K .*
aggregation(SUM, RowsRead): 3644
====
---- QUERY
# Inner join with a non jdbc table
# The binary predicates are pushed to the DataSource, but no predicate defined for
# local table.
select a.id, b.int_col
from alltypes_jdbc_datasource a inner join functional.alltypes b on (a.id = b.id)
where a.id = 1
---- RESULTS
1,1
---- TYPES
INT, INT
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 1 .*
row_regex: .*RowsRead: 1 .*
aggregation(SUM, RowsRead): 7301
====
---- QUERY
# Inner join with another jdbc table
# The binary predicates are pushed to the two DataSource Nodes.
select a.id, b.int_col
from alltypes_jdbc_datasource a inner join alltypes_jdbc_datasource_2 b on (a.id = b.id)
where a.id < 3 group by a.id, b.int_col
---- RESULTS
0,0
1,1
2,2
---- TYPES
INT, INT
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 1 .*
row_regex: .*RowsRead: 3 .*
aggregation(SUM, RowsRead): 6
====
---- QUERY
# Cross join
# The binary predicates are pushed to the two DataSource Nodes.
select a.id, b.id
from alltypes_jdbc_datasource a cross join alltypes_jdbc_datasource b
where (a.id < 3 and b.id < 3)
order by a.id, b.id limit 10
---- RESULTS
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
---- TYPES
INT, INT
---- RUNTIME_PROFILE
row_regex: .*NumExternalDataSourceGetNext: 1 .*
row_regex: .*RowsRead: 3 .*
aggregation(SUM, RowsRead): 6
====
---- QUERY
select * from jdbc_decimal_tbl;
---- RESULTS
1234,2222,1.2345678900,0.12345678900000000000000000000000000000,12345.78900,1
2345,111,12.3456789000,0.12345678900000000000000000000000000000,3.14100,1
12345,333,123.4567890000,0.12345678900000000000000000000000000000,11.22000,1
12345,333,1234.5678900000,0.12345678900000000000000000000000000000,0.10000,1
132842,333,12345.6789000000,0.12345678900000000000000000000000000000,0.77889,1
---- TYPES
DECIMAL,DECIMAL,DECIMAL,DECIMAL,DECIMAL,DECIMAL
====
---- QUERY
select * from jdbc_decimal_tbl_2;
---- RESULTS
1234.0,2222.0,1.23456789000,0.12345678900000000000000000000000000000,12345.789000,1.0
2345.0,111.0,12.34567890000,0.12345678900000000000000000000000000000,3.141000,1.0
12345.0,333.0,123.45678900000,0.12345678900000000000000000000000000000,11.220000,1.0
12345.0,333.0,1234.56789000000,0.12345678900000000000000000000000000000,0.100000,1.0
132842.0,333.0,12345.67890000000,0.12345678900000000000000000000000000000,0.778890,1.0
---- TYPES
DECIMAL,DECIMAL,DECIMAL,DECIMAL,DECIMAL,DECIMAL
====
---- QUERY
select * from jdbc_decimal_tbl_3;
---- CATCH
row_regex: .*Invalid DECIMAL\(20, 9\) for column d3 since there is possible loss of precision when casting from DECIMAL\(11, 10\).*
====
---- QUERY
select * from jdbc_decimal_tbl_4;
---- CATCH
row_regex: .*Invalid DECIMAL\(10, 6\) for column d5 since there is possible loss of precision when casting from DECIMAL\(10, 5\).*
====
---- QUERY
# Drop table
DROP TABLE alltypes_jdbc_datasource;
---- RESULTS
'Table has been dropped.'
====
---- QUERY
# Drop table
DROP TABLE alltypes_jdbc_datasource_2;
---- RESULTS
'Table has been dropped.'
====
---- QUERY
# Drop table
DROP TABLE jdbc_decimal_tbl;
---- RESULTS
'Table has been dropped.'
====
---- QUERY
# Drop table
DROP TABLE jdbc_decimal_tbl_2;
---- RESULTS
'Table has been dropped.'
====
---- QUERY
# Drop table
DROP TABLE jdbc_decimal_tbl_3;
---- RESULTS
'Table has been dropped.'
====
---- QUERY
# Drop table
DROP TABLE jdbc_decimal_tbl_4;
---- RESULTS
'Table has been dropped.'
====