This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 9c3d280  Add SQLServer Create Login Statement (#16505)
9c3d280 is described below

commit 9c3d280effb9e57b7d9ab930e5f9c5e08675727a
Author: Thanoshan MV <[email protected]>
AuthorDate: Thu Mar 31 05:42:39 2022 +0530

    Add SQLServer Create Login Statement (#16505)
---
 .../main/antlr4/imports/sqlserver/DCLStatement.g4  | 70 +++++++++++++++++++++-
 .../antlr4/imports/sqlserver/SQLServerKeyword.g4   | 24 ++++++++
 .../impl/SQLServerDCLStatementSQLVisitor.java      |  9 ++-
 .../sql/common/segment/dcl/LoginSegment.java       | 19 ++++--
 .../dcl/SQLServerCreateLoginStatement.java         |  7 +++
 .../dcl/impl/CreateLoginStatementAssert.java       | 13 ++++
 .../impl/login/ExpectedLogin.java}                 | 12 ++--
 .../dcl/CreateLoginStatementTestCase.java          |  8 +++
 .../src/main/resources/case/dcl/create-login.xml   | 55 ++++++++++++++---
 .../resources/sql/supported/dcl/create-login.xml   |  6 +-
 10 files changed, 202 insertions(+), 21 deletions(-)

diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
index b1bc49d..2986e14 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
@@ -295,7 +295,7 @@ createUserWithoutLoginClause
 optionsList
     : DEFAULT_SCHEMA EQ_ schemaName
     | DEFAULT_LANGUAGE EQ_ (NONE | identifier)
-    | SID EQ_ (NCHAR_TEXT | HEX_DIGIT_)
+    | SID EQ_ sid
     | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS EQ_ (ON | OFF)?
     ;
 
@@ -363,7 +363,73 @@ alterRole
     ;
 
 createLogin
-    : CREATE LOGIN
+    : CREATE LOGIN ignoredNameIdentifier (createLoginForSQLServerClause | 
createLoginForAzureSQLDatabaseClause | createLoginForAzureManagedInstanceClause
+    | createLoginForAzureSynapseAnalyticsClause | 
createLoginForAnalyticsPlatformSystemClause)
+    ;
+
+createLoginForSQLServerClause
+    : WITH createLoginForSQLServerOptionList | FROM sources
+    ;
+
+createLoginForSQLServerOptionList
+    : PASSWORD EQ_ (stringLiterals | hashedPassword HASHED) (MUST_CHANGE)? 
(COMMA_ createLoginForSQLServerOptionListClause (COMMA_ 
createLoginForSQLServerOptionListClause)*)?
+    ;
+
+createLoginForSQLServerOptionListClause
+    : SID EQ_ sid | DEFAULT_DATABASE EQ_ databaseName | DEFAULT_LANGUAGE EQ_ 
identifier
+    | CHECK_EXPIRATION EQ_ (ON | OFF) | CHECK_POLICY EQ_ (ON | OFF) | 
CREDENTIAL EQ_ identifier
+    ;
+
+hashedPassword
+    : HEX_DIGIT_
+    ;
+
+sid
+    : NCHAR_TEXT | HEX_DIGIT_
+    ;
+
+sources
+    : WINDOWS (WITH windowsOptions (COMMA_ windowsOptions)*)? | CERTIFICATE 
identifier | ASYMMETRIC KEY identifier
+    ;
+
+windowsOptions
+    : DEFAULT_DATABASE EQ_ databaseName | DEFAULT_LANGUAGE EQ_ identifier
+    ;
+
+createLoginForAzureSQLDatabaseClause
+    : FROM EXTERNAL PROVIDER | WITH createLoginForAzureSQLDatabaseOptionList 
(COMMA_ createLoginForAzureSQLDatabaseOptionList)*
+    ;
+
+createLoginForAzureSQLDatabaseOptionList
+    : PASSWORD EQ_ stringLiterals (COMMA_ SID EQ_ sid)?
+    ;
+
+createLoginForAzureManagedInstanceClause
+    : (FROM EXTERNAL PROVIDER)? WITH azureManagedInstanceOptionList (COMMA_ 
azureManagedInstanceOptionList)*
+    ;
+
+azureManagedInstanceOptionList
+    : PASSWORD EQ_ stringLiterals | SID EQ_ sid | DEFAULT_DATABASE EQ_ 
databaseName | DEFAULT_LANGUAGE EQ_ identifier
+    ;
+
+createLoginForAzureSynapseAnalyticsClause
+    : WITH createLoginForAzureSynapseAnalyticsOptionList
+    ;
+
+createLoginForAzureSynapseAnalyticsOptionList
+    : PASSWORD EQ_ stringLiterals (COMMA_ SID EQ_ sid)?
+    ;
+
+createLoginForAnalyticsPlatformSystemClause
+    : WITH createLoginForAnalyticsPlatformSystemOptionList | FROM WINDOWS
+    ;
+
+createLoginForAnalyticsPlatformSystemOptionList
+    : PASSWORD EQ_ stringLiterals (MUST_CHANGE)? (COMMA_ 
createLoginForAnalyticsPlatformSystemOptionListClause (COMMA_ 
createLoginForAnalyticsPlatformSystemOptionListClause)*)?
+    ;
+
+createLoginForAnalyticsPlatformSystemOptionListClause
+    : CHECK_EXPIRATION EQ_ (ON | OFF) | CHECK_POLICY EQ_ (ON | OFF)
     ;
 
 dropLogin
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
index ffac578..de0da15 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
@@ -1814,3 +1814,27 @@ SEND
 MEMBER
     : M E M B E R
     ;
+
+HASHED
+    : H A S H E D
+    ;
+
+MUST_CHANGE
+    : M U S T UL_ C H A N G E
+    ;
+
+DEFAULT_DATABASE
+    : D E F A U L T UL_ D A T A B A S E
+    ;
+
+CHECK_EXPIRATION
+    : C H E C K UL_ E X P I R A T I O N
+    ;
+
+CHECK_POLICY
+    : C H E C K UL_ P O L I C Y
+    ;
+
+WINDOWS
+    : W I N D O W S
+    ;
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
index 4b83c82..2d47e3e 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
@@ -47,6 +47,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Rev
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.SecurableContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.SetUserContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.UserNameContext;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dcl.LoginSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
@@ -309,7 +310,13 @@ public final class SQLServerDCLStatementSQLVisitor extends 
SQLServerStatementSQL
     
     @Override
     public ASTNode visitCreateLogin(final CreateLoginContext ctx) {
-        return new SQLServerCreateLoginStatement();
+        SQLServerCreateLoginStatement result = new 
SQLServerCreateLoginStatement();
+        if (null != ctx.ignoredNameIdentifier()) {
+            LoginSegment loginSegment = new 
LoginSegment(ctx.ignoredNameIdentifier().getStart().getStartIndex(), 
ctx.ignoredNameIdentifier().getStop().getStopIndex(),
+                    (IdentifierValue) visit(ctx.ignoredNameIdentifier()));
+            result.setLoginSegment(loginSegment);
+        }
+        return result;
     }
     
     @Override
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dcl/LoginSegment.java
similarity index 60%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
copy to 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dcl/LoginSegment.java
index c1b42b5..4a67cb5 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dcl/LoginSegment.java
@@ -15,12 +15,23 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl;
+package org.apache.shardingsphere.sql.parser.sql.common.segment.dcl;
 
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 
 /**
- * Create login statement test case.
+ * Login segment.
  */
-public final class CreateLoginStatementTestCase extends SQLParserTestCase {
+@RequiredArgsConstructor
+@Getter
+public final class LoginSegment implements SQLSegment {
+    
+    private final int startIndex;
+    
+    private final int stopIndex;
+    
+    private final IdentifierValue loginName;
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerCreateLoginStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerCreateLoginStatement.java
index a432f36..5b72a15 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerCreateLoginStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerCreateLoginStatement.java
@@ -17,7 +17,10 @@
 
 package 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl;
 
+import lombok.Getter;
+import lombok.Setter;
 import lombok.ToString;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dcl.LoginSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.DCLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
@@ -26,5 +29,9 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLS
  * SQLServer create login statement.
  */
 @ToString
+@Getter
+@Setter
 public final class SQLServerCreateLoginStatement extends AbstractSQLStatement 
implements DCLStatement, SQLServerStatement {
+    
+    private LoginSegment loginSegment;
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/CreateLoginStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/CreateLoginStatementAssert.java
index 8fdf79a..b464d4b 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/CreateLoginStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/CreateLoginStatementAssert.java
@@ -21,8 +21,14 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl.SQLServerCreateLoginStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.SQLSegmentAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl.CreateLoginStatementTestCase;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+
 /**
  * Create login statement assert.
  */
@@ -37,5 +43,12 @@ public final class CreateLoginStatementAssert {
      * @param expected expected create login statement test case
      */
     public static void assertIs(final SQLCaseAssertContext assertContext, 
final SQLServerCreateLoginStatement actual, final CreateLoginStatementTestCase 
expected) {
+        if (null != expected.getLogin()) {
+            assertNotNull(assertContext.getText("Actual login should exist."), 
actual.getLoginSegment());
+            assertThat(assertContext.getText("Login name assertion error: "), 
actual.getLoginSegment().getLoginName().getValueWithQuoteCharacters(), 
is(expected.getLogin().getName()));
+            SQLSegmentAssert.assertIs(assertContext, actual.getLoginSegment(), 
expected.getLogin());
+        } else {
+            assertNull(assertContext.getText("Actual login should not 
exist."), actual.getLoginSegment());
+        }
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/login/ExpectedLogin.java
similarity index 78%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/login/ExpectedLogin.java
index c1b42b5..e3fb087 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/login/ExpectedLogin.java
@@ -15,12 +15,16 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.login;
 
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedIdentifierSQLSegment;
 
 /**
- * Create login statement test case.
+ * Expected login.
  */
-public final class CreateLoginStatementTestCase extends SQLParserTestCase {
+@Getter
+@Setter
+public final class ExpectedLogin extends AbstractExpectedIdentifierSQLSegment {
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
index c1b42b5..33735dd 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/CreateLoginStatementTestCase.java
@@ -17,10 +17,18 @@
 
 package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl;
 
+import lombok.Getter;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.login.ExpectedLogin;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
+import javax.xml.bind.annotation.XmlElement;
+
 /**
  * Create login statement test case.
  */
+@Getter
 public final class CreateLoginStatementTestCase extends SQLParserTestCase {
+    
+    @XmlElement(name = "login")
+    private ExpectedLogin login;
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/create-login.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/create-login.xml
index e70cb7d..01ed338 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/create-login.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/create-login.xml
@@ -17,12 +17,51 @@
   -->
 
 <sql-parser-test-cases>
-    <create-login sql-case-id="create_login" />
-    <create-login sql-case-id="create_login_with_password"/>
-    <create-login sql-case-id="create_login_with_hashed_password"/>
-    <create-login sql-case-id="create_login_with_default_database"/>
-    <create-login sql-case-id="create_login_with_expired_password"/>
-    <create-login sql-case-id="create_login_to_credential"/>
-    <create-login sql-case-id="create_login_with_certificate"/>
-    <create-login sql-case-id="create_login_with_asym_key"/>
+    <create-login sql-case-id="create_login">
+        <login name="login_dev_new" start-index="13" stop-index="25"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_password">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_hashed_password">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_default_database">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_expired_password">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_to_credential">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+
+    <create-login sql-case-id="create_login_with_windows">
+        <login name="[domain\login1]" start-index="13" stop-index="27"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_certificate">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_asym_key">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+
+    <create-login sql-case-id="create_login_with_sid">
+        <login name="login1" start-index="13" stop-index="18"/>
+    </create-login>
+    
+    <create-login sql-case-id="create_login_with_multiple_arguments">
+        <login name="[login1]" start-index="13" stop-index="20"/>
+    </create-login>
+
+    <create-login sql-case-id="create_login_from_external_provider">
+        <login name="[[email protected]]" start-index="13" stop-index="29"/>
+    </create-login>
 </sql-parser-test-cases>
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/create-login.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/create-login.xml
index 0a89979..217e168 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/create-login.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/create-login.xml
@@ -23,8 +23,10 @@
     <sql-case id="create_login_with_default_database" value="CREATE LOGIN 
login1 WITH PASSWORD = 'password', DEFAULT_DATABASE = database" 
db-types="SQLServer" />
     <sql-case id="create_login_with_expired_password" value="CREATE LOGIN 
login1 WITH PASSWORD = 'password' MUST_CHANGE, CHECK_EXPIRATION = ON" 
db-types="SQLServer" />
     <sql-case id="create_login_to_credential" value="CREATE LOGIN login1 WITH 
PASSWORD = 'password', CREDENTIAL = credential" db-types="SQLServer" />
-<!--    TODO suport create_login_with_windows on SQLServer-->
-    <!--<sql-case id="create_login_with_windows" value="CREATE LOGIN 
[domain\login1] FROM WINDOWS" db-types="SQLServer" />-->
+    <sql-case id="create_login_with_windows" value="CREATE LOGIN 
[domain\login1] FROM WINDOWS" db-types="SQLServer" />
     <sql-case id="create_login_with_certificate" value="CREATE LOGIN login1 
FROM CERTIFICATE certificate" db-types="SQLServer" />
     <sql-case id="create_login_with_asym_key" value="CREATE LOGIN login1 FROM 
ASYMMETRIC KEY asym_key" db-types="SQLServer" />
+    <sql-case id="create_login_with_sid" value="CREATE LOGIN login1 WITH 
PASSWORD = 'SuperSecret52&amp;&amp;', SID = 0x241C11948AEEB749B0D22646DB1A19F2" 
db-types="SQLServer" />
+    <sql-case id="create_login_with_multiple_arguments" value="CREATE LOGIN 
[login1] WITH PASSWORD = 'password', DEFAULT_DATABASE = database, CHECK_POLICY 
= OFF, CHECK_EXPIRATION = OFF" db-types="SQLServer" />
+    <sql-case id="create_login_from_external_provider" value="CREATE LOGIN 
[[email protected]] FROM EXTERNAL PROVIDER" db-types="SQLServer" />
 </sql-cases>

Reply via email to