tekumara / fakesnow

Fake Snowflake Connector for Python. Run, mock and test Snowflake DB locally.
Apache License 2.0
83 stars 7 forks source link

feat: support trim with numeric and variant types #69

Closed seruman closed 2 months ago

seruman commented 3 months ago

Snowflake's TRIM accepts any type and returns VARCHAR, docs does not mentioned it but it seems to only works on VARCHAR/TEXT typed inputs and acts as a cast to VARCHAR for others. DuckDB's TRIM only accepts VARCHAR. It seemed safe to me to cast input to VARCHAR to mimic similar behaviour.

select 
    trim(5) as c_number, SYSTEM$TYPEOF(c_number),
    trim(' str ') as c_varchar, SYSTEM$TYPEOF(c_varchar),
    trim(to_variant({'k': 'v'})) as c_variant, SYSTEM$TYPEOF(c_variant)
;
C_NUMBER SYSTEM$TYPEOF(C_NUMBER) C_VARCHAR SYSTEM$TYPEOF(C_VARCHAR) C_VARIANT SYSTEM$TYPEOF(C_VARIANT)
5 VARCHAR(16777216)[LOB] str VARCHAR(5)[LOB] {"k":"v"} VARCHAR(16777216)[LOB]