Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@
import static io.trino.operator.scalar.ArrayTransformFunction.ARRAY_TRANSFORM_FUNCTION;
import static io.trino.operator.scalar.CastFromUnknownOperator.CAST_FROM_UNKNOWN;
import static io.trino.operator.scalar.ConcatFunction.VARBINARY_CONCAT;
import static io.trino.operator.scalar.ConcatFunction.VARCHAR_CONCAT;
import static io.trino.operator.scalar.ConcatFunction.VARCHAR_CONCAT_FUNCTIONS;
import static io.trino.operator.scalar.ConcatWsFunction.CONCAT_WS;
import static io.trino.operator.scalar.ElementToArrayConcatFunction.ELEMENT_TO_ARRAY_CONCAT_FUNCTION;
import static io.trino.operator.scalar.FormatFunction.FORMAT_FUNCTION;
Expand Down Expand Up @@ -601,7 +601,8 @@ public FunctionRegistry(
.functions(MAX_AGGREGATION, MIN_AGGREGATION, new MaxNAggregationFunction(blockTypeOperators), new MinNAggregationFunction(blockTypeOperators))
.function(COUNT_COLUMN)
.functions(JSON_TO_ROW, JSON_STRING_TO_ROW, ROW_TO_ROW_CAST)
.functions(VARCHAR_CONCAT, VARBINARY_CONCAT)
.functions(VARCHAR_CONCAT_FUNCTIONS)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trino> SELECT concat('13', 10);
Query 20211129_154932_00001_zpx8d failed: line 1:8: Unexpected parameters (varchar(2), integer) for function concat. Expected: concat(char(x), char(y)) , concat(array(E), E) E, concat(E, array(E)) E, concat(array(E)) E, concat(varchar(S1)) , concat(varchar(S1), varchar(S2)) , concat(varchar(S1), varchar(S2), varchar(S3)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90), varchar(S91)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90), varchar(S91), varchar(S92)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90), varchar(S91), varchar(S92), varchar(S93)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90), varchar(S91), varchar(S92), varchar(S93), varchar(S94)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90), varchar(S91), varchar(S92), varchar(S93), varchar(S94), varchar(S95)) , concat(varchar(S1), varchar(S2), varchar(S3), varchar(S4), varchar(S5), varchar(S6), varchar(S7), varchar(S8), varchar(S9), varchar(S10), varchar(S11), varchar(S12), varchar(S13), varchar(S14), varchar(S15), varchar(S16), varchar(S17), varchar(S18), varchar(S19), varchar(S20), varchar(S21), varchar(S22), varchar(S23), varchar(S24), varchar(S25), varchar(S26), varchar(S27), varchar(S28), varchar(S29), varchar(S30), varchar(S31), varchar(S32), varchar(S33), varchar(S34), varchar(S35), varchar(S36), varchar(S37), varchar(S38), varchar(S39), varchar(S40), varchar(S41), varchar(S42), varchar(S43), varchar(S44), varchar(S45), varchar(S46), varchar(S47), varchar(S48), varchar(S49), varchar(S50), varchar(S51), varchar(S52), varchar(S53), varchar(S54), varchar(S55), varchar(S56), varchar(S57), varchar(S58), varchar(S59), varchar(S60), varchar(S61), varchar(S62), varchar(S63), varchar(S64), varchar(S65), varchar(S66), varchar(S67), varchar(S68), varchar(S69), varchar(S70), varchar(S71), varchar(S72), varchar(S73), varchar(S74), varchar(S75), varchar(S76), varchar(S77), varchar(S78), varchar(S79), varchar(S80), varchar(S81), varchar(S82), varchar(S83), varchar(S84), varchar(S85), varchar(S86), varchar(S87), varchar(S88), varchar(S89), varchar(S90), varchar(S91), varchar(S92), varchar(S93), varchar(S94), varchar(S95), varchar(S96)) ...........

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

full exception message is rather long

$ bin/trino-cli --execute 'SELECT concat('13', 10)' 2>&1 | wc
     47   98078 1400863

-- it's going to be problematic for end users.
why would we be doing that?

Copy link
Copy Markdown
Member Author

@ebyhr ebyhr Nov 29, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@findepi The main reason is following ANSI SQL specification about string concatenation oepration. The return type of 'a' || 'b' should contain length instead of varchar. Also, this change fixes query failure when it has char type:

trino> SELECT 'a' || 'b' || CAST('c' as CHAR(1));
Query ... failed: line 1:19: CHAR length must be in range [0, 65536], got 65537

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ebyhr

