File tree Expand file tree Collapse file tree
tests/queries/0_stateless Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ class FunctionTrim : public IFunction
2626 String getName () const override { return name; }
2727 bool isVariadic () const override { return true ; }
2828 bool isSuitableForShortCircuitArgumentsExecution (const DataTypesWithConstInfo & /* arguments*/ ) const override { return true ; }
29+ bool useDefaultImplementationForConstants () const override { return true ; }
2930 size_t getNumberOfArguments () const override { return 0 ; }
3031
3132 DataTypePtr getReturnTypeImpl (const ColumnsWithTypeAndName & arguments) const override
@@ -48,9 +49,16 @@ class FunctionTrim : public IFunction
4849 std::optional<SearchSymbols> custom_trim_characters;
4950 if (arguments.size () == 2 && input_rows_count > 0 )
5051 {
51- const ColumnConst * col_trim_characters_const = checkAndGetColumnConst<ColumnString>(arguments[1 ].column .get ());
52- const String & trim_characters_string = col_trim_characters_const->getDataAt (0 ).toString ();
53- custom_trim_characters = std::make_optional<SearchSymbols>(trim_characters_string);
52+ if (const ColumnString * col_trim_characters = checkAndGetColumn<ColumnString>(arguments[1 ].column .get ()))
53+ {
54+ const String & trim_characters_string = col_trim_characters->getDataAt (0 ).toString ();
55+ custom_trim_characters = std::make_optional<SearchSymbols>(trim_characters_string);
56+ }
57+ else if (const ColumnConst * col_trim_characters_const = checkAndGetColumnConst<ColumnString>(arguments[1 ].column .get ()))
58+ {
59+ const String & trim_characters_string = col_trim_characters_const->getDataAt (0 ).toString ();
60+ custom_trim_characters = std::make_optional<SearchSymbols>(trim_characters_string);
61+ }
5462 }
5563
5664 ColumnPtr col_input_full;
Original file line number Diff line number Diff line change @@ -22,3 +22,4 @@ Negative tests
2222Special tests
2323abc
2424b
25+ 1
Original file line number Diff line number Diff line change @@ -106,3 +106,6 @@ INSERT INTO tab VALUES ('abc');
106106SELECT trim (trailing char (0 ) from col) FROM tab;
107107SELECT trim (both ' ac' from col) FROM tab;
108108DROP TABLE tab;
109+
110+ -- Bug 78796
111+ SELECT isConstant(trimBoth(' ' ));
You can’t perform that action at this time.
0 commit comments