Michael Brown created IMPALA-5111:
-------------------------------------

             Summary: IllegalArgumentException when using explicit "NOT NULL" 
on pk column
                 Key: IMPALA-5111
                 URL: https://issues.apache.org/jira/browse/IMPALA-5111
             Project: IMPALA
          Issue Type: Bug
          Components: Catalog
    Affects Versions: Impala 2.9.0
            Reporter: Michael Brown
            Assignee: Matthew Jacobs
            Priority: Critical


If I create a Kudu table and explicitly use {{NOT NULL}} for a primary key 
column, I get an {{IllegalArgumentException}}.

{noformat}
CREATE TABLE t (
  c SMALLINT NOT NULL,
  PRIMARY KEY (c)
)
PARTITION BY HASH (c) PARTITIONS 2
STORED AS KUDU
TBLPROPERTIES ('kudu.master_addresses'='127.0.0.1');
{noformat}

{noformat}
I0323 12:39:38.180569 28753 jni-util.cc:176] 
org.apache.impala.common.ImpalaRuntimeException: Error creating Kudu table 
'impala::default.t'
        at 
org.apache.impala.service.KuduCatalogOpExecutor.createManagedTable(KuduCatalogOpExecutor.java:89)
        at 
org.apache.impala.service.CatalogOpExecutor.createKuduTable(CatalogOpExecutor.java:1653)
        at 
org.apache.impala.service.CatalogOpExecutor.createTable(CatalogOpExecutor.java:1575)
        at 
org.apache.impala.service.CatalogOpExecutor.execDdlRequest(CatalogOpExecutor.java:273)
        at org.apache.impala.service.JniCatalog.execDdl(JniCatalog.java:142)
Caused by: java.lang.IllegalArgumentException
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:72)
        at 
org.apache.impala.service.KuduCatalogOpExecutor.createColumnSchema(KuduCatalogOpExecutor.java:103)
        at 
org.apache.impala.service.KuduCatalogOpExecutor.createTableSchema(KuduCatalogOpExecutor.java:134)
        at 
org.apache.impala.service.KuduCatalogOpExecutor.createManagedTable(KuduCatalogOpExecutor.java:85)
        ... 4 more
I0323 12:39:38.217900 28753 status.cc:114] ImpalaRuntimeException: Error 
creating Kudu table 'impala::default.t'
CAUSED BY: IllegalArgumentException: null
    @          0x1209591  impala::Status::Status()
    @          0x15e5a94  impala::JniUtil::GetJniExceptionMsg()
    @          0x11fae31  impala::JniUtil::CallJniMethod<>()
    @          0x11f95a9  impala::Catalog::ExecDdl()
    @          0x11c4b50  CatalogServiceThriftIf::ExecDdl()
    @          0x123fa34  impala::CatalogServiceProcessor::process_ExecDdl()
    @          0x123f782  impala::CatalogServiceProcessor::dispatchCall()
    @          0x11b0564  apache::thrift::TDispatchProcessor::process()
    @          0x1381f5f  
apache::thrift::server::TAcceptQueueServer::Task::run()
    @          0x137e049  impala::ThriftThread::RunRunnable()
    @          0x137f775  boost::_mfi::mf2<>::operator()()
    @          0x137f60b  boost::_bi::list3<>::operator()<>()
    @          0x137f357  boost::_bi::bind_t<>::operator()()
    @          0x137f26a  
boost::detail::function::void_function_obj_invoker0<>::invoke()
    @          0x138ce2e  boost::function0<>::operator()()
    @          0x163a631  impala::Thread::SuperviseThread()
    @          0x164300c  boost::_bi::list4<>::operator()<>()
    @          0x1642f4f  boost::_bi::bind_t<>::operator()()
    @          0x1642f12  boost::detail::thread_data<>::run()
    @          0x1aee81a  thread_proxy
    @     0x7fc40964c184  start_thread
    @     0x7fc40937937d  clone
E0323 12:39:38.217911 28753 catalog-server.cc:69] ImpalaRuntimeException: Error 
creating Kudu table 'impala::default.t'
CAUSED BY: IllegalArgumentException: null
{noformat}

Note that a workaround is to remove {{NOT NULL}} here, and it works:

{noformat}
Query: create TABLE t (
  c SMALLINT,
  PRIMARY KEY (c)
)
PARTITION BY HASH (c) PARTITIONS 2
STORED AS KUDU
TBLPROPERTIES ('kudu.master_addresses'='127.0.0.1')

Fetched 0 row(s) in 0.87s
{noformat}

... but know that {{SHOW CREATE TABLE}} will include {{NOT NULL}}:

{noformat}
Query: show create table t
+-------------------------------------------------------------------------------+
| result                                                                        
|
+-------------------------------------------------------------------------------+
| CREATE TABLE default.t (                                                      
|
|   c SMALLINT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, 
|
|   PRIMARY KEY (c)                                                             
|
| )                                                                             
|
| PARTITION BY HASH (c) PARTITIONS 2                                            
|
| STORED AS KUDU                                                                
|
| TBLPROPERTIES ('kudu.master_addresses'='127.0.0.1')                           
|
+-------------------------------------------------------------------------------+
Fetched 1 row(s) in 4.57s
{noformat}

I found this because automation uses the output of {{SHOW CREATE TABLE}} to 
create a table copy.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to