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&&', 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>