Skip to content

feat(nereids): add typeof scalar function#61500

Draft
ahmedsaid47 wants to merge 2 commits intoapache:masterfrom
ahmedsaid47:feat/typeof
Draft

feat(nereids): add typeof scalar function#61500
ahmedsaid47 wants to merge 2 commits intoapache:masterfrom
ahmedsaid47:feat/typeof

Conversation

@ahmedsaid47
Copy link

What problem does this PR solve?

Issue Number: close #48203

Related PR: #48201

Problem Summary:

Add the Trino/Presto typeof(expr) scalar function in Nereids.

This implementation is FE-only and rewrites typeof(...) to a string literal during analysis, so it does not require a BE runtime function. The patch also adds Trino-compatible type display formatting for literals, casts, arrays, maps, rows, decimals, and nested types.

Release note

None

Check List (For Author)

  • Test
    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason

Manual test steps:

  1. cd fe && mvn package -pl fe-core -am -Dskip.doc=true -DskipTests -Dcheckstyle.skip=true -T 1
  2. mvn -pl fe-core -am -Dskip.doc=true -Dcheckstyle.skip=true -Dtest=org.apache.doris.nereids.trees.expressions.functions.scalar.TypeOfTest test
  3. Start a local FE runtime and verify typeof expressions are rewritten to the expected varchar literals through FE analysis.
  4. Probe the SQLs from regression-test/suites/external_table_p0/dialect_compatible/sql/presto/scalar/TestTypeOfFunction.sql against FE rewrite output to generate the expected .out content.
  • Behavior changed:

    • No.
    • Yes. Add typeof(expr) -> varchar.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@hello-stephen
Copy link
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Good First Issue] Support All SQL Functions in Other SQL System

2 participants