Skip to content

Commit d5e9c9d

Browse files
committed
fixed IDENTIFIED BY KEY grammer. added more tests
1 parent a532b23 commit d5e9c9d

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ userIdentifiedWithClause
168168
| LDAP SERVER literal
169169
| KERBEROS (REALM literal)?
170170
| SSL_CERTIFICATE CN literal
171-
| SSH_KEY BY KEY literal TYPE literal
171+
| SSH_KEY BY KEY literal TYPE literal (COMMA KEY literal TYPE literal)*
172172
| HTTP SERVER literal (SCHEMA literal)?
173173
;
174174

jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import org.testng.Assert;
5+
import org.testng.annotations.DataProvider;
56
import org.testng.annotations.Test;
67

78
import static org.testng.Assert.assertEquals;
@@ -210,4 +211,34 @@ public void testStmtWithFunction() {
210211
ParsedPreparedStatement stmt = parser.parsePreparedStatement(sql);
211212
Assert.assertEquals(stmt.getArgCount(), 4);
212213
}
214+
215+
@Test(dataProvider = "testCreateStmtDP")
216+
public void testCreateStatement(String sql) {
217+
SqlParser parser = new SqlParser();
218+
ParsedPreparedStatement stmt = parser.parsePreparedStatement(sql);
219+
Assert.assertFalse(stmt.isHasErrors());
220+
}
221+
222+
@DataProvider
223+
public static Object[][] testCreateStmtDP() {
224+
return new Object[][] {
225+
{"CREATE USER 'user01' IDENTIFIED WITH no_password"},
226+
{"CREATE USER 'user01' IDENTIFIED WITH plaintext_password BY 'qwerty'"},
227+
{"CREATE USER 'user01' IDENTIFIED WITH sha256_password BY 'qwerty' or IDENTIFIED BY 'password'"},
228+
{"CREATE USER 'user01' IDENTIFIED WITH sha256_hash BY 'hash' SALT 'salt'"},
229+
{"CREATE USER 'user01' IDENTIFIED WITH sha256_hash BY 'hash'"},
230+
{"CREATE USER 'user01' IDENTIFIED WITH double_sha1_password BY 'qwerty'"},
231+
{"CREATE USER 'user01' IDENTIFIED WITH double_sha1_hash BY 'hash'"},
232+
{"CREATE USER 'user01' IDENTIFIED WITH bcrypt_password BY 'qwerty'"},
233+
{"CREATE USER 'user01' IDENTIFIED WITH bcrypt_hash BY 'hash'"},
234+
{"CREATE USER 'user01' IDENTIFIED WITH ldap SERVER 'server_name'"},
235+
{"CREATE USER 'user01' IDENTIFIED WITH kerberos"},
236+
{"CREATE USER 'user01' IDENTIFIED WITH kerberos REALM 'realm'"},
237+
{"CREATE USER 'user01' IDENTIFIED WITH ssl_certificate CN 'mysite.com:user'"},
238+
{"CREATE USER 'user01' IDENTIFIED WITH ssh_key BY KEY 'public_key' TYPE 'ssh-rsa', KEY 'another_public_key' TYPE 'ssh-ed25519'"},
239+
{"CREATE USER 'user01' IDENTIFIED WITH http SERVER 'http_server' SCHEME 'basic'"},
240+
{"CREATE USER 'user01' IDENTIFIED WITH http SERVER 'http_server'"},
241+
{"CREATE USER 'user01' IDENTIFIED BY 'qwerty'"},
242+
};
243+
}
213244
}

0 commit comments

Comments
 (0)