Hi everyone I faced behavior which seems weird to me, however I would like to double check first.
Normally we call SqlNode validatedNode = validator.validate(inputNode); //here validator is SqlValidatorImpl and everything is ok if we do not use inputNode (for whatever reason ) However if inputNode is used anywhere after validation then in some cases validate method makes this node invalid by adding illegal nodes >From the javadoc for SqlValidator interface it is not clear if this method is allowed to mutate SqlNode making it invalid or not[1] Would be great to get better understanding whether it is expected behavior (may be javadoc should be updated then) or not P.S. Also I tweaked SqlValidatorTest in a way to make it run validator.validate(inputNode) 2 times on the same input: there are a few tests failed because of the things mentioned above [1] https://github.com/apache/calcite/blob/270ba649cfa80228d3f4f6635a08ab06de504399/core/src/main/java/org/apache/calcite/sql/validate/SqlValidator.java#L139-L146 -- Best regards, Sergey
