-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Let concat varchar function returns with length #10098
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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; | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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)); | ||
| } | ||
|
|
||
|
|
@@ -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()); | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
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)) ...........
There was a problem hiding this comment.
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
-- it's going to be problematic for end users.
why would we be doing that?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
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 ofvarchar. Also, this change fixes query failure when it has char type:There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ebyhr
'a'is of typevarchar(1)varchar(1) || varchar(1) -> varchar-- this is OK and yes, we could do better, i.e. know the type isvarchar(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
varcharinstead.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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.