RE: Syntax for filters on timstamp data type

2013-04-08 Thread LUTTER, Steffen
Hi Mark,

Correct, I just did some tests and the cast is the way to go. While for 
comparison operations (equal, diff, ...) implicit casts work, this is not the 
case for the IN clause. I think it should, as eventually this just translates 
to a disjunction of comparisons so it should be the same.

Anyway, I have a working solution now. For the record I paste two working 
example queries below.

Thanks a lot for your help !!!

Steffen

Example 1: SELECT * FROM  table1 WHERE datecol  =  CAST('2009-01-17 00:00:00' 
AS timestamp)
Example 2: SELECT * FROM  table1 WHERE datecol IN (CAST ('2009-01-11 00:00:00' 
AS timestamp), CAST ('2009-01-08 00:00:00' AS timestamp) )

From: Mark Grover [mailto:grover.markgro...@gmail.com]
Sent: 05 April 2013 18:43
To: user@hive.apache.org
Subject: Re: Syntax for filters on timstamp data type

Steffan,
One thing that may be different is that equal can cast operands to make equals 
work but that may not be true for IN. FWIW, this is me just speculating, I 
haven't looked at the code just yet.

Perhaps, you could explicit casting to get around this?
On Fri, Apr 5, 2013 at 7:36 AM, LUTTER, Steffen 
steffen.lut...@sap.commailto:steffen.lut...@sap.com wrote:
Equal, not equal, less than, less or equal, greater than, greater or equal all 
work. Also the function execution in the IN clause seems to work, as the error 
message states that the result type is bigint. Following the error message, it 
expects the input as timestamp, but I couldn't find a syntax to express 
timestamps in HiveQL.

Two questions remain:


1)  How to express timestamps in HiveQL?

2)  Why doesn't the IN clause support comparisons between timestamp and 
bigint, if equal and so on does?

Thanks for any thought in this,

Steffen

From: Nitin Pawar 
[mailto:nitinpawar...@gmail.commailto:nitinpawar...@gmail.com]
Sent: 05 April 2013 16:11
To: user@hive.apache.orgmailto:user@hive.apache.org
Subject: Re: Syntax for filters on timstamp data type

I am not sure IN clause supports executing functions in the query

did it fail when you tried  less than greater than type

On Fri, Apr 5, 2013 at 7:36 PM, LUTTER, Steffen 
steffen.lut...@sap.commailto:steffen.lut...@sap.com wrote:
Hi,

I have a question regarding filters on timestamps. The syntax seems to be 
UNIX_TIMESTAMP('-MM-dd hh:mm:ss'), is there another way to express a 
datetime type? The problem is that I get an exception when using the IN list 
syntax, while the equal comparison works without problems.

Example: SELECT * FROM  table1 WHERE datecol IN ( UNIX_TIMESTAMP('2009-01-05 
00:00:00'),UNIX_TIMESTAMP('2009-01-10 00:00:00')  )

Throws exception:

Caused by: java.sql.SQLException: Query returned non-zero code: 10014, cause: 
FAILED: SemanticException [Error 10014]: Line 5:21 Wrong arguments ''2009-01-10 
00:00:00'': The arguments for IN should be the same type! Types are: {timestamp 
IN (bigint, bigint)}
   at 
org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:189)
   at 
org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
   at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCAPI$Statement.execute(JDBCAPI.java:1648)
   at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCDriver.prepare(JDBCDriver.java:1760)
   ... 15 more

Following query works:

SELECT * FROM  table1 WHERE datecol  =  UNIX_TIMESTAMP('2009-01-17 00:00:00')

Is there another syntax for datetime types? Could it be a bug in the filter IN 
list operation?

Thanks in advance,

Steffen




--
Nitin Pawar



RE: Syntax for filters on timstamp data type

2013-04-08 Thread LUTTER, Steffen
Exactly

From: Nitin Pawar [mailto:nitinpawar...@gmail.com]
Sent: 08 April 2013 16:06
To: user@hive.apache.org
Subject: Re: Syntax for filters on timstamp data type

great

so can we assume that equals comparison can auto cast but not the in  range 
statement ?

On Mon, Apr 8, 2013 at 7:08 PM, LUTTER, Steffen 
steffen.lut...@sap.commailto:steffen.lut...@sap.com wrote:
Hi Mark,

Correct, I just did some tests and the cast is the way to go. While for 
comparison operations (equal, diff, ...) implicit casts work, this is not the 
case for the IN clause. I think it should, as eventually this just translates 
to a disjunction of comparisons so it should be the same.

Anyway, I have a working solution now. For the record I paste two working 
example queries below.

Thanks a lot for your help !!!

Steffen

Example 1: SELECT * FROM  table1 WHERE datecol  =  CAST('2009-01-17 00:00:00' 
AS timestamp)
Example 2: SELECT * FROM  table1 WHERE datecol IN (CAST ('2009-01-11 00:00:00' 
AS timestamp), CAST ('2009-01-08 00:00:00' AS timestamp) )

From: Mark Grover 
[mailto:grover.markgro...@gmail.commailto:grover.markgro...@gmail.com]
Sent: 05 April 2013 18:43

To: user@hive.apache.orgmailto:user@hive.apache.org
Subject: Re: Syntax for filters on timstamp data type

Steffan,
One thing that may be different is that equal can cast operands to make equals 
work but that may not be true for IN. FWIW, this is me just speculating, I 
haven't looked at the code just yet.

Perhaps, you could explicit casting to get around this?
On Fri, Apr 5, 2013 at 7:36 AM, LUTTER, Steffen 
steffen.lut...@sap.commailto:steffen.lut...@sap.com wrote:
Equal, not equal, less than, less or equal, greater than, greater or equal all 
work. Also the function execution in the IN clause seems to work, as the error 
message states that the result type is bigint. Following the error message, it 
expects the input as timestamp, but I couldn't find a syntax to express 
timestamps in HiveQL.

Two questions remain:


1)  How to express timestamps in HiveQL?

