Csaba Ringhofer has posted comments on this change. ( http://gerrit.cloudera.org:8080/7954 )
Change subject: IMPALA-5664: Unix time to timestamp conversions may crash Impala ...................................................................... Patch Set 9: (4 comments) http://gerrit.cloudera.org:8080/#/c/7954/9/be/src/exprs/timestamp-functions-ir.cc File be/src/exprs/timestamp-functions-ir.cc: http://gerrit.cloudera.org:8080/#/c/7954/9/be/src/exprs/timestamp-functions-ir.cc@136 PS9, Line 136: if(!tv.HasDateAndTime()){ > here an elsewhere - please follow the style used by the rest of impala. Done http://gerrit.cloudera.org:8080/#/c/7954/9/be/src/exprs/timestamp-functions-ir.cc@137 PS9, Line 137: UnixMicrosToUtcTimestamp > is that meaningful to the user? I have changed it to its query name. http://gerrit.cloudera.org:8080/#/c/7954/9/be/src/exprs/timestamp-functions-ir.cc@139 PS9, Line 139: } > are the ones you added the only places where your new validation might prod Literal::Literal(ColumnType type, double v) also uses TimestampValue::FromSubsecondUnixTime, but there is no function context there, and I do not know how to call that constructor. If I put a double to a place where a timestamp is expected, I get an analyses exception. I have also noticed someting strange: select timestamp_cmp(timstamp_col, cast(cast(-17987443200.1 as double) as timestamp)) from table; The table has 3 rows and 4 "UDF WARNING: Could not convert -17987443200.1 to timestamp" are printed. It would make more sense to me to have 1 call to cast (if the casts with constant arguments would be optimized away) or 3 (if no optimization takes place, and the cast is called for every row). Does Impala try to optimize functions calls with constant parameters? http://gerrit.cloudera.org:8080/#/c/7954/9/be/src/exprs/timestamp-functions-ir.cc@751 PS9, Line 751: datetime.date().year(); > it still seems like this is doing the same validation. should we remove thi It is the same check, but I would prefer to leave it as it is for now - it leads to a nice warning message, and the try-catch block is needed anyway because of AddInterval. It could be done in another commit + jira like clean up/speed up timestamp functions. -- To view, visit http://gerrit.cloudera.org:8080/7954 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I77b2f6284d3a597f57e61c17a67c959eff9e38ff Gerrit-Change-Number: 7954 Gerrit-PatchSet: 9 Gerrit-Owner: Csaba Ringhofer <[email protected]> Gerrit-Reviewer: Csaba Ringhofer <[email protected]> Gerrit-Reviewer: Dan Hecht <[email protected]> Gerrit-Reviewer: Lars Volker <[email protected]> Gerrit-Comment-Date: Wed, 04 Oct 2017 15:09:06 +0000 Gerrit-HasComments: Yes
