mihaibudiu commented on code in PR #3943:
URL: https://github.com/apache/calcite/pull/3943#discussion_r1739942645


##########
core/src/main/java/org/apache/calcite/sql/type/SqlTypeFactoryImpl.java:
##########
@@ -88,6 +90,14 @@ public SqlTypeFactoryImpl(RelDataTypeSystem typeSystem) {
     if (maxPrecision >= 0 && precision > maxPrecision) {
       precision = maxPrecision;
     }
+    if (typeName == SqlTypeName.DECIMAL) {
+      if (precision != RelDataType.PRECISION_NOT_SPECIFIED && precision <= 0) {
+        throw RESOURCE.invalidPrecisionForDecimalType(precision, 
maxPrecision).ex();
+      }
+      if (scale != RelDataType.SCALE_NOT_SPECIFIED && (scale < 0 || scale > 
precision)) {

Review Comment:
   yes, these should be in the type system probably, same as rounding
   I personally haven't thought too much about the rules or arithmetic on 
negative scales
   several algorithms used by calcite (e.g., infer types for arithmetic 
results) may need to be revisited if this is possible. I think that the 
existing ones were designed assuming that scale cannot be negative.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to