yashmayya commented on code in PR #15263:
URL: https://github.com/apache/pinot/pull/15263#discussion_r2000856836


##########
pinot-query-planner/src/test/resources/queries/JoinPlans.json:
##########
@@ -405,10 +405,10 @@
           "\nLogicalProject(col1=[$0])",
           "\n  LogicalJoin(condition=[AND(=($0, $3), =($1, $4), >($2, $5))], 
joinType=[inner])",
           "\n    PinotLogicalExchange(distribution=[hash[0, 1]])",
-          "\n      LogicalProject(col1=[$0], col2=[$1], col4=[$3])",
+          "\n      LogicalProject(col1=[$0], col2=[$1], 
EXPR$0=[CAST($3):DECIMAL(1000, 982) NOT NULL])",

Review Comment:
   The scale is 982 btw, the precision is 1000 here.
   
   I found out that this is actually coming from type coercion during the SQL 
-> Rel conversion phase, where the casts are being applied because the 
comparison (`>`) is being made on different types. One is `DECIMAL(1000, 1000)` 
(the `BigDecimal` column using default scale / precision) and the other is 
`DECIMAL(19, 1)` (`0.5` is `DECIMAL(2, 1)` and we're multiplying it with a 
`BIGINT` value). The logic that computes the precision and scale when coercing 
two decimal types is here - 
https://github.com/apache/calcite/blob/9b51667eebc825d5d3ece72cfcdb5d2efaa2d56f/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFactoryImpl.java#L460-L498.
   
   It's a little convoluted, but the resultant scale of 982 is arrived at like 
this:
   
   `Math.min(maxScale, Math.min(Math.max(s1, s2), maxPrecision - 
Math.min(maxPrecision, Math.max(p1 - s1, p2 - s2))))`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to