Thanks for the tips. I will go with option 3. Also, for some reasons, I don't have permissions to assign issues to myself in the Impala project. Do you guys know if I need to request additional privileges?
I can assign Hive issues to myself without additional actions. Vincent On Mon, May 15, 2017 at 6:55 PM, Tim Armstrong <[email protected]> wrote: > Also if you're starting to work on the JIRA, can assign it to yourself in > the Apache JIRA instance so we can see that it's assigned to someone. > > Cheers, > Tim > > On Mon, May 15, 2017 at 4:21 PM, Alexander Behm <[email protected]> > wrote: > > > Hi Vincent, > > > > Jim is correct, we to be able to handle invocations with those types: > > The 1st arg can be any type. The 2nd and 3rd types must be compatible. > > During function resolution the FE will pick the most appropriate > signature > > and add casts to the 2nd or 3rd arg as necessary. > > You do not need to create signatures like "nvl2(string, int, timestamp)". > > > > I have considered the following options for addressing this difficulty: > > 1. Accept an AnyType for the 1st argument and create 9 function > signatures. > > The FE current does not have such a concept. Adding it would involve > > changing many tricky places. > > 2. Rewrite NVL2() as an IF in the FE using the ExprRewriteRule framework. > > You will need to make changes to FunctionCallExpr to accept NVL2(). > > 3. Stamp out all 9*9 function signatures. Should be easy since you are in > > Python code there. > > > > Option 3 seems easiest/preferable to me at this point. > > > > Alex > > > > > > > > On Mon, May 15, 2017 at 1:05 PM, Jim Apple <[email protected]> wrote: > > > > > It seems to me like there should be version with type X, [P,X,X] for > > > all pair P and X. There might be a smart way to do this without the > > > quadratic number of cases; someone else probably knows better than I > > > do about that. > > > > > > On Sun, May 14, 2017 at 1:00 AM, Vincent Tran <[email protected]> > > wrote: > > > > Hey folks, > > > > > > > > I want to start contributing to learn the code base. I added this > > > function > > > > to my personal build: > > > > > > > > [['nvl2'], 'TINYINT', ['TINYINT', 'TINYINT', 'TINYINT'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'SMALLINT', ['SMALLINT', 'SMALLINT', 'SMALLINT'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'INT', ['INT', 'INT', 'INT'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'BIGINT', ['BIGINT', 'BIGINT', 'BIGINT'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'FLOAT', ['FLOAT', 'FLOAT', 'FLOAT'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'DOUBLE', ['DOUBLE', 'DOUBLE', 'DOUBLE'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'DECIMAL', ['DECIMAL', 'DECIMAL', 'DECIMAL'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'STRING', ['STRING', 'STRING', 'STRING'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > [['nvl2'], 'TIMESTAMP', ['TIMESTAMP', 'TIMESTAMP', 'TIMESTAMP'], > > > > 'impala::ConditionalFunctions::NVL2'], > > > > > > > > > > > > Do you think this is a sound approach? Should we allow mix types for > > this > > > > function? > > > > > > > > i.e. nvl2(string, int, timestamp) > > > > > > > > > > > > https://issues.cloudera.org/browse/IMPALA-5030 > > > > > > > > > > > > -- > > > > Vincent T. Tran > > > > Customer Operations Engineer > > > > Cloudera, Inc. > > > > > > -- Vincent T. Tran Customer Operations Engineer Cloudera, Inc.
