tree 61f41f0fce390da850b0c3222882e4d9d5b92e66
parent b1ba8e5c87e86ab00bf9b8e854cca002e7e0fe0f
author ran <gaoran_10@126.com> 1616577752 +0800
committer GitHub <noreply@github.com> 1616577752 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgWwTYCRBK7hj4Ov3rIwAAdHIIADk9tOD7hrNJWtFbqplp00zv
 Ad71zWW2/X8eeUFamdsUnLBqtkJAA1PSDLhkvJ6+YkNet4b9GdK/qT+SY3ZXPhaX
 6uLlqlRL12uYjZVWGVle0v8kvki1uSIvGkWDbqBK95Q4UtvzaHpNRtv8DfoV7c9Q
 9ujGA4NGy4payoqFUDMEyiPwbf1HTJxbygaSyGGrUsdYcyaIqdQvBc12PR+crCma
 hJlnz13TM1o6tqI6EIl+ktlgv5MHrQMm9XK+SL3C5jUZvMFGneW9WKGn6MwQ73mA
 DGTlGO0N2C9T3O1U5Qg8cafNNkrSkDFg6ptSMVnndIN6G3dHEmhuCVRjZG5IgSU=
 =yi0D
 -----END PGP SIGNATURE-----
 

[Pulsar SQL] Make the Pulsar SQL support query the uppercase topic (#9980)

### Motivation

When querying the uppercase topic (e.g. `public/default/case_UPPER_topic`) by the Pulsar SQL, it will throw the error "topic not found" because of the class `SchemaTableName`, in the Pulsar SQL, we couldn't get the exact table name (e.g. `Test`, `tEst`) but only lowercase table name (e.g. `test`), this is the presto behavior.

Refer to the presto class `SchemaTableName`.
```
@JsonCreator
public SchemaTableName(@JsonProperty("schema") String schemaName, @JsonProperty("table") String tableName) {
    this.schemaName = SchemaUtil.checkNotEmpty(schemaName, "schemaName").toLowerCase(Locale.ENGLISH);
    this.tableName = SchemaUtil.checkNotEmpty(tableName, "tableName").toLowerCase(Locale.ENGLISH);
}
```

If there are topics `public/default/case_UPPER_topic`, `public/default/case_upper_topic`, the query `show tables in pulsar."public/default"` will return one result `public/default/case_upper_topic`, this behavior is determined by the presto spi.

There is a precondition for querying the uppercase topic, the topic name must be unique. For example, if there are topics `public/default/case_UPPER_topic`, `public/default/case_upper_topic`, the query `select * from pulsar."public/default"."case_upper_topic" will throw error no matched topic, because of that we could get the exact topic by the lowercase table name `case_upper_topic`.

If there is a unique topic `public/default/case_UPPER_topic`, the query `select * from pulsar."public/default"."case_UPPER_topic` or `select * from pulsar."public/default"."case_upper_topic` will query that unique topic.

topics | allow query | table name
--|--|--
test, Test | false | -
test | true | test, Test