@@ -2943,8 +2943,8 @@ public void testNamedFunctionArgumentWithUnsupportedNamedParameterTypes() {
2943
2943
}
2944
2944
2945
2945
public void testValidJoinPattern () {
2946
- var basePattern = randomIndexPatterns ();
2947
- var joinPattern = randomIndexPattern ();
2946
+ var basePattern = randomIndexPatterns (true , true );
2947
+ var joinPattern = randomIndexPattern (true , false );
2948
2948
var onField = randomIdentifier ();
2949
2949
var type = randomFrom ("" , "LOOKUP " );
2950
2950
@@ -2960,13 +2960,20 @@ public void testValidJoinPattern() {
2960
2960
assertThat (joinType .coreJoin ().joinName (), equalTo ("LEFT OUTER" ));
2961
2961
}
2962
2962
2963
- private static String randomIndexPatterns () {
2964
- return maybeQuote (String .join ("," , randomList (1 , 5 , StatementParserTests ::randomIndexPattern )));
2963
+ public void testInvalidJoinPatterns () {
2964
+ expectError (
2965
+ "FROM " + randomIndexPatterns (true , true ) + " | JOIN my-index-pattern* ON " + randomIdentifier (),
2966
+ "invalid index pattern [my-index-pattern*], * is not allowed in LOOKUP JOIN"
2967
+ );
2968
+ }
2969
+
2970
+ private static String randomIndexPatterns (boolean includeRemotes , boolean includePatterns ) {
2971
+ return maybeQuote (String .join ("," , randomList (1 , 5 , () -> randomIndexPattern (includeRemotes , includePatterns ))));
2965
2972
}
2966
2973
2967
- private static String randomIndexPattern () {
2968
- String pattern = maybeQuote (randomIndexIdentifier ());
2969
- if (randomBoolean ()) {
2974
+ private static String randomIndexPattern (boolean includeRemotes , boolean includePatterns ) {
2975
+ String pattern = maybeQuote (randomIndexIdentifier (includePatterns ));
2976
+ if (includeRemotes && randomBoolean ()) {
2970
2977
var cluster = randomIdentifier ();
2971
2978
pattern = maybeQuote (cluster + ":" + pattern );
2972
2979
}
@@ -2976,7 +2983,7 @@ private static String randomIndexPattern() {
2976
2983
/**
2977
2984
* This generates random valid index, alias or pattern
2978
2985
*/
2979
- private static String randomIndexIdentifier () {
2986
+ private static String randomIndexIdentifier (boolean includePatterns ) {
2980
2987
// https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params
2981
2988
var validFirstCharacters = "abcdefghijklmnopqrstuvwxyz0123456789!'$^&" ;
2982
2989
var validCharacters = validFirstCharacters + "+-_." ;
@@ -2989,7 +2996,7 @@ private static String randomIndexIdentifier() {
2989
2996
for (int i = 0 ; i < randomIntBetween (1 , 100 ); i ++) {
2990
2997
index .append (randomCharacterFrom (validCharacters ));
2991
2998
}
2992
- if (randomBoolean ()) {// pattern
2999
+ if (includePatterns && randomBoolean ()) {// pattern
2993
3000
index .append ('*' );
2994
3001
}
2995
3002
return index .toString ();
0 commit comments