'a' is of type varchar(1)

varchar(1) || varchar(1) -> varchar -- this is OK and yes, we could do better, i.e. know the type is varchar(2). We should be able to do this in some more reasonable manner than loading a ton of overloads of a function into the system. If we need better type resolution for function results, this is what we should do.

varchar || char(1) -> char(65537) -- this fails (char limit overflow). Your PR doesn't fix that, does it?
This should produce varchar instead.

Copy link
Copy Markdown
Member Author

@ebyhr ebyhr Nov 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your PR doesn't fix that, does it?

@findepi Right, this PR doesn't fix it. Actually, I was trying to fix the both situation, but I sent this PR for the left operator first. Let me look into the right operator.

.function(VARBINARY_CONCAT)
.function(CONCAT_WS)
.function(DECIMAL_TO_DECIMAL_CAST)
.function(castVarcharToRe2JRegexp(featuresConfig.getRe2JDfaStatesLimit(), featuresConfig.getRe2JDfaRetries()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,81 @@
import io.trino.spi.type.TypeSignature;

import java.lang.invoke.MethodHandle;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import static com.google.common.collect.ImmutableList.toImmutableList;
import static io.trino.metadata.FunctionKind.SCALAR;
import static io.trino.metadata.Signature.longVariableExpression;
import static io.trino.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED;
import static io.trino.spi.block.PageBuilderStatus.DEFAULT_MAX_PAGE_SIZE_IN_BYTES;
import static io.trino.spi.function.InvocationConvention.InvocationArgumentConvention.NEVER_NULL;
import static io.trino.spi.function.InvocationConvention.InvocationReturnConvention.FAIL_ON_NULL;
import static io.trino.spi.type.TypeSignatureParameter.typeVariable;
import static io.trino.spi.type.VarbinaryType.VARBINARY;
import static io.trino.spi.type.VarcharType.VARCHAR;
import static io.trino.util.Reflection.methodHandle;
import static java.lang.Math.addExact;
import static java.lang.String.format;
import static java.util.Collections.nCopies;

public final class ConcatFunction
extends SqlScalarFunction
{
// TODO design new variadic functions binding mechanism that will allow to produce VARCHAR(x) where x < MAX_LENGTH.
public static final ConcatFunction VARCHAR_CONCAT = new ConcatFunction(VARCHAR.getTypeSignature(), "Concatenates given strings");
public static final ConcatFunction[] VARCHAR_CONCAT_FUNCTIONS;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

array is mutable, so should not be used as a value of a public field


public static final ConcatFunction VARBINARY_CONCAT = new ConcatFunction(VARBINARY.getTypeSignature(), "concatenates given varbinary values");
public static final ConcatFunction VARBINARY_CONCAT = new ConcatFunction();

private static final int MIN_INPUT_VALUES = 1;
private static final int MAX_INPUT_VALUES = 254;
private static final int MAX_OUTPUT_LENGTH = DEFAULT_MAX_PAGE_SIZE_IN_BYTES;

private ConcatFunction(TypeSignature type, String description)
static {
VARCHAR_CONCAT_FUNCTIONS = new ConcatFunction[MAX_INPUT_VALUES - MIN_INPUT_VALUES + 1];

for (int arity = MIN_INPUT_VALUES; arity <= MAX_INPUT_VALUES; arity++) {
VARCHAR_CONCAT_FUNCTIONS[arity - MIN_INPUT_VALUES] = new ConcatFunction(arity);
}
}

// Concat function for VARCHAR type
private ConcatFunction(int arity)
{
super(new FunctionMetadata(
new Signature(
"concat",
ImmutableList.of(),
ImmutableList.of(longVariableExpression("L", toExpression(arity))),
new TypeSignature(VARCHAR.getTypeSignature().getBase(), typeVariable("L")),
toArgumentTypes(VARCHAR.getTypeSignature().getBase(), arity),
false),
false,
nCopies(arity, new FunctionArgumentDefinition(false)),
false,
true,
"Concatenates given strings",
SCALAR));
}

// Concat function for VARBINARY type
private ConcatFunction()
{
super(new FunctionMetadata(
new Signature(
"concat",
ImmutableList.of(),
type,
ImmutableList.of(type),
ImmutableList.of(),
VARBINARY.getTypeSignature(),
ImmutableList.of(VARBINARY.getTypeSignature()),
true),
false,
ImmutableList.of(new FunctionArgumentDefinition(false)),
false,
true,
description,
"concatenates given varbinary values",
SCALAR));
}

Expand Down Expand Up @@ -111,4 +147,16 @@ public static Slice concat(Slice[] values)

return result;
}

private static String toExpression(int arity)
{
return format("min(2147483647, %s)", IntStream.rangeClosed(1, arity).mapToObj(number -> "S" + number).collect(Collectors.joining("+")));
}

private static List<TypeSignature> toArgumentTypes(String base, int arity)
{
return IntStream.rangeClosed(1, arity)
.mapToObj(number -> new TypeSignature(base, typeVariable("S" + number)))
.collect(toImmutableList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,21 +107,29 @@ public void testCodepoint()
public void testConcat()
{
assertInvalidFunction("CONCAT('')", "There must be two or more concatenation arguments");
assertFunction("CONCAT('hello', ' world')", VARCHAR, "hello world");
assertFunction("CONCAT('', '')", VARCHAR, "");
assertFunction("CONCAT('what', '')", VARCHAR, "what");
assertFunction("CONCAT('', 'what')", VARCHAR, "what");
assertFunction("CONCAT(CONCAT('this', ' is'), ' cool')", VARCHAR, "this is cool");
assertFunction("CONCAT('this', CONCAT(' is', ' cool'))", VARCHAR, "this is cool");
assertFunction("CONCAT('hello', ' world')", createVarcharType(11), "hello world");
assertFunction("CONCAT('', '')", createVarcharType(0), "");
assertFunction("CONCAT('what', '')", createVarcharType(4), "what");
assertFunction("CONCAT('', 'what')", createVarcharType(4), "what");
assertFunction("CONCAT(CONCAT('this', ' is'), ' cool')", createVarcharType(12), "this is cool");
assertFunction("CONCAT('this', CONCAT(' is', ' cool'))", createVarcharType(12), "this is cool");
assertFunction("CONCAT(CAST('max' AS VARCHAR(2147483647)), ' length')", VARCHAR, "max length");
assertFunction("CONCAT('max', CAST(' length' AS VARCHAR(2147483647)))", VARCHAR, "max length");

assertFunction("'hello' || ' world'", createVarcharType(11), "hello world");
assertFunction("'hello' || ' ' || 'world'", createVarcharType(11), "hello world");
assertFunction("CHAR 'hello' || ' ' || 'world'", createCharType(11), "hello world");
assertFunction("'hello' || CHAR ' ' || 'world'", createCharType(11), "hello world");
assertFunction("'hello' || ' ' || CHAR 'world'", createCharType(11), "hello world");

// Test concat for non-ASCII
assertFunction("CONCAT('hello na\u00EFve', ' world')", VARCHAR, "hello na\u00EFve world");
assertFunction("CONCAT('\uD801\uDC2D', 'end')", VARCHAR, "\uD801\uDC2Dend");
assertFunction("CONCAT('\uD801\uDC2D', 'end', '\uD801\uDC2D')", VARCHAR, "\uD801\uDC2Dend\uD801\uDC2D");
assertFunction("CONCAT(CONCAT('\u4FE1\u5FF5', ',\u7231'), ',\u5E0C\u671B')", VARCHAR, "\u4FE1\u5FF5,\u7231,\u5E0C\u671B");
assertFunction("CONCAT('hello na\u00EFve', ' world')", createVarcharType(17), "hello na\u00EFve world");
assertFunction("CONCAT('\uD801\uDC2D', 'end')", createVarcharType(4), "\uD801\uDC2Dend");
assertFunction("CONCAT('\uD801\uDC2D', 'end', '\uD801\uDC2D')", createVarcharType(5), "\uD801\uDC2Dend\uD801\uDC2D");
assertFunction("CONCAT(CONCAT('\u4FE1\u5FF5', ',\u7231'), ',\u5E0C\u671B')", createVarcharType(7), "\u4FE1\u5FF5,\u7231,\u5E0C\u671B");

// Test argument count limit
assertFunction("CONCAT(" + Joiner.on(", ").join(nCopies(127, "'x'")) + ")", VARCHAR, Joiner.on("").join(nCopies(127, "x")));
assertFunction("CONCAT(" + Joiner.on(", ").join(nCopies(127, "'x'")) + ")", createVarcharType(127), Joiner.on("").join(nCopies(127, "x")));
assertInvalidFunction(
"CONCAT(" + Joiner.on(", ").join(nCopies(128, "'x'")) + ")",
TOO_MANY_ARGUMENTS,
Expand Down