Details
-
Improvement
-
Status: Resolved
-
P3
-
Resolution: Fixed
-
None
-
None
Description
Currently, how types work in Beam ZetaSQL is very confusing: code that does type conversion between Calcite/Beam/ZetaSQL type systems are everywhere and is likely to be not consistent. In addition, the recent migration to BeamZetaSqlCalcRel makes the situation even worse: it adds another layer for type conversion and makes a lot of code (for making ZetaSQL functions manually) obsolete. This makes debugging and supporting new features very hard. A few examples:
- Support new ZetaSQL types (e.g. DATE/TIME/DATETIME)
- Fix the long-standing precision & timezone issue of TIMESTMAP type
- Support BeamSQL query parameters
Therefore, I propose we work on the following items to make the story of Beam ZetaSQL type clearer:
- Define a clear mapping between Calcite/Beam/ZetaSQL types and values
- Refactor the codebase to move all type conversion code to a single source of truth
- Add thorough testing for it
- Remove obsolete code that is added to make functions work before BeamZetaSqlCalcRel