In current code master of Calcite, operator JSON_ARRAYAGG and JSON_OBJECTAGG are separated to JSON_ARRAYAGG_NULL_ON_NULL, JSON_ARRAYAGG_ABSENT_ON_NULL, JSON_OBJECTAGG_NULL_ON_NULL and JSON_OBJECTAGG_ABSENT_ON_NULL in SqlStdOperatorTable.java. This is OK for now, but may deliver more difficulty on extending syntax of JSON_ARRAYAGG and JSON_OBJECTAGG and on implementing logical plan by adapters.
This is basically to combine the 4 operators to 2, this is a improvement list:
- Combine JSON_ARRAYAGG_NULL_ON_NULL and JSON_ARRAYAGG_ABSENT_ON_NULL;
- Combine JSON_OBJECTAGG_NULL_ON_NULL and JSON_OBJECTAGG_ABSENT_ON_NULL;
- SYMBOL type Support for JavaTypeFactoryImpl#getJavaClass This is to generate Enum java type for SYMBOL;
- Add SQL-to-Rel test cases for JSON functions.