You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Anchal Agrawal (JIRA)" <ji...@apache.org> on 2015/08/06 03:51:04 UTC
[jira] [Commented] (PHOENIX-2151) Two different UDFs called on same
column return values from first UDF only
[ https://issues.apache.org/jira/browse/PHOENIX-2151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14659330#comment-14659330 ]
Anchal Agrawal commented on PHOENIX-2151:
-----------------------------------------
Phoenix 4.4.0
HBase 0.98.8
I'm facing this issue and can reproduce it on multiple test cases.
Phoenix view: create view "mytable" (pk VARBINARY PRIMARY KEY, "cf"."col" UNSIGNED_LONG);
UDF1: create function udf1(VARBINARY) returns UNSIGNED_LONG as 'mypkg.GetX';
UDF2: create function udf2(VARBINARY) returns INTEGER as 'mypkg.GetY';
Query1: select udf1(pk), udf2(pk) from "mytable";
Output:
===================================================
UDF1(PK) | UDF1(PK)
===================================================
<UDF1 Value> | <UDF1 Value>
Expected output:
===================================================
UDF1(PK) | UDF2(PK)
===================================================
<UDF1 Value> | <UDF2 Value>
Query2: select udf2(pk), udf1(pk) from "mytable";
Output: same as Query1, except this time both columns are UDF2(PK).
Query3: select udf1(pk), "col" from "mytable" where udf2(pk) > 0;
Output:
===================================================
UDF2(PK) | COL
===================================================
<UDF2 Value> | <COL Value>
Expected output:
===================================================
UDF1(PK) | COL
===================================================
<UDF1 Value> | <COL Value>
Query4: select pk, udf1(pk), udf2(pk) from "mytable";
Output:
===================================================
PK | UDF1(PK) | UDF1(PK)
===================================================
<PK VALUE> | <UDF1 Value> | <UDF1 Value>
Expected output:
===================================================
PK | UDF1(PK) | UDF2(PK)
===================================================
<PK VALUE> | <UDF1 Value> | <UDF2 Value>
If I have just one UDF in a query, like so: select pk, udf2(pk) from "mytable";
then the output is as expected:
===================================================
PK | UDF2(PK)
===================================================
<PK VALUE> | <UDF2 Value>
It appears to be picking up the first UDF, except in Query3 where UDF2 is in the WHERE clause, where it picks UDF2.
> Two different UDFs called on same column return values from first UDF only
> --------------------------------------------------------------------------
>
> Key: PHOENIX-2151
> URL: https://issues.apache.org/jira/browse/PHOENIX-2151
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.4.0
> Environment: Phoenix 4.4.0
> HBase 0.98_13
> Java 7
> Ubuntu 14.04.1 X64
> Reporter: Nicholas Whitehead
> Assignee: Rajeshbabu Chintaguntla
> Priority: Critical
>
> I have defined two different UDFs, say FOO(varchar) and BAR(varchar).
> If I execute a query such as:
> SELECT PK, FOO(NAME), BAR(NAME) FROM USERS, I get:
> ===================================================
> PK | FOO | BAR
> ===================================================
> 37546 | <Fooed Value> | <Fooed Value>
> If I reverse the order, I only get the Barred value (i.e. it ignores the 2nd and subsequent UDF operators)
> SELECT PK, BAR(NAME), FOO(NAME) FROM USERS, I get:
> ===================================================
> PK | BAR | FOO
> ===================================================
> 37546 | <Bared Value> | <Bared Value>
> Reproduced in plain command JDBC and Squirrel SQL.
> Packaged reproduction pending.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)