An upcoming release of the Impala driver will include a fix for not removing comments when UseNativeQuery=1 is used.
On Fri, Jan 26, 2018 at 10:29 AM, Greg Rahn <[email protected]> wrote: > I was able to repro this as well and checking in with Simba who authors > the driver. > > > On Wed, Jan 17, 2018 at 9:03 PM, Sunil Parmar <[email protected]> > wrote: > >> Tried with case change but no luck. From the connection log. >> >> Jan 17 20:33:38.163 TRACE 1 >> com.cloudera.jdbc.common.SConnection.nativeSQL("select >> sum(1) from dwh.event_detail where org_group_id > 10; /*abcdefg*/"): +++++ >> enter +++++ >> Jan 17 20:33:38.163 TRACE 1 com.cloudera.hivecommon.core.H >> iveJDBCCommonConnection.toNativeSQL("select sum(1) from dwh.event_detail >> where org_group_id > 10; /*abcdefg*/"): +++++ enter +++++ >> Jan 17 20:33:38.164 TRACE 1 com.cloudera.hivecommon.dataen >> gine.HiveJDBCDataEngine.prepare("select sum(1) from dwh.event_detail >> where org_group_id > 10; "): +++++ enter +++++ >> Jan 17 20:33:38.166 TRACE 1 com.cloudera.hivecommon.dataen >> gine.HiveJDBCNativeQueryExecutor.HiveJDBCNativeQueryExecutor >> (com.cloudera.dsi.core.impl.DSILogger@1d057a39, >> com.cloudera.hivecommon.api.HS2Client@26be92ad, "select sum(1) from >> dwh.event_detail where org_group_id > 10;"): +++++ enter +++++ >> ... >> >> Sunil Parmar >> >> On Wed, Jan 17, 2018 at 5:52 PM, Vincent Tran <[email protected]> >> wrote: >> >>> The properties are case sensitive so I would try UseNativeQuery just to >>> dot the i's and cross the t's. >>> >>> Ensure that the property is recognized and applied by the driver by >>> checking the JDBC log. (LogLevel=6;LogPath=/path/to/foo;) >>> >>> On Jan 17, 2018 6:45 PM, "Sunil Parmar" <[email protected]> wrote: >>> >>>> useNativeQuery didn't help. >>>> >>>> This is my code. >>>> >>>> public static void main(String[] args) throws IOException, SQLException >>>> { >>>> connectionUrl = >>>> "jdbc:impala://hadoop102.qa1.sac.int.company.com:21050/dwh; >>>> AuthMech=3;UID=ldaptest;PWD=test;useNativeQuery=1"; >>>> jdbcDriverName = "com.cloudera.impala.jdbc41.Driver"; >>>> System.out.println("\n====================================== >>>> ======="); >>>> System.out.println("Cloudera Impala JDBC Example"); >>>> System.out.println("Using Connection URL: " + connectionUrl); >>>> // System.out.println("Running Query: " + sqlStatement); >>>> Connection con = null; >>>> try { >>>> Class.forName(jdbcDriverName); >>>> con = DriverManager.getConnection(connectionUrl); >>>> String query="select count( distinct yyyymmdd) from >>>> dwh.event_detail limit 1/*abcdefg1*/"; >>>> System.out.println("\n== Begin Query Results >>>> ======================"); >>>> System.out.println("\n== Running query=== " + query); >>>> Statement st = con.createStatement(); >>>> ResultSet rs = st.executeQuery(query); >>>> QueryTask.printResultSet(rs); >>>> >>>> } catch (SQLException e) { >>>> e.printStackTrace(); >>>> } catch (Exception e) { >>>> e.printStackTrace(); >>>> } finally { >>>> con.close(); >>>> >>>> } >>>> } >>>> >>>> Same query when executed from HUE shows comments. Look at the >>>> screenshot from CM. >>>> >>>> >>>> >>>> >>>> Sunil Parmar >>>> >>>> On Wed, Dec 13, 2017 at 11:30 PM, Mostafa Mokhtar < >>>> [email protected]> wrote: >>>> >>>>> +1 on what Alex recommends. >>>>> Highly recommend using useNativeQuery=1 all the time. >>>>> >>>>> Thanks >>>>> Mostafa >>>>> >>>>> On Dec 13, 2017, at 9:42 PM, Alexander Behm <[email protected]> >>>>> wrote: >>>>> >>>>> Not sure if this will work, but you could try enabling useNativeQuery >>>>> in the driver. Theoretically that should send the query string including >>>>> comments verbatim to Impala. >>>>> >>>>> On Wed, Dec 13, 2017 at 7:57 PM, Philip Zeyliger <[email protected]> >>>>> wrote: >>>>> >>>>>> I’m a little surprised comments are being stripped, but adding (1=1 >>>>>> or “”=“your comment”) to a where clause would work similarly. Impala will >>>>>> simplify that away during query compilation. >>>>>> >>>>>> P >>>>>> >>>>>> On Wed, Dec 13, 2017 at 7:22 PM Sunil Parmar <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Server version: impalad version 2.9.0-cdh5.12.1 RELEASE (build >>>>>>> 5131a031f4aa38c1e50c430373c55ca53e0517b9) >>>>>>> >>>>>>> One of the primary use of of Impala is it acts as a backend to a web >>>>>>> application exposed to lot of users. We are trying to build monitoring >>>>>>> metrics per web page, logged in user and other things that are not >>>>>>> typically supplied in the query string. We were thinking to use query >>>>>>> comments to pass such information along with query. It worked fine when >>>>>>> query is executed using impala-shell; I can see the comments in the >>>>>>> impala >>>>>>> monitoring page i.e. on port #25000 but when comments are sent over >>>>>>> JDBC ; >>>>>>> they're not visible to Impalad. >>>>>>> >>>>>>> 1. Is there an configuration in Impala driver ? We're using >>>>>>> <dependency> >>>>>>> <groupId>com.cloudera.impala</groupId> >>>>>>> <artifactId>impala-jdbc</artifactId> >>>>>>> <version>2.5.30</version> >>>>>>> <scope>compile</scope> >>>>>>> </dependency> >>>>>>> >>>>>>> 2. Is there any other way to send such hints along with query ? >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> Sunil >>>>>>> >>>>>>> >>>>> >>>> >> >