2)  Why doesn't the IN clause support comparisons between timestamp and 
bigint, if equal and so on does?

Thanks for any thought in this,

Steffen

From: Nitin Pawar 
[mailto:nitinpawar...@gmail.commailto:nitinpawar...@gmail.com]
Sent: 05 April 2013 16:11
To: user@hive.apache.orgmailto:user@hive.apache.org
Subject: Re: Syntax for filters on timstamp data type

I am not sure IN clause supports executing functions in the query

did it fail when you tried  less than greater than type

On Fri, Apr 5, 2013 at 7:36 PM, LUTTER, Steffen 
steffen.lut...@sap.commailto:steffen.lut...@sap.com wrote:
Hi,

I have a question regarding filters on timestamps. The syntax seems to be 
UNIX_TIMESTAMP('-MM-dd hh:mm:ss'), is there another way to express a 
datetime type? The problem is that I get an exception when using the IN list 
syntax, while the equal comparison works without problems.

Example: SELECT * FROM  table1 WHERE datecol IN ( UNIX_TIMESTAMP('2009-01-05 
00:00:00'),UNIX_TIMESTAMP('2009-01-10 00:00:00')  )

Throws exception:

Caused by: java.sql.SQLException: Query returned non-zero code: 10014, cause: 
FAILED: SemanticException [Error 10014]: Line 5:21 Wrong arguments ''2009-01-10 
00:00:00'': The arguments for IN should be the same type! Types are: {timestamp 
IN (bigint, bigint)}
   at 
org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:189)
   at 
org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
   at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCAPI$Statement.execute(JDBCAPI.java:1648)
   at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCDriver.prepare(JDBCDriver.java:1760)
   ... 15 more

Following query works:

SELECT * FROM  table1 WHERE datecol  =  UNIX_TIMESTAMP('2009-01-17 00:00:00')

Is there another syntax for datetime types? Could it be a bug in the filter IN 
list operation?

Thanks in advance,

Steffen




--
Nitin Pawar




--
Nitin Pawar


Syntax for filters on timstamp data type

2013-04-05 Thread LUTTER, Steffen
Hi,

I have a question regarding filters on timestamps. The syntax seems to be 
UNIX_TIMESTAMP('-MM-dd hh:mm:ss'), is there another way to express a 
datetime type? The problem is that I get an exception when using the IN list 
syntax, while the equal comparison works without problems.

Example: SELECT * FROM  table1 WHERE datecol IN ( UNIX_TIMESTAMP('2009-01-05 
00:00:00'),UNIX_TIMESTAMP('2009-01-10 00:00:00')  )

Throws exception:

Caused by: java.sql.SQLException: Query returned non-zero code: 10014, cause: 
FAILED: SemanticException [Error 10014]: Line 5:21 Wrong arguments ''2009-01-10 
00:00:00'': The arguments for IN should be the same type! Types are: {timestamp 
IN (bigint, bigint)}
   at 
org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:189)
   at 
org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
   at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCAPI$Statement.execute(JDBCAPI.java:1648)
   at 
com.sap.connectivity.cs.java.drivers.jdbc.JDBCDriver.prepare(JDBCDriver.java:1760)
   ... 15 more

Following query works:

SELECT * FROM  table1 WHERE datecol  =  UNIX_TIMESTAMP('2009-01-17 00:00:00')

Is there another syntax for datetime types? Could it be a bug in the filter IN 
list operation?

Thanks in advance,

Steffen



getTimestamp in hive jdbc

2013-02-25 Thread LUTTER, Steffen
Hi guys,

Does anybody know if the methods getTimestamp(int columnIndex, Calendar cal) 
and getTimestamp(String columnName, Calendar cal) are going to be implemented 
in a future version? I am grateful that timestamp is now supported in 0.10.0 
(thanks to the devs!!!) and for now I will create a workaround in our code, but 
usually we call the getTimestamp methods with calendar object, so it would be 
great if this could be supported as well.

Thanks,

Steffen

Code:

public Timestamp getTimestamp(int columnIndex, Calendar cal) throws 
SQLException {
throw new SQLException(Method not supported);
}

public Timestamp getTimestamp(String columnName, Calendar cal) throws 
SQLException {
throw new SQLException(Method not supported);
}