Support Questions

Find answers, ask questions, and share your expertise

Impala ODBC driver and python query with params

avatar
Explorer

Hi folks,

 

I tried to submit a query with params via ODBC to Impala. Thi is my code:

 

 

 

import pyodbc

# connect
crsr = pyodbc.connect('DSN=impala', autocommit=True).cursor()
param1 = 1000000000
param2 = '2023-01-01'

# long query
query = """
select *
from target_test.test d 
left outer join 
  (select cli, fsc, nom_rag_soc, dat_ini_val, dat_ccz_inl, dat_csz_efv, dta_cessata, sta, prg_var, cod_cau_csz_dl, rn 
  from 
    (select 
      c2.cod_cli as cli, 
      trim(c2.cod_fsc) as fsc,
      trim(c2.nom_rag_soc) as nom_rag_soc,
      c2.dat_ini_val,
      dat_ccz_inl,
      dat_csz_efv, 
      (case when c2.dat_csz_efv= '1900-01-01 00:00:00' then '2999-01-01 00:00:00' else c2.dat_csz_efv end) as dta_cessata,
      sta,
      prg_var,
      cod_cau_csz_dl,
      row_number() over (partition by cod_fsc order by (case when c2.dat_csz_efv='1900-01-01 00:00:00' then '2999-01-01 00:00:00' else c2.dat_csz_efv end) desc) as rn
    from target_test.test2 c2 
    where  
      c2.sta='c' 
      and c2.dat_ini_val = (select max(c1.dat_ini_val) from target_test.test3 c1 where c1.sta='c' and c2.cod_cli=c1.cod_cli and c2.cod_fsc=c1.cod_fsc) 
      and prg_var = (select max(prg_var) from target_test.v_padln_t_cliente xc where c2.cod_cli = xc.cod_cli and sta ='c' and xc.dat_ini_val = c2.dat_ini_val) 
    ) a 
    where rn=1 
  ) k 
on trim(d.cod_fsc)=k.fsc
  where 
    d.prg_rig < ?
    and d.dat_cre_flu >= ?
    and d.tip_flu = 'f24';
"""

try:
  res = crsr.execute(query, param1, param2).fetchall
  print(res)
except pyodbc.Error as e:
  e.args = (e.args[1],)
  raise

 

 

 

But this is the output:

disoardi_0-1727356242556.png

I installed this driver: ClouderaImpalaODBC-2.7.1.1009-1.x86_64.rpm

If I try whit simple query, without subqueries, it works.

 

Any suggestions?

1 ACCEPTED SOLUTION

avatar
Expert Contributor

Hi-

If you are using the latest ODBC and seeing this issue, then this could be hitting an ODBC driver 'corner case' bug. Please open a ticket with Cloudera Support, and we will take it further to the Driver Team.

View solution in original post

10 REPLIES 10

avatar
Explorer

Sure, it’s the latest version available. We have opened a case to cloudera, but being Impala and python widely used together I am surprised not finding lots bug report about this.