Showing preview only (1,775K chars total). Download the full file or copy to clipboard to get everything.
Repository: r2dbc/r2dbc-mssql
Branch: main
Commit: dfb2476a8ec3
Files: 329
Total size: 1.6 MB
Directory structure:
gitextract_rm82x0ys/
├── .github/
│ └── workflows/
│ ├── ci.yml
│ ├── pullrequests.yml
│ └── release.yml
├── .gitignore
├── .mvn/
│ └── wrapper/
│ ├── MavenWrapperDownloader.java
│ └── maven-wrapper.properties
├── .travis.yml
├── CHANGELOG
├── LICENSE
├── NOTICE
├── README.md
├── ci/
│ └── build-and-deploy-to-maven-central.sh
├── intellij-style.xml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── settings.xml
└── src/
├── jmh/
│ └── java/
│ └── io/
│ └── r2dbc/
│ └── mssql/
│ ├── BenchmarkSettings.java
│ ├── ParametrizedMssqlStatementBenchmarks.java
│ ├── PooledBenchmarks.java
│ ├── StagedResultSizeBenchmarks.java
│ ├── StatementBenchmarks.java
│ └── codec/
│ ├── BinaryCodecBenchmarks.java
│ ├── BooleanCodecBenchmarks.java
│ ├── ByteCodecBenchmarks.java
│ ├── CodecBenchmarkSupport.java
│ ├── DecimalCodecBenchmarks.java
│ ├── DoubleCodecBenchmarks.java
│ ├── IntegerCodecBenchmarks.java
│ ├── LocalDateCodecBenchmarks.java
│ ├── LocalDateTimeCodecBenchmarks.java
│ ├── LocalTimeCodecBenchmarks.java
│ ├── LongCodecBenchmarks.java
│ ├── MoneyCodecBenchmarks.java
│ ├── ShortCodecBenchmarks.java
│ ├── StringCodecBenchmarks.java
│ └── UuidCodecBenchmarks.java
├── main/
│ ├── java/
│ │ └── io/
│ │ └── r2dbc/
│ │ └── mssql/
│ │ ├── AbstractMssqlException.java
│ │ ├── Binding.java
│ │ ├── ConnectionOptions.java
│ │ ├── DefaultMssqlResult.java
│ │ ├── ErrorDetails.java
│ │ ├── EscapeAwareNameMatcher.java
│ │ ├── ExceptionFactory.java
│ │ ├── GeneratedValues.java
│ │ ├── IndefinitePreparedStatementCache.java
│ │ ├── LoginConfiguration.java
│ │ ├── LoginFlow.java
│ │ ├── MssqlBatch.java
│ │ ├── MssqlColumnMetadata.java
│ │ ├── MssqlConnection.java
│ │ ├── MssqlConnectionConfiguration.java
│ │ ├── MssqlConnectionFactory.java
│ │ ├── MssqlConnectionFactoryMetadata.java
│ │ ├── MssqlConnectionFactoryProvider.java
│ │ ├── MssqlConnectionMetadata.java
│ │ ├── MssqlException.java
│ │ ├── MssqlIsolationLevel.java
│ │ ├── MssqlResult.java
│ │ ├── MssqlReturnValues.java
│ │ ├── MssqlReturnValuesMetadata.java
│ │ ├── MssqlRow.java
│ │ ├── MssqlRowMetadata.java
│ │ ├── MssqlSegmentResult.java
│ │ ├── MssqlStatement.java
│ │ ├── MssqlStatementSupport.java
│ │ ├── NamedCollectionSupport.java
│ │ ├── OptionMapper.java
│ │ ├── ParametrizedMssqlStatement.java
│ │ ├── PreparedStatementCache.java
│ │ ├── QueryLogger.java
│ │ ├── QueryMessageFlow.java
│ │ ├── RpcQueryMessageFlow.java
│ │ ├── SimpleMssqlStatement.java
│ │ ├── api/
│ │ │ ├── MssqlTransactionDefinition.java
│ │ │ ├── SimpleTransactionDefinition.java
│ │ │ └── package-info.java
│ │ ├── client/
│ │ │ ├── Client.java
│ │ │ ├── ClientConfiguration.java
│ │ │ ├── ConnectionContext.java
│ │ │ ├── ConnectionState.java
│ │ │ ├── DisabledSslTunnel.java
│ │ │ ├── EnvironmentChangeEvent.java
│ │ │ ├── EnvironmentChangeListener.java
│ │ │ ├── MessageDecoder.java
│ │ │ ├── ReactorNettyClient.java
│ │ │ ├── StreamDecoder.java
│ │ │ ├── TdsEncoder.java
│ │ │ ├── TransactionStatus.java
│ │ │ ├── package-info.java
│ │ │ └── ssl/
│ │ │ ├── ContextProxy.java
│ │ │ ├── ExpectedHostnameX509TrustManager.java
│ │ │ ├── HostNamePredicate.java
│ │ │ ├── SslConfiguration.java
│ │ │ ├── SslEventHandler.java
│ │ │ ├── SslState.java
│ │ │ ├── TdsSslHandler.java
│ │ │ ├── TrustAllTrustManager.java
│ │ │ ├── X509CertificateUtil.java
│ │ │ └── package-info.java
│ │ ├── codec/
│ │ │ ├── AbstractCodec.java
│ │ │ ├── AbstractNumericCodec.java
│ │ │ ├── BigIntegerCodec.java
│ │ │ ├── BinaryCodec.java
│ │ │ ├── BlobCodec.java
│ │ │ ├── BooleanCodec.java
│ │ │ ├── ByteArray.java
│ │ │ ├── ByteCodec.java
│ │ │ ├── CharacterEncoder.java
│ │ │ ├── ClobCodec.java
│ │ │ ├── Codec.java
│ │ │ ├── Codecs.java
│ │ │ ├── DecimalCodec.java
│ │ │ ├── Decodable.java
│ │ │ ├── DefaultCodecs.java
│ │ │ ├── DoubleCodec.java
│ │ │ ├── Encoded.java
│ │ │ ├── FloatCodec.java
│ │ │ ├── IntegerCodec.java
│ │ │ ├── LocalDateCodec.java
│ │ │ ├── LocalDateTimeCodec.java
│ │ │ ├── LocalTimeCodec.java
│ │ │ ├── LongCodec.java
│ │ │ ├── MoneyCodec.java
│ │ │ ├── OffsetDateTimeCodec.java
│ │ │ ├── PlpEncoded.java
│ │ │ ├── PlpEncodedCharacters.java
│ │ │ ├── RpcDirection.java
│ │ │ ├── RpcEncoding.java
│ │ │ ├── RpcParameterContext.java
│ │ │ ├── ShortCodec.java
│ │ │ ├── StringCodec.java
│ │ │ ├── TimestampCodec.java
│ │ │ ├── UuidCodec.java
│ │ │ ├── ZonedDateTimeCodec.java
│ │ │ └── package-info.java
│ │ ├── message/
│ │ │ ├── ClientMessage.java
│ │ │ ├── Message.java
│ │ │ ├── TDSVersion.java
│ │ │ ├── TransactionDescriptor.java
│ │ │ ├── header/
│ │ │ │ ├── DefaultHeaderOptions.java
│ │ │ │ ├── Header.java
│ │ │ │ ├── HeaderOptions.java
│ │ │ │ ├── PacketIdProvider.java
│ │ │ │ ├── Status.java
│ │ │ │ └── Type.java
│ │ │ ├── package-info.java
│ │ │ ├── tds/
│ │ │ │ ├── ContextualTdsFragment.java
│ │ │ │ ├── Decode.java
│ │ │ │ ├── Encode.java
│ │ │ │ ├── FirstTdsFragment.java
│ │ │ │ ├── LastTdsFragment.java
│ │ │ │ ├── ProtocolException.java
│ │ │ │ ├── Redirect.java
│ │ │ │ ├── ServerCharset.java
│ │ │ │ ├── TdsFragment.java
│ │ │ │ ├── TdsPacket.java
│ │ │ │ ├── TdsPackets.java
│ │ │ │ └── package-info.java
│ │ │ ├── token/
│ │ │ │ ├── AbstractDataToken.java
│ │ │ │ ├── AbstractDoneToken.java
│ │ │ │ ├── AbstractInfoToken.java
│ │ │ │ ├── AllHeaders.java
│ │ │ │ ├── Attention.java
│ │ │ │ ├── ColInfoToken.java
│ │ │ │ ├── Column.java
│ │ │ │ ├── ColumnMetadataToken.java
│ │ │ │ ├── DataToken.java
│ │ │ │ ├── DoneInProcToken.java
│ │ │ │ ├── DoneProcToken.java
│ │ │ │ ├── DoneToken.java
│ │ │ │ ├── EnvChangeToken.java
│ │ │ │ ├── ErrorToken.java
│ │ │ │ ├── FeatureExtAckToken.java
│ │ │ │ ├── Identifier.java
│ │ │ │ ├── InfoToken.java
│ │ │ │ ├── Login7.java
│ │ │ │ ├── LoginAckToken.java
│ │ │ │ ├── NbcRowToken.java
│ │ │ │ ├── OrderToken.java
│ │ │ │ ├── Prelogin.java
│ │ │ │ ├── ReturnStatus.java
│ │ │ │ ├── ReturnValue.java
│ │ │ │ ├── RowToken.java
│ │ │ │ ├── RpcRequest.java
│ │ │ │ ├── SqlBatch.java
│ │ │ │ ├── TabnameToken.java
│ │ │ │ ├── Tabular.java
│ │ │ │ ├── TokenStream.java
│ │ │ │ └── package-info.java
│ │ │ └── type/
│ │ │ ├── AbstractTypeDecoderStrategy.java
│ │ │ ├── Collation.java
│ │ │ ├── Length.java
│ │ │ ├── LengthStrategy.java
│ │ │ ├── MutableTypeInformation.java
│ │ │ ├── PlpLength.java
│ │ │ ├── SqlServerType.java
│ │ │ ├── TdsDataType.java
│ │ │ ├── TypeBuilder.java
│ │ │ ├── TypeDecoderStrategies.java
│ │ │ ├── TypeDecoderStrategy.java
│ │ │ ├── TypeInformation.java
│ │ │ ├── TypeUtils.java
│ │ │ └── package-info.java
│ │ ├── package-info.java
│ │ └── util/
│ │ ├── Assert.java
│ │ ├── DriverVersion.java
│ │ ├── FluxDiscardOnCancel.java
│ │ ├── Operators.java
│ │ ├── PredicateUtils.java
│ │ ├── ReferenceCountUtil.java
│ │ ├── StringUtils.java
│ │ ├── Version.java
│ │ └── package-info.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── io.r2dbc.spi.ConnectionFactoryProvider
└── test/
├── java/
│ └── io/
│ └── r2dbc/
│ └── mssql/
│ ├── BindingUnitTests.java
│ ├── CodecIntegrationTests.java
│ ├── ColumnMetadataIntegrationTests.java
│ ├── ConcurrentAccessIntegrationTests.java
│ ├── EscapeAwareNameMatcherUnitTests.java
│ ├── ExceptionFactoryUnitTests.java
│ ├── GeneratedValuesUnitTests.java
│ ├── IndefinitePreparedStatementCacheUnitTests.java
│ ├── JsonIntegrationTests.java
│ ├── LobIntegrationTests.java
│ ├── LoginFlowUnitTests.java
│ ├── MssqlBatchIntegrationTests.java
│ ├── MssqlBatchUnitTests.java
│ ├── MssqlCancelIntegrationTests.java
│ ├── MssqlConnectionConfigurationUnitTests.java
│ ├── MssqlConnectionFactoryMetadataUnitTests.java
│ ├── MssqlConnectionFactoryProviderTest.java
│ ├── MssqlConnectionFactoryUnitTests.java
│ ├── MssqlConnectionIntegrationTests.java
│ ├── MssqlConnectionMetadataUnitTests.java
│ ├── MssqlConnectionUnitTests.java
│ ├── MssqlResultUnitTests.java
│ ├── MssqlReturnValuesUnitTests.java
│ ├── MssqlRowMetadataUnitTests.java
│ ├── MssqlRowUnitTests.java
│ ├── MssqlSegmentResultUnitTests.java
│ ├── MssqlTestKit.java
│ ├── ParametrizedMssqlStatementIntegrationTests.java
│ ├── ParametrizedMssqlStatementStoredProcedureIntegrationTests.java
│ ├── ParametrizedMssqlStatementUnitTests.java
│ ├── QueryMessageFlowUnitTests.java
│ ├── ReturnGeneratedValuesIntegrationTests.java
│ ├── RpcBlobUnitTests.java
│ ├── RpcQueryMessageFlowUnitTests.java
│ ├── SimpleMssqlStatementIntegrationTests.java
│ ├── SimpleMssqlStatementUnitTests.java
│ ├── SqlVariantIntegrationTests.java
│ ├── TestConnectionOptions.java
│ ├── TransactionIntegrationTests.java
│ ├── XmlIntegrationTests.java
│ ├── client/
│ │ ├── ConnectionStateUnitTests.java
│ │ ├── ReactorNettyClientIntegrationTests.java
│ │ ├── StreamDecoderUnitTests.java
│ │ ├── TdsEncoderUnitTests.java
│ │ ├── TestClient.java
│ │ └── ssl/
│ │ ├── HostNamePredicateUnitTests.java
│ │ ├── TdsSslHandlerUnitTests.java
│ │ └── X509CertificateUtilUnitTests.java
│ ├── codec/
│ │ ├── BigIntegerCodecUnitTests.java
│ │ ├── BinaryCodecUnitTests.java
│ │ ├── BlobCodecUnitTests.java
│ │ ├── BooleanCodecUnitTests.java
│ │ ├── ByteCodecUnitTests.java
│ │ ├── ClobCodecUnitTests.java
│ │ ├── ColumnUtil.java
│ │ ├── DecimalCodecUnitTests.java
│ │ ├── DoubleCodecUnitTests.java
│ │ ├── EncodedUnitTests.java
│ │ ├── FloatCodecUnitTests.java
│ │ ├── IntegerCodecUnitTests.java
│ │ ├── LocalDateCodecUnitTests.java
│ │ ├── LocalDateTimeCodecUnitTests.java
│ │ ├── LocalTimeCodecUnitTests.java
│ │ ├── LongCodecUnitTests.java
│ │ ├── MoneyCodecUnitTests.java
│ │ ├── OffsetDateTimeCodecUnitTests.java
│ │ ├── PlpEncodedUnitTests.java
│ │ ├── RpcEncodingUnitTests.java
│ │ ├── ShortCodecUnitTests.java
│ │ ├── StringCodecUnitTests.java
│ │ ├── TimestampCodecUnitTests.java
│ │ ├── UuidCodecUnitTests.java
│ │ └── ZonedDateTimeCodecUnitTests.java
│ ├── message/
│ │ ├── TDSVersionUnitTests.java
│ │ ├── header/
│ │ │ ├── HeaderUnitTests.java
│ │ │ ├── StatusUnitTests.java
│ │ │ └── TypeUnitTests.java
│ │ ├── token/
│ │ │ ├── AllHeadersUnitTests.java
│ │ │ ├── CanDecodeTestSupport.java
│ │ │ ├── ColInfoTokenUnitTests.java
│ │ │ ├── ColumnMetadataTokenUnitTests.java
│ │ │ ├── DoneInProcUnitTests.java
│ │ │ ├── DoneProcUnitTests.java
│ │ │ ├── DoneTokenUnitTests.java
│ │ │ ├── EnvChangeTokenUnitTests.java
│ │ │ ├── ErrorTokenUnitTests.java
│ │ │ ├── FeatureExtAckTokenUnitTests.java
│ │ │ ├── IdentifierUnitTests.java
│ │ │ ├── InfoTokenUnitTests.java
│ │ │ ├── Login7UnitTests.java
│ │ │ ├── LoginAckTokenUnitTests.java
│ │ │ ├── NbcRowTokenUnitTests.java
│ │ │ ├── OrderTokenUnitTests.java
│ │ │ ├── PreloginUnitTests.java
│ │ │ ├── ReturnValueUnitTests.java
│ │ │ ├── RowTokenFactory.java
│ │ │ ├── RowTokenUnitTests.java
│ │ │ ├── RpcRequestUnitTests.java
│ │ │ ├── SqlBatchUnitTests.java
│ │ │ ├── TabnameTokenUnitTests.java
│ │ │ └── TabularUnitTests.java
│ │ └── type/
│ │ ├── CollationUnitTests.java
│ │ └── TypeBuilderUnitTests.java
│ └── util/
│ ├── ClientMessageAssert.java
│ ├── EmbeddedChannelAssert.java
│ ├── EncodedAssert.java
│ ├── FluxDiscardOnCancelUnitTests.java
│ ├── HexUtils.java
│ ├── IntegrationTestSupport.java
│ ├── MsSqlServerExtension.java
│ ├── TestByteBufAllocator.java
│ └── Types.java
└── resources/
├── int-varcharmax-data.txt
└── logback-test.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/ci.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven
on:
push:
branches: [ main, 1.0.x, 0.9.x, 0.8.x ]
jobs:
build:
if: github.repository == 'r2dbc/r2dbc-mssql'
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
mvn: ./mvnw
- os: windows-latest
mvn: mvn
- os: macos-latest
mvn: ./mvnw
steps:
- uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: 24
distribution: temurin
cache: maven
- name: Build with Maven
env:
CENTRAL_TOKEN_USERNAME: ${{ secrets.CENTRAL_TOKEN_USERNAME }}
CENTRAL_TOKEN_PASSWORD: ${{ secrets.CENTRAL_TOKEN_PASSWORD }}
run: ${{ matrix.mvn }} -B deploy -D skipITs -P snapshot -s settings.xml
================================================
FILE: .github/workflows/pullrequests.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Build Pull request with Maven
on: [pull_request]
jobs:
pr-build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
mvn: ./mvnw
- os: windows-latest
mvn: mvn
- os: macos-latest
mvn: ./mvnw
steps:
- uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: 24
distribution: temurin
cache: maven
- name: Build with Maven
run: ${{ matrix.mvn }} -B verify -D skipITs
================================================
FILE: .github/workflows/release.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Stage release to Maven Central
on:
push:
branches: [ release ]
jobs:
release:
if: github.repository == 'r2dbc/r2dbc-mssql'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: 24
distribution: temurin
- name: Initialize Maven Version
run: ./mvnw -q org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version
- name: GPG Check
run: gpg -k
- name: Release with Maven
env:
CENTRAL_TOKEN_USERNAME: ${{ secrets.CENTRAL_TOKEN_USERNAME }}
CENTRAL_TOKEN_PASSWORD: ${{ secrets.CENTRAL_TOKEN_PASSWORD }}
GPG_KEY_BASE64: ${{ secrets.GPG_KEY_BASE64 }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: ci/build-and-deploy-to-maven-central.sh
================================================
FILE: .gitignore
================================================
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# IntelliJ
out/
build/
.idea/
*.iml
### Java template
# Compiled class file
*.class
# Log file
*.log
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see https://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.flattened-pom.xml
================================================
FILE: .mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
* Copyright 2018-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader {
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL =
"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
* use instead of the default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH =
".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main(String args[]) {
System.out.println("- Downloader started");
File baseDirectory = new File(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL;
if(mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null;
try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
} catch (IOException e) {
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
} finally {
try {
if(mavenWrapperPropertyFileInputStream != null) {
mavenWrapperPropertyFileInputStream.close();
}
} catch (IOException e) {
// Ignore ...
}
}
}
System.out.println("- Downloading from: : " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if(!outputFile.getParentFile().exists()) {
if(!outputFile.getParentFile().mkdirs()) {
System.out.println(
"- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
}
}
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
try {
downloadFileFromURL(url, outputFile);
System.out.println("Done");
System.exit(0);
} catch (Throwable e) {
System.out.println("- Error downloading");
e.printStackTrace();
System.exit(1);
}
}
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
URL website = new URL(urlString);
ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}
================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
================================================
FILE: .travis.yml
================================================
language: java
jdk:
- openjdk8
cache:
directories:
- $HOME/.m2
notifications:
slack:
secure: JMisDlbY76AZeIQn/IUw0TyCR7A6x0FoazJ5BR5Fz0S+AU0peSgU9J3IaqYWzp7rv7eXOOCExLVwzXFNz9cXCREhbbg5yoaKIfV0nQvu03Rt1cwsFqAHP/3M7zwSS2cdw++hoX3ErNcJVt1rhZCQkbcc33LDwx8tJnfDOgZ5wAg5Z3iempp4Zig+IgtqoccI2hmefgoNY68hApfRDhHTpJHdQeCLeYtEA8UpNpLhKGBzTONVhjwyeJxCBVuY/9GIW8p6TceWbIPpPWE1hRtQgLLfTtz3LUAU1aMbTYFEEYnNfeAMdSqnyPqgehpUaoX4M/ep/cvb5NGtDz4ksQrIBdc578YAv/YXP9Q1cTk8A2DT7e7yYQWrgH2M+KyEPi/HYRE8fT2BjzecA9wbJhkeNGS/Zt02mzUb8WmitgstnFLac+ibyUtXwK27RN3zdbaIKjr2FtDHU2qbQ3m8TRJXi7UgeAFc5HAnJ0TyqGYw/FbCRDgEuW3gz3a8MZSJmxy4/JtrAxdLdsI3UyZtj0wXCqxuaJOyOOI11UCqlD16fzB0S0A12lqq6sAIkNbGPB7shJ5iMK5rtip6S1ssuRJ8XgTATT/XiNIBXYaRMXAzv0QCYTRrR2dQnIDT4pzsEsTS4T150Jl5SgD88QfXUyree2Qg7bRTvQwe9ruPsBWDUBs=
================================================
FILE: CHANGELOG
================================================
R2DBC MSSQL Changelog
=============================
1.0.0.RELEASE
------------------
* Upgrade to Project Reactor 2022.0.0 #260
* Upgrade to R2DBC Pool 1.0.0.RELEASE #261
1.0.0.RC1
------------------
* Expand CI testing to other platforms. #250
* MssqlConnectionConfigurationUnitTests.configureKeyStore fails Windows test environment. #251
* Upgrade to R2DBC 1.0 #253
* Upgrade to Reactor 2022.0.0-M4 #255
0.9.0.RELEASE
------------------
* `SSL` configuration option enables SSL handshaking regardless of the configuration value #240
* Extend license years in copyright header to 2022 #242
0.9.0.RC1
------------------
* Upgrade to R2DBC 0.9.0.RELEASE #237
* Upgrade to R2DBC SPI 0.9 RC1 #223
* Adopt renamed TCK column name #236
* Move off deprecated Reactor Netty API #231
* Let `Statement.add()` always create a new binding set #230
* `BigDecimal` with negative scale incorrectly encoded #228
* Use sequential processing in `Result.flatMap(…)` #225
* Propagate offending SQL into R2DBC exceptions #224
* Upgrade to R2DBC SPI 0.9 RC1 #223
* Align `Statement.bind(…)` and `Readable.get(…)` exceptions with specification #222
* Upgrade dependencies #221
* Replace `EmitterProcessor` with `Sinks` API #219
* The FOR XML clause is not allowed in a CURSOR statement #209
0.9.0.M2
------------------
* Statements hang up on reading `nvarchar(max)` columns #216
* Add support for Attention token (cancelling running queries) #215
* Add support for lock wait timeout #214
* Add support for statement timeout #213
* Upgrade to R2DBC SPI 0.9 M2 #212
* The FOR XML clause is not allowed in a CURSOR statement #209
* `OffsetDateTimeCodec` does not properly decode negative timezone offsets #208
* Upgrade to Testcontainers 1.15.3 #203
* ClassCastException when calling RowMetadata.getColumnNames().toArray(T[]) #200
* Add support to consume return values from stored procedures #199
* Exclude transitive SLF4J pulled from HikariCP #198
* Can't combine bind variables with T-SQL local variables #197
* Statement batch doesn't produce the correct number of update counts #196
* Eager buffer allocation in `TdsEncoder.writeChunkedMessage(…)` can lead to memory leaks #195
* Add support for trustServerCertificate flag #184
* Exception is not thrown when do SQL insert through ReactiveCrudRepository's save method. #180
0.9.0.M1
------------------
* Upgrade to Reactor 2020.0.4 #193
* Upgrade to R2DBC Pool 0.9.0.M1 #192
* Upgrade to R2DBC SPI 0.9.0.M1 #190
* Strip ROWSTAT column from MssqlRowMetadata #188
* Add support for extended transaction definitions #183
* Add support for SPI Parameters #182
* Enable Developer Certificate of Origin #181
* Restrict CI and release task to r2dbc/r2dbc-mssql repo #179
* Upgrade dependencies #178
* Add config options for TCP KeepAlive and NoDelay #177
* Add support for SSL tunnels #176
* Use GitHub actions to deploy to OSS Sonatype/Maven Central #173
* Clob decoding is prone to in-character decoding splits #172
* StringCodec fix for characters split between PLP chunks #171
* Upgrade to R2DBC SPI 0.8.3 #170
* Ensure no snapshots get referenced in release builds #165
* Add integration tests for null decode #163
* Failed statement with returnGeneratedValues enabled causes onErrorDropped #162
* Rename master branch to main #159
* Upgrade to Reactor Dysprosium SR9 #158
* Upgrade to Reactor Dysprosium SR8 #157
* Upgrade dependencies #155
* Add sslContextBuilderCustomizer(Function<SslContextBuilder, SslContextBuilder>) #152
* Issue inserting byte objects when size is greater than 8000 and and less than 65535 bytes #151
* Add support for configuring a custom trust store #150
* Add BlockHound to integration tests #149
* Allow custom trust store for server certificate verification. #148
* Upgrade build and test dependencies #146
* Upgrade to Reactor Dysprosium-SR6 #145
* Stage releases directly on maven central #143
* Multiple TDS chunks in a single buffer cause connection reset on Azure SQL #142
* Protocol errors get swallowed in RPC message flow for direct queries #141
* Query String bigger than 4000 characters result in java.lang.UnsupportedOperationException #140
* Provide additional configuration options for hostNameInCertificiate #138
* Update dependencies #134
* Upgrade to Testcontainers 1.12.5 #132
* Fix infinite loop when clearing bindings #131
* Support casting of BIGINT to BigDecimal #130
* Enable Travis for pull requests #125
* Migrate to Jenkins CI #124
* ENVCHANGE Token is not decoded properly for Routing type #116
0.8.5.RELEASE
------------------
* Upgrade dependencies #178
* Add config options for TCP KeepAlive and NoDelay #177
* Add support for SSL tunnels #176
* Use GitHub actions to deploy to OSS Sonatype/Maven Central #173
* Clob decoding is prone to in-character decoding splits #172
* StringCodec fix for characters split between PLP chunks #171
* Upgrade to R2DBC SPI 0.8.3 #170
0.8.4.RELEASE
------------------
* Ensure no snapshots get referenced in release builds #165
* Add integration tests for null decode #163
* Failed statement with returnGeneratedValues enabled causes onErrorDropped #162
* Rename master branch to main #159
* Upgrade to Reactor Dysprosium SR9 #158
* Upgrade to Reactor Dysprosium SR8 #157
0.8.3.RELEASE
------------------
* Upgrade dependencies #155
* Add sslContextBuilderCustomizer(Function<SslContextBuilder, SslContextBuilder>) #152
* Issue inserting byte objects when size is greater than 8000 and and less than 65535 bytes #151
* Add support for configuring a custom trust store #150
* Add BlockHound to integration tests #149
* Allow custom trust store for server certificate verification. #148
* Multiple TDS chunks in a single buffer cause connection reset on Azure SQL #142
0.8.2.RELEASE
------------------
* Upgrade build and test dependencies #146
* Upgrade to Reactor Dysprosium-SR6 #145
* Stage releases directly on maven central #144
* Protocol errors get swallowed in RPC message flow for direct queries #141
* Query String bigger than 4000 characters result in java.lang.UnsupportedOperationException #140
* Provide additional configuration options for hostNameInCertificiate #138
* ENVCHANGE Token is not decoded properly for Routing type #116
0.8.1.RELEASE
------------------
* Update dependencies #134
* Fix infinite loop when clearing bindings #131
* Support casting of BIGINT to BigDecimal #130
* Backport Travis support to 0.8.x #128
* Backport Jenkins to 0.8.x #127
0.8.0.RELEASE
------------------
* Upgrade to Reactor Dysprosium SR2 #123
* Upgrade to R2DBC SPI 0.8.0.RELEASE #121
* Remove SLF4J in favor of Reactor Core Loggers #120
* Clob codec should support UNICODE #117
* Default to scalar values for LOB column retrieval according to spec changes #115
* Upgrade to Testcontainers 1.12.3 #114
* SELECT (NEXT VALUE FOR TestSeq) with RPC Flow and fast-forward scroll option skips sequence items #113
* Add support for sendStringParametersAsUnicode property #112
* Add hints to ByteBufs #110
* Statement execution gets stuck when connection gets disconnected #109
0.8.0.RC2
------------------
* Revert reactor netty exclusions #107
0.8.0.RC1
------------------
* Fix malformed Javadoc #104
* Add automatic module name #103
* Upgrade to Reactor Dysprosium GA #102
* Upgrade dependencies #100
* BinaryCodec uses varbinary which limits the byteArray to 65kb #99
* Use ByteBuffer as default type for binary payloads #98
* Remove repositories declaration from published pom #97
* Move jitpack repository declaration to JMH profile #96
* Adapt to Statement.bind and Row.get by name #95
* Report ConnectionMetadata from SERVERPROPERTY and @@VERSION #94
* Upgrade to Reactor Dysprosium RC1 #93
* Rename MssqlExample to MssqlTestKit #92
* IllegalArgumentException Invalid TDS type is 0 on SQL Server 2014 #90
* Connection reset by peer #89
* Replace RuleBasedCollector with simple string matcher in MssqlRowMetadata #87
* Add implementation for Connection.validate(…) #86
* Expose ConnectionMetadata #85
* QueryMessageFlow terminates without final DONE token #84
* Improve debugging experience #83
* Allow control of AutoCommit and retrieval of the IsolationLevel #82
* Optimize operator allocation #81
* Introduce literals for NULL values #80
* Buffer refCnt = 0 reported when encoding large lob #79
* Add support for expected hostname configuration #78
* NotSslRecordException thrown when connecting to Azure SQL Server #77
* Exclude not-required netty dependencies #75
* Add benchmark suites #68
* Consider large chunks in StreamDecoder #63
* Add FluxDiscardOnCancel operator #6
0.8.0.M8
------------------
* Upgrade to AssertJ 3.12.0 #72
* Upgrade to Reactor Dysprosium M1 #71
* Adapt to IsolationLevel changes (switch from enum to constant class) #70
* Implement RowMetadata.getColumnNames() #64
* Readme mentions mysql as driver identifier #62
* Example Tests #60
* Completion in GeneratedValues.reduceToSingleCountDoneToken(…) leaves non-consumed protocol messages on the wire #59
* Add support for BLOB/CLOB types #58
* Use R2DBC Exception hierarchy for driver exceptions #57
* Reduce dependencies #56
* Add configurable fetch size to MssqlStatement #55
* Executing a parametrized Statement twice fails #54
* Introduce cache for parsed SQL statements #53
* Fix memory leak in cursored RPC flow #52
* Reduce object allocations #51
* SimpleMssqlStatement creates eagerly QueryMessageFlow #50
* Defer error signal emission in MssqlResult until done token is processed #49
* Introduce direct/cursored preference Predicate to prefer direct/cursored execution #48
* Add support for SP_EXECUTESQL for simple parametrized statements #47
* Query-Subscribers of Client.exchange(…) remain subscribed #46
* Getting java.lang.IllegalStateException: Collation not available when querying the database. #37
* Add ConnectionFactoryProvider.getDriver() implementation #31
* Git ignore enhancement #30
* Add support for varchar(max) and nvarchar(max) #28
* Support SQL Server-specific transaction isolation levels by adding setTransactionIsolationLevel(MssqlIsolationLevel) to MssqlConnection #19
* Document supported data types #18
* Add support for binary types #3
1.0.0.M7
------------------
* Update changelog for M7 #25
* Fix ConnectionFactories usage example in readme #24
* Tabular decode function retains previous column metadata #23
* Introduce caching for RowMetadata instead creating an instance per row #22
* Enhanced ColumnMetadata #21
* Upgrade to TestContainers 1.10.6 #20
* Add Statement.returnGeneratedValues(String...) #17
* Remove Recursive Generics #16
* Add configuration support connect timeout #15
* Implement ConnectionFactory Discovery #14
* Null values should return IllegalArgumentException #10
* Parametrized INSERT … SELECT select SCOPE_IDENTITY() returns wrong affected rows count #7
* Add support for transport-level encryption to allow Azure usage #5
* Add support for OffsetDateTime #4
1.0.0.M6
------------------
* Inception
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
https://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NOTICE
================================================
Reactive Relational Database Connectivity
Copyright 2017-2022 the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# Reactive Relational Database Connectivity Microsoft SQL Server Implementation [](https://github.com/r2dbc/r2dbc-mssql/actions/workflows/ci.yml) [](https://maven-badges.herokuapp.com/maven-central/io.r2dbc/r2dbc-mssql)
This project contains the [Microsoft SQL Server][m] implementation of the [R2DBC SPI][r]. This implementation is not intended to be used directly, but rather to be used as the backing implementation for a humane client library to delegate to
[m]: https://microsoft.com/sqlserver
[r]: https://github.com/r2dbc/r2dbc-spi
This driver provides the following features:
* Complies with R2DBC 1.0
* Login with username/password with temporary SSL encryption
* Full SSL encryption support (for e.g. Azure usage).
* Transaction Control
* Simple execution of SQL batches (direct and cursored execution)
* Execution of parametrized statements (direct and cursored execution)
* Extensive type support (including `TEXT`, `VARCHAR(MAX)`, `IMAGE`, `VARBINARY(MAX)` and national variants, see below for exceptions)
* Execution of stored procedures
Next steps:
* Add support for TVP and UDTs
## Code of Conduct
This project is governed by the [R2DBC Code of Conduct](https://github.com/r2dbc/.github/blob/main/CODE_OF_CONDUCT.adoc). By participating, you are expected to uphold this code of conduct. Please
report unacceptable behavior to [info@r2dbc.io](mailto:info@r2dbc.io).
## Getting Started
Here is a quick teaser of how to use R2DBC MSSQL in Java:
**URL Connection Factory Discovery**
```java
ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:mssql://<host>:1433/<database>");
Publisher<? extends Connection> connectionPublisher = connectionFactory.create();
```
**Programmatic Connection Factory Discovery**
```java
ConnectionFactoryOptions options = builder()
.option(DRIVER, "sqlserver")
.option(HOST, "…")
.option(PORT, …) // optional, defaults to 1433
.option(USER, "…")
.option(PASSWORD, "…")
.option(DATABASE, "…") // optional
.option(SSL, true) // optional, defaults to false
.option(Option.valueOf("applicationName"), "…") // optional
.option(Option.valueOf("preferCursoredExecution"), true/false) // optional
.option(Option.valueOf("connectionId"), new UUID(…)) // optional
.build();
ConnectionFactory connectionFactory = ConnectionFactories.get(options);
Publisher<? extends Connection> connectionPublisher = connectionFactory.create();
// Alternative: Creating a Mono using Project Reactor
Mono<Connection> connectionMono = Mono.from(connectionFactory.create());
```
**Supported ConnectionFactory Discovery Options**
| Option | Description
|---------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| `ssl` | Whether to use transport-level encryption for the entire SQL server traffic.
| `driver` | Must be `sqlserver`.
| `host` | Server hostname to connect to.
| `port` | Server port to connect to. Defaults to `1433`. _(Optional)_
| `username` | Login username.
| `password` | Login password.
| `database` | Initial database to select. Defaults to SQL Server user profile settings. _(Optional)_
| `applicationName` | Name of the application. Defaults to driver name and version. _(Optional)_
| `connectionId` | Connection Id for tracing purposes. Defaults to a random Id. _(Optional)_
| `connectionProvider` | Set the `reactor.netty.resources.ConnectionProvider` to be used when creating the connection. Defaults to `ConnectionProvider.newConnection()`. _(Optional)_
| `connectTimeout` | Connection Id for tracing purposes. Defaults to 30 seconds. _(Optional)_
| `hostNameInCertificate` | Expected hostname in SSL certificate. Supports wildcards (e.g. `*.database.windows.net`). _(Optional)_
| `lockWaitTimeout` | Lock wait timeout using `SET LOCK_TIMEOUT …`. _(Optional)_
| `preferCursoredExecution` | Whether to prefer cursors or direct execution for queries. Uses by default direct. Cursors require more round-trips but are more backpressure-friendly. Defaults to direct execution. Can be `boolean` or a `Predicate<String>` accepting the SQL query. _(Optional)_
| `sendStringParametersAsUnicode` | Configure whether to send character data as unicode (NVARCHAR, NCHAR, NTEXT) or whether to use the database encoding, defaults to `true`. If disabled, `CharSequence` data is sent using the database-specific collation such as ASCII/MBCS instead of Unicode.
| `sslTunnel` | Enables SSL tunnel usage when using a SSL tunnel or SSL terminator in front of SQL Server. Accepts `Function<SslContextBuilder, SslContextBuilder>` to customize the SSL tunnel settings. SSL tunneling is not related to SQL Server's built-in SSL support. _(Optional)_
| `sslContextBuilderCustomizer` | SSL Context customizer to configure SQL Server's built-in SSL support (`Function<SslContextBuilder, SslContextBuilder>`) _(Optional)_
| `tcpKeepAlive` | Enable/disable TCP KeepAlive. Disabled by default. _(Optional)_
| `tcpNoDelay` | Enable/disable TCP NoDelay. Enabled by default. _(Optional)_
| `trustServerCertificate` | Fully trust the server certificate bypassing X.509 certificate validation. Disabled by default. _(Optional)_
| `trustStoreType` | Type of the TrustStore. Defaults to `KeyStore.getDefaultType()`. _(Optional)_
| `trustStore` | Path to the certificate TrustStore file. _(Optional)_
| `trustStorePassword` | Password used to check the integrity of the TrustStore data. _(Optional)_
**Programmatic Configuration**
```java
MssqlConnectionConfiguration configuration = MssqlConnectionConfiguration.builder()
.host("…")
.username("…")
.password("…")
.database("…")
.preferCursoredExecution(…)
.build();
MssqlConnectionFactory factory = new MssqlConnectionFactory(configuration);
Mono<MssqlConnection> connectionMono = factory.create();
```
Microsoft SQL Server uses named parameters that are prefixed with `@`. The following SQL statement makes use of parameters:
```sql
INSERT INTO person (id, first_name, last_name) VALUES(@id, @firstname, @lastname)
```
Parameters are referenced without the `@` prefix when binding these:
```java
connection.createStatement("INSERT INTO person (id, first_name, last_name) VALUES(@id, @firstname, @lastname)")
.bind("id", 1)
.bind("firstname", "Walter")
.bind("lastname", "White")
.execute()
```
Binding also allows positional index (zero-based) references. The parameter index is derived from the parameter discovery order when parsing the query.
### Maven configuration
Artifacts can be found on [Maven Central](https://central.sonatype.com/search?q=r2dbc-mssql).
```xml
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-mssql</artifactId>
<version>${version}</version>
</dependency>
```
If you'd rather like the latest snapshots of the upcoming major version, use our Maven snapshot repository and declare the appropriate dependency version.
```xml
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-mssql</artifactId>
<version>${version}.BUILD-SNAPSHOT</version>
</dependency>
<repository>
<id>central-portal-snapshots</id>
<name>Central Portal Snapshots</name>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
</repository>
```
## Transaction Definitions
SQL Server supports additional options when starting a transaction. In particular, the following options can be specified:
* Isolation Level (`isolationLevel`) (reset after the transaction to previous value)
* Transaction Name (`name`)
* Transaction Log Mark (`mark`)
* Lock Wait Timeout (`lockWaitTimeout`) (reset after the transaction to `-1`)
These options can be specified upon transaction begin to start the transaction and apply options in a single command roundtrip:
```java
MssqlConnection connection= …;
connection.beginTransaction(MssqlTransactionDefinition.from(IsolationLevel.READ_UNCOMMITTED)
.name("my-transaction").mark("tx-log-mark")
.lockTimeout(Duration.ofMinutes(1)));
```
See also: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-transaction-transact-sql
### Data Type Mapping
This reference table shows the type mapping between [Microsoft SQL Server][m] and Java data types:
| Microsoft SQL Server Type | Java Data Type |
|:------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------|
| [`bit`][sql-bit-ref] | [**`Boolean`**][java-boolean-ref], [`Byte`][java-byte-ref], [`Short`][java-short-ref], [`Integer`][java-integer-ref], [`Long`][java-long-ref], [`BigDecimal`][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref] |
| [`tinyint`][sql-all-int-ref] | [**`Byte`**][java-byte-ref], [`Boolean`][java-boolean-ref], [`Short`][java-short-ref], [`Integer`][java-integer-ref], [`Long`][java-long-ref], [`BigDecimal`][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref] |
| [`smallint`][sql-all-int-ref] | [**`Short`**][java-short-ref], [`Boolean`][java-boolean-ref], [`Byte`][java-byte-ref], [`Integer`][java-integer-ref], [`Long`][java-long-ref], [`BigDecimal`][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref] |
| [`int`][sql-all-int-ref] | [**`Integer`**][java-integer-ref], [`Boolean`][java-boolean-ref], [`Byte`][java-byte-ref], [`Short`][java-short-ref], [`Long`][java-long-ref], [`BigDecimal`][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref] |
| [`bigint`][sql-all-int-ref] | [**`Long`**][java-long-ref], [`Boolean`][java-boolean-ref], [`Byte`][java-byte-ref], [`Short`][java-short-ref], [`Integer`][java-integer-ref], [`BigDecimal`][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref] |
| [`real`][sql-float-real-ref] | [**`Float`**][java-float-ref], [`Double`][java-double-ref]
| [`float`][sql-float-real-ref] | [**`Double`**][java-double-ref], [`Float`][java-float-ref]
| [`decimal`][sql-decimal-ref] | [**`BigDecimal`**][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref]
| [`numeric`][sql-decimal-ref] | [**`BigDecimal`**][java-bigdecimal-ref], [`BigInteger`][java-biginteger-ref]
| [`uniqueidentifier`][sql-uid-ref] | [**`UUID`**][java-uuid-ref], [`String`][java-string-ref]
| [`smalldatetime`][sql-smalldatetime-ref] | [`LocalDateTime`][java-ldt-ref]
| [`datetime`][sql-datetime-ref] | [`LocalDateTime`][java-ldt-ref]
| [`datetime2`][sql-datetime2-ref] | [`LocalDateTime`][java-ldt-ref]
| [`date`][sql-date-ref] | [`LocalDate`][java-ld-ref]
| [`time`][sql-time-ref] | [`LocalTime`][java-lt-ref]
| [`datetimeoffset`][sql-dtof-ref] | [**`OffsetDateTime`**][java-odt-ref], [`ZonedDateTime`][java-zdt-ref]
| [`timestamp`][sql-timestamp-ref] | [`byte[]`][java-byte-ref]
| [`smallmoney`][sql-money-ref] | [`BigDecimal`][java-bigdecimal-ref]
| [`money`][sql-money-ref] | [`BigDecimal`][java-bigdecimal-ref]
| [`char`][sql-(var)char-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`varchar`][sql-(var)char-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`varcharmax`][sql-(var)char-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`nchar`][sql-n(var)char-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`nvarchar`][sql-n(var)char-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`nvarcharmax`][sql-n(var)char-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`text`][sql-(n)text-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`ntext`][sql-(n)text-ref] | [`String`][java-string-ref], [`Clob`][r2dbc-clob-ref]
| [`image`][sql-(n)text-ref] | [**`ByteBuffer`**][java-ByteBuffer-ref], [`byte[]`][java-byte-ref], [`Blob`][r2dbc-blob-ref]
| [`binary`][sql-binary-ref] | [**`ByteBuffer`**][java-ByteBuffer-ref], [`byte[]`][java-byte-ref], [`Blob`][r2dbc-blob-ref]
| [`varbinary`][sql-binary-ref] | [**`ByteBuffer`**][java-ByteBuffer-ref], [`byte[]`][java-byte-ref], [`Blob`][r2dbc-blob-ref]
| [`varbinarymax`][sql-binary-ref] | [**`ByteBuffer`**][java-ByteBuffer-ref], [`byte[]`][java-byte-ref], [`Blob`][r2dbc-blob-ref]
| [`sql_variant`][sql-sql-variant-ref] | Not yet supported.
| [`xml`][sql-xml-ref] | Not yet supported.
| [`udt`][sql-udt-ref] | Not yet supported.
| [`geometry`][sql-geometry-ref] | Not yet supported.
| [`geography`][sql-geography-ref] | Not yet supported.
Types in **bold** indicate the native (default) Java type.
**Note:** BLOB (`image`, `binary`, `varbinary` and `varbinary(max)`) and CLOB (`text`, `ntext`, `varchar(max)` and `nvarchar(max)`)
values are fully materialized in the client before decoding. Make sure to account for proper memory sizing.
[sql-bit-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-2017
[sql-all-int-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-2017
[sql-float-real-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/float-and-real-transact-sql?view=sql-server-2017
[sql-decimal-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/decimal-and-numeric-transact-sql?view=sql-server-2017
[sql-smalldatetime-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-2017
[sql-datetime-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-2017
[sql-datetime2-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime2-transact-sql?view=sql-server-2017
[sql-date-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql?view=sql-server-2017
[sql-time-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql?view=sql-server-2017
[sql-timestamp-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-2017
[sql-uid-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-2017
[sql-dtof-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql?view=sql-server-2017
[sql-money-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/money-and-smallmoney-transact-sql?view=sql-server-2017
[sql-(var)char-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-2017
[sql-n(var)char-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-2017
[sql-(n)text-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql?view=sql-server-2017
[sql-binary-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql?view=sql-server-2017
[sql-sql-variant-ref]: https://docs.microsoft.com/en-us/sql/t-sql/data-types/sql-variant-transact-sql?view=sql-server-2017
[sql-xml-ref]: https://docs.microsoft.com/en-us/sql/t-sql/xml/xml-transact-sql?view=sql-server-2017
[sql-udt-ref]: https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration-database-objects-user-defined-types/clr-user-defined-types?view=sql-server-2017
[sql-geometry-ref]: https://docs.microsoft.com/en-us/sql/t-sql/spatial-geometry/spatial-types-geometry-transact-sql?view=sql-server-2017
[sql-geography-ref]: https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/spatial-types-geography?view=sql-server-2017
[r2dbc-blob-ref]: https://r2dbc.io/spec/1.0.0.RELEASE/api/io/r2dbc/spi/Blob.html
[r2dbc-clob-ref]: https://r2dbc.io/spec/1.0.0.RELEASE/api/io/r2dbc/spi/Clob.html
[java-bigdecimal-ref]: https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html
[java-biginteger-ref]: https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html
[java-boolean-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html
[java-byte-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Byte.html
[java-ByteBuffer-ref]: https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html
[java-double-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html
[java-float-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html
[java-integer-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html
[java-long-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html
[java-ldt-ref]: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html
[java-ld-ref]: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
[java-lt-ref]: https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html
[java-odt-ref]: https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html
[java-short-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/Short.html
[java-string-ref]: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
[java-uuid-ref]: https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html
[java-zdt-ref]: https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html
## Logging
If SL4J is on the classpath, it will be used. Otherwise, there are two possible fallbacks: Console or `java.util.logging.Logger`). By default, the Console fallback is used. To use the JDK loggers, set the `reactor.logging.fallback` System property to `JDK`.
Logging facilities:
* Driver Logging (`io.r2dbc.mssql`)
* Query Logging (`io.r2dbc.mssql.QUERY` on `DEBUG` level)
* Transport Logging (`io.r2dbc.mssql.client`)
* `DEBUG` enables `Message` exchange logging
* `TRACE` enables traffic logging
## Getting Help
Having trouble with R2DBC? We'd love to help!
* Check the [spec documentation](https://r2dbc.io/spec/1.0.0.RELEASE/spec/html/), and [Javadoc](https://r2dbc.io/spec/1.0.0.RELEASE/api/).
* If you are upgrading, check out the [changelog](https://r2dbc.io/spec/1.0.0.RELEASE/CHANGELOG.txt) for "new and noteworthy" features.
* Ask a question - we monitor [stackoverflow.com](https://stackoverflow.com) for questions tagged with [`r2dbc`](https://stackoverflow.com/tags/r2dbc). You can also chat with the community
on [Gitter](https://gitter.im/r2dbc/r2dbc).
* Report bugs with R2DBC MSSQL at [github.com/r2dbc/r2dbc-mssql/issues](https://github.com/r2dbc/r2dbc-mssql/issues).
## Reporting Issues
R2DBC uses GitHub as issue tracking system to record bugs and feature requests.
If you want to raise an issue, please follow the recommendations below:
* Before you log a bug, please search the [issue tracker](https://github.com/r2dbc/r2dbc-mssql/issues) to see if someone has already reported the problem.
* If the issue doesn't already exist, [create a new issue](https://github.com/r2dbc/r2dbc-mssql/issues/new).
* Please provide as much information as possible with the issue report, we like to know the version of R2DBC MSSQL that you are using and JVM version.
* If you need to paste code, or include a stack trace use Markdown ``` escapes before and after your text.
* If possible try to create a test-case or project that replicates the issue.
Attach a link to your code or a compressed file containing your code.
## Building from Source
You don't need to build from source to use R2DBC MSSQL (binaries in Maven Central), but if you want to try out the latest and greatest, R2DBC MSSQL can be easily built with the
[maven wrapper](https://github.com/takari/maven-wrapper). You also need JDK 1.8 and Docker to run integration tests.
```bash
$ ./mvnw clean install
```
If you want to build with the regular `mvn` command, you will need [Maven v3.6.0 or above](https://maven.apache.org/run-maven/index.html).
_Also see [CONTRIBUTING.adoc](https://github.com/r2dbc/.github/blob/main/CONTRIBUTING.adoc) if you wish to submit pull requests. Commits require `Signed-off-by` (`git commit -s`) to ensure [Developer Certificate of Origin](https://developercertificate.org/)._
### Running JMH Benchmarks
Running the JMH benchmarks builds and runs the benchmarks without running tests.
```bash
$ ./mvnw clean install -Pjmh
```
## Staging to Maven Central
To stage a release to Maven Central, you need to create a release tag (release version) that contains the desired state
and version numbers (
`mvn versions:set versions:commit -q -o -DgenerateBackupPoms=false -DnewVersion=x.y.z.(RELEASE|Mnnn|RCnnn`) and
force-push it to the `release` branch. This push will trigger a Maven staging build.
## License
R2DBC MSSQL is Open Source software released under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0.html).
================================================
FILE: ci/build-and-deploy-to-maven-central.sh
================================================
#!/bin/bash
set -euo pipefail
VERSION=$(./mvnw org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version -o | grep -v INFO)
if [[ $VERSION =~ [^.*-SNAPSHOT$] ]] ; then
echo "Cannot deploy a snapshot: $VERSION"
exit 1
fi
if [[ $VERSION =~ [^(\d+\.)+(RC(\d+)|M(\d+)|RELEASE)$] ]] ; then
#
# Prepare GPG Key is expected to be in base64
# Exported with gpg -a --export-secret-keys "your@email" | base64 > gpg.base64
#
printf "$GPG_KEY_BASE64" | base64 --decode > gpg.asc
echo ${GPG_PASSPHRASE} | gpg --batch --yes --passphrase-fd 0 --import gpg.asc
gpg -k
#
# Stage on Maven Central
#
echo "Staging $VERSION to Central Portal"
./mvnw \
-s settings.xml \
-Pcentral \
-Dmaven.test.skip=true \
-Dgpg.passphrase=${GPG_PASSPHRASE} \
clean deploy -B -D skipITs
else
echo "Not a release: $VERSION"
exit 1
fi
================================================
FILE: intellij-style.xml
================================================
<code_scheme name="Project" version="173">
<option name="RIGHT_MARGIN" value="200" />
<option name="FORMATTER_TAGS_ENABLED" value="true" />
<option name="WRAP_COMMENTS" value="true" />
<option name="SOFT_MARGINS" value="200" />
<JavaCodeStyleSettings>
<option name="CLASS_NAMES_IN_JAVADOC" value="3" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
</JavaCodeStyleSettings>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="JAVA">
<option name="BLANK_LINES_BEFORE_PACKAGE" value="1" />
<option name="BLANK_LINES_AROUND_FIELD" value="1" />
<option name="BLANK_LINES_AROUND_FIELD_IN_INTERFACE" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER" value="1" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="WRAP_LONG_LINES" value="true" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<NAME>LOGGER</NAME>
<PRIVATE>true</PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PUBLIC>true</PUBLIC>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PROTECTED>true</PROTECTED>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PRIVATE>true</PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PUBLIC>true</PUBLIC>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PROTECTED>true</PROTECTED>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PRIVATE>true</PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<INITIALIZER_BLOCK>true</INITIALIZER_BLOCK>
<STATIC>true</STATIC>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<NAME>logger</NAME>
<PRIVATE>true</PRIVATE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PUBLIC>true</PUBLIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PROTECTED>true</PROTECTED>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<FINAL>true</FINAL>
<PRIVATE>true</PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PUBLIC>true</PUBLIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PROTECTED>true</PROTECTED>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PRIVATE>true</PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<FIELD>true</FIELD>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<INITIALIZER_BLOCK>true</INITIALIZER_BLOCK>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<CONSTRUCTOR>true</CONSTRUCTOR>
<PUBLIC>true</PUBLIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<CONSTRUCTOR>true</CONSTRUCTOR>
<PROTECTED>true</PROTECTED>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<CONSTRUCTOR>true</CONSTRUCTOR>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<CONSTRUCTOR>true</CONSTRUCTOR>
<PRIVATE>true</PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PUBLIC>true</PUBLIC>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PUBLIC>true</PUBLIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PROTECTED>true</PROTECTED>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PROTECTED>true</PROTECTED>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PRIVATE>true</PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PRIVATE>true</PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<ENUM>true</ENUM>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<INTERFACE>true</INTERFACE>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<CLASS>true</CLASS>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<CLASS>true</CLASS>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="WRAP_COMMENTS" value="true" />
</codeStyleSettings>
<codeStyleSettings language="TypeScript">
<option name="WRAP_COMMENTS" value="true" />
</codeStyleSettings>
</code_scheme>
================================================
FILE: mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
# TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
while IFS="=" read key value; do
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if command -v wget > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
wget "$jarUrl" -O "$wrapperJarPath"
elif command -v curl > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
curl -o "$wrapperJarPath" "$jarUrl"
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
================================================
FILE: mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
echo Found %WRAPPER_JAR%
) else (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%
================================================
FILE: pom.xml
================================================
<!--
~ Copyright 2017-2022 the original author or authors.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-mssql</artifactId>
<version>1.1.0.BUILD-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Reactive Relational Database Connectivity - Microsoft SQL Server</name>
<description>Reactive Relational Database Connectivity Driver Implementation for Microsoft SQL Server</description>
<url>https://github.com/r2dbc/r2dbc-mssql</url>
<properties>
<assertj.version>3.23.1</assertj.version>
<hikari-cp.version>4.0.3</hikari-cp.version>
<java.version>1.8</java.version>
<jsr305.version>3.0.2</jsr305.version>
<junit.version>5.13.4</junit.version>
<jmh.version>1.37</jmh.version>
<mbr.version>0.6.0.RELEASE</mbr.version>
<logback.version>1.5.24</logback.version>
<mockito.version>4.11.0</mockito.version>
<mssql-jdbc.version>13.2.1.jre8</mssql-jdbc.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<r2dbc-spi.version>1.0.0.RELEASE</r2dbc-spi.version>
<r2dbc-pool.version>1.0.2.RELEASE</r2dbc-pool.version>
<reactor.version>2022.0.22</reactor.version>
<spring-framework.version>5.3.39</spring-framework.version>
<testcontainers.version>1.21.4</testcontainers.version>
</properties>
<licenses>
<license>
<name>Apache License 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:git:https://github.com/r2dbc/r2dbc-mssql</connection>
<url>https://github.com/r2dbc/r2dbc-mssql</url>
</scm>
<developers>
<developer>
<name>Ben Hale</name>
<email>bhale@pivotal.io</email>
</developer>
<developer>
<name>Mark Paluch</name>
<email>mpaluch@pivotal.io</email>
</developer>
</developers>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>${reactor.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-bom</artifactId>
<version>${testcontainers.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-spi</artifactId>
<version>${r2dbc-spi.version}</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</dependency>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty-core</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>${jsr305.version}</version>
<scope>provided</scope>
</dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-pool</artifactId>
<version>${r2dbc-pool.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-spi-test</artifactId>
<version>${r2dbc-spi.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mssqlserver</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>${mssql-jdbc.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${hikari-cp.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<showWarnings>true</showWarnings>
<release>8</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<R2DBC-Specification-Version>${r2dbc-spi.version}</R2DBC-Specification-Version>
<Automatic-Module-Name>r2dbc.mssql</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>enforce-no-snapshots</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireReleaseDeps>
<onlyWhenRelease>true</onlyWhenRelease>
<message>No Snapshots in releases allowed!</message>
</requireReleaseDeps>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<excludePackageNames>
io.r2dbc.mssql.authentication,io.r2dbc.mssql.client,io.r2dbc.mssql.codec,io.r2dbc.mssql.message,io.r2dbc.mssql.util
</excludePackageNames>
<links>
<link>https://r2dbc.io/spec/${r2dbc-spi.version}/api/</link>
<link>https://projectreactor.io/docs/core/release/api/</link>
<link>https://www.reactive-streams.org/reactive-streams-1.0.4-javadoc/</link>
</links>
<doclint>-missing</doclint>
<javadocVersion>1.8</javadocVersion>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<runOrder>random</runOrder>
<excludes>
<exclude>**/**IntegrationTests.java</exclude>
</excludes>
<includes>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<runOrder>random</runOrder>
<includes>
<include>**/*TestKit.java</include>
<include>**/**IntegrationTests.java</include>
</includes>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>oss</flattenMode>
<pomElements>
<properties>remove</properties>
<parent>expand</parent>
<repositories>remove</repositories>
<profiles>remove</profiles>
</pomElements>
</configuration>
</execution>
<execution>
<id>flatten-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.10.0</version>
<extensions>true</extensions>
<configuration>
<autoPublish>true</autoPublish>
<deploymentName>R2DBC MSSQL ${project.version}</deploymentName>
<publishingServerId>central</publishingServerId>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>LICENSE</include>
<include>NOTICE</include>
<include>CHANGELOG</include>
</includes>
<targetPath>META-INF</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>jmh</id>
<dependencies>
<dependency>
<groupId>com.github.mp911de.microbenchmark-runner</groupId>
<artifactId>microbenchmark-runner-junit5</artifactId>
<version>${mbr.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/jmh/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>run-benchmarks</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<classpathScope>test</classpathScope>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>org.openjdk.jmh.Main</argument>
<argument>.*</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
</profile>
<profile>
<id>snapshot</id>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>central</id>
<build>
<pluginManagement>
<plugins>
<!-- Sign JARs -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
================================================
FILE: settings.xml
================================================
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>central</id>
<username>${env.CENTRAL_TOKEN_USERNAME}</username>
<password>${env.CENTRAL_TOKEN_PASSWORD}</password>
</server>
</servers>
</settings>
================================================
FILE: src/jmh/java/io/r2dbc/mssql/BenchmarkSettings.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Warmup;
import java.util.concurrent.TimeUnit;
/**
* Global benchmark settings.
*
* @author Mark Paluch
*/
@Warmup(iterations = 5, time = 2000, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 5, time = 1000, timeUnit = TimeUnit.MILLISECONDS)
@Fork(value = 1, warmups = 0)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public abstract class BenchmarkSettings {
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/ParametrizedMssqlStatementBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.mssql.client.Client;
import io.r2dbc.mssql.codec.DefaultCodecs;
import org.junit.platform.commons.annotation.Testable;
import org.mockito.Mockito;
import org.openjdk.jmh.annotations.Benchmark;
import java.util.function.Function;
/**
* Benchmarks for {@link ParametrizedMssqlStatement}, specifically query parsing.
*
* @author Mark Paluch
*/
@Testable
public class ParametrizedMssqlStatementBenchmarks extends BenchmarkSettings {
private static final ConnectionOptions cached = new ConnectionOptions(s -> false, new DefaultCodecs(), new IndefinitePreparedStatementCache(), true);
private static final ConnectionOptions uncached = new ConnectionOptions(s -> false, new DefaultCodecs(), new PreparedStatementCache() {
@Override
public int getHandle(String sql, Binding binding) {
return 0;
}
@Override
public void putHandle(int handle, String sql, Binding binding) {
}
@Override
public <T> T getParsedSql(String sql, Function<String, T> parseFunction) {
return parseFunction.apply(sql);
}
@Override
public int size() {
return 0;
}
}, true);
private static final Client client = Mockito.mock(Client.class);
@Benchmark
public Object parseSqlCached1Param() {
return new ParametrizedMssqlStatement(client, cached, "SELECT * from FOO where firstname = @firstname");
}
@Benchmark
public Object parseSqlCached5Param() {
return new ParametrizedMssqlStatement(client, cached, "SELECT * from FOO where firstname = @firstname and firstname = @firstname and p2 = @p2 and p3 = @p3 and p4 = @p4 and p5 = @p5");
}
@Benchmark
public Object parseSqlNonCached1Param() {
return new ParametrizedMssqlStatement(client, uncached, "SELECT * from FOO where firstname = @firstname");
}
@Benchmark
public Object parseSqlNonCached5Param() {
return new ParametrizedMssqlStatement(client, uncached, "SELECT * from FOO where firstname = @firstname and firstname = @firstname and p2 = @p2 and p3 = @p3 and p4 = @p4 and p5 = @p5");
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/PooledBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import com.zaxxer.hikari.HikariDataSource;
import io.r2dbc.mssql.util.MsSqlServerExtension;
import io.r2dbc.pool.ConnectionPool;
import io.r2dbc.pool.ConnectionPoolConfiguration;
import io.r2dbc.spi.ConnectionFactory;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.infra.Blackhole;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.TimeUnit;
/**
* Benchmarks for direct Statement execution mode using connection pooling.
*
* @author Mark Paluch
*/
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.SECONDS)
public class PooledBenchmarks extends BenchmarkSettings {
@State(Scope.Benchmark)
public static class ConnectionHolder {
final HikariDataSource jdbc;
final ConnectionFactory r2dbc;
public ConnectionHolder() {
MsSqlServerExtension extension = new MsSqlServerExtension();
extension.initialize();
this.jdbc = extension.getDataSource();
MssqlConnectionConfiguration configuration = extension.configBuilder().build();
MssqlConnectionFactory mssqlConnectionFactory = new MssqlConnectionFactory(configuration);
ConnectionPoolConfiguration poolConfiguration = ConnectionPoolConfiguration.builder(mssqlConnectionFactory).maxSize(4).build();
this.r2dbc = new ConnectionPool(poolConfiguration);
}
}
@Benchmark
@Testable
public void simpleDirectJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
Connection connection = connectionHolder.jdbc.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM MSreplication_options");
while (resultSet.next()) {
voodoo.consume(resultSet.getString("optname"));
}
resultSet.close();
statement.close();
connection.close();
}
@Benchmark
@Testable
public void simpleDirectR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
String optname = Mono.usingWhen(connectionHolder.r2dbc.create(), connection -> {
MssqlStatement statement = (MssqlStatement) connection.createStatement("SELECT * FROM MSreplication_options");
statement.fetchSize(0);
return Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("optname", String.class))).last();
}, io.r2dbc.spi.Connection::close, (conn, err) -> conn.close(), io.r2dbc.spi.Connection::close
).block();
voodoo.consume(optname);
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/StagedResultSizeBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.mssql.util.MsSqlServerExtension;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.infra.Blackhole;
import reactor.core.publisher.Flux;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/**
* Benchmarks for Statement execution modes across various result sizes. Contains the following execution methods:
*
* <ul>
* <li>SQLBATCH (Direct, Statements without parameters)</li>
* <li>SP_EXECUTESQL (Direct, Statements with parameters)</li>
* <li>SP_CURSOROPEN (Cursors, Statements without parameters)</li>
* <li>SP_CURSORPREPEXEC (Cursors, Prepared statements)</li>
* </ul>
*
* @author Mark Paluch
*/
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.SECONDS)
public class StagedResultSizeBenchmarks extends BenchmarkSettings {
@State(Scope.Benchmark)
public static class ConnectionHolder {
final Connection jdbc;
final io.r2dbc.spi.Connection r2dbc;
@Param({"1", "10", "100", "200"})
int resultSize;
public ConnectionHolder() {
try {
MsSqlServerExtension extension = new MsSqlServerExtension();
extension.initialize();
this.jdbc = extension.getDataSource().getConnection();
MssqlConnectionConfiguration configuration =
extension.configBuilder().preferCursoredExecution(sql -> sql.contains(" /* cursored */")).build();
this.r2dbc = new MssqlConnectionFactory(configuration).create().block();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Setup
public void setup() {
try {
Statement statement = this.jdbc.createStatement();
try {
statement.execute("DROP TABLE result_sizes");
} catch (SQLException e) {
}
statement.execute("CREATE TABLE result_sizes (id int, name VARCHAR(255))");
for (int i = 0; i < this.resultSize; i++) {
statement.execute(String.format("INSERT INTO result_sizes VALUES(%d, '%s')", i, UUID.randomUUID()));
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
@Benchmark
@Testable
public void simpleDirectJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
Statement statement = connectionHolder.jdbc.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM result_sizes");
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
@Testable
public void simpleDirectR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM result_sizes");
((MssqlStatement) statement).fetchSize(0);
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
@Benchmark
public void simpleCursoredJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
Statement statement = connectionHolder.jdbc.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
statement.setFetchSize(128);
ResultSet resultSet = statement.executeQuery("SELECT * FROM result_sizes /* cursored */");
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
public void simpleCursoredR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM result_sizes /* cursored */");
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
@Benchmark
public void parametrizedDirectJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
PreparedStatement statement = connectionHolder.jdbc.prepareStatement("SELECT * FROM result_sizes WHERE name != ?");
statement.setString(1, "foo");
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
public void parametrizedDirectR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM result_sizes WHERE name != @P0").bind("P0", "foo");
((MssqlStatement) statement).fetchSize(0);
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
@Benchmark
public void preparedCursoredJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
PreparedStatement statement = connectionHolder.jdbc.prepareStatement("SELECT * FROM result_sizes WHERE name != ?", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
statement.setFetchSize(128);
statement.setString(1, "foo");
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
public void preparedCursoredR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM result_sizes WHERE name != @P0 /* cursored */").bind("P0", "foo");
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/StatementBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.mssql.util.MsSqlServerExtension;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.infra.Blackhole;
import reactor.core.publisher.Flux;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.TimeUnit;
/**
* Benchmarks for Statement execution modes. Contains the following execution methods:
*
* <ul>
* <li>SQLBATCH (Direct, Statements without parameters)</li>
* <li>SP_EXECUTESQL (Direct, Statements with parameters)</li>
* <li>SP_CURSOROPEN (Cursors, Statements without parameters)</li>
* <li>SP_CURSORPREPEXEC (Cursors, Prepared statements)</li>
* </ul>
*
* @author Mark Paluch
*/
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.SECONDS)
public class StatementBenchmarks extends BenchmarkSettings {
@State(Scope.Benchmark)
public static class ConnectionHolder {
final Connection jdbc;
final MssqlConnection r2dbc;
public ConnectionHolder() {
try {
MsSqlServerExtension extension = new MsSqlServerExtension();
extension.initialize();
this.jdbc = extension.getDataSource().getConnection();
Statement statement = this.jdbc.createStatement();
try {
statement.execute("DROP TABLE simple_test");
} catch (SQLException e) {
}
statement.execute("CREATE TABLE simple_test (name VARCHAR(255))");
statement.execute("INSERT INTO simple_test VALUES('foo')");
statement.execute("INSERT INTO simple_test VALUES('bar')");
statement.execute("INSERT INTO simple_test VALUES('baz')");
MssqlConnectionConfiguration configuration =
extension.configBuilder().preferCursoredExecution(sql -> sql.contains(" /* cursored */")).build();
this.r2dbc = new MssqlConnectionFactory(configuration).create().block();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
@Benchmark
@Testable
public void simpleDirectJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
Statement statement = connectionHolder.jdbc.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM simple_test");
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
@Testable
public void simpleDirectR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
MssqlStatement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM simple_test");
statement.fetchSize(0);
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
@Benchmark
@Testable
public void simpleCursoredJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
Statement statement = connectionHolder.jdbc.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = statement.executeQuery("SELECT * FROM simple_test /* cursored */");
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
public void simpleCursoredR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM simple_test /* cursored */");
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
@Benchmark
public void parametrizedDirectJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
PreparedStatement statement = connectionHolder.jdbc.prepareStatement("SELECT * FROM simple_test WHERE name = ?");
statement.setString(1, "foo");
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
@Testable
public void parametrizedDirectR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM simple_test WHERE name = @P0").bind("P0", "foo");
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
@Benchmark
public void preparedCursoredJdbc(ConnectionHolder connectionHolder, Blackhole voodoo) throws SQLException {
PreparedStatement statement = connectionHolder.jdbc.prepareStatement("SELECT * FROM simple_test WHERE name = ?", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
statement.setString(1, "foo");
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
voodoo.consume(resultSet.getString("name"));
}
resultSet.close();
statement.close();
}
@Benchmark
public void preparedCursoredR2dbc(ConnectionHolder connectionHolder, Blackhole voodoo) {
io.r2dbc.spi.Statement statement = connectionHolder.r2dbc.createStatement("SELECT * FROM simple_test WHERE name = @P0 /* cursored */").bind("P0", "foo");
String name = Flux.from(statement.execute()).flatMap(it -> it.map((row, rowMetadata) -> row.get("name", String.class))).blockLast();
voodoo.consume(name);
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/BinaryCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.nio.ByteBuffer;
/**
* Benchmarks for {@code BinaryCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class BinaryCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column binary = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.USHORTLENTYPE).withServerType(SqlServerType.VARBINARY).build());
private final ByteBuf binaryBuffer = HexUtils.decodeToByteBuf("03 00 62 61 72");
private final byte[] toEncode = "foo".getBytes();
private final ByteBuffer bufferToEncode = ByteBuffer.wrap(this.toEncode);
@Benchmark
public Object decodeToByteArray() {
this.binaryBuffer.readerIndex(0);
return codecs.decode(this.binaryBuffer, binary, byte[].class);
}
@Benchmark
public Object decodeToByteBuffer() {
this.binaryBuffer.readerIndex(0);
return codecs.decode(this.binaryBuffer, binary, ByteBuffer.class);
}
@Benchmark
public Encoded encodeByteArray() {
return doEncode(this.toEncode);
}
@Benchmark
public Encoded encodeByteBuffer() {
this.bufferToEncode.rewind();
return doEncode(this.bufferToEncode);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, byte[].class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/BooleanCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code BooleanCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class BooleanCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.TINYINT).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("01 01");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, Boolean.class);
}
@Benchmark
public Encoded encode() {
return doEncode(true);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, Boolean.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/ByteCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code ByteCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class ByteCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.TINYINT).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("01 01");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, Byte.class);
}
@Benchmark
public Encoded encode() {
return doEncode(Byte.MIN_VALUE);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, Byte.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/CodecBenchmarkSupport.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBufAllocator;
import io.r2dbc.mssql.BenchmarkSettings;
/**
* Settings for codec benchmarks.
*
* @author Mark Paluch
*/
public abstract class CodecBenchmarkSupport extends BenchmarkSettings {
static final ByteBufAllocator alloc = ByteBufAllocator.DEFAULT;
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/DecimalCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.math.BigDecimal;
/**
* Benchmarks for {@code DecimalCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class DecimalCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.NUMERIC).withScale(2).withPrecision(5).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("08 08 01 00 00 00 00 00 00 01");
private final BigDecimal toEncode = new BigDecimal("36.89");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, BigDecimal.class);
}
@Benchmark
public Encoded encode() {
return doEncode(this.toEncode);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, BigDecimal.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/DoubleCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code DoubleCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class DoubleCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.FLOAT).withMaxLength(8).build());
private final ByteBuf doubleBuffer = HexUtils.decodeToByteBuf("08 FE D4 78 E9 46 28 C6 40");
private final ByteBuf floatBuffer = HexUtils.decodeToByteBuf("04 04 37 42 31 46");
@Benchmark
public Object decodeDouble() {
this.doubleBuffer.readerIndex(0);
return codecs.decode(this.doubleBuffer, column, Double.class);
}
@Benchmark
public Object decodeFloat() {
this.floatBuffer.readerIndex(0);
return codecs.decode(this.floatBuffer, column, Double.class);
}
@Benchmark
public Encoded encode() {
return doEncode(Double.MIN_VALUE);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, Double.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/IntegerCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code IntegerCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class IntegerCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.INTEGER).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("04 04 01 00 00 01");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, Integer.class);
}
@Benchmark
public Encoded encode() {
return doEncode(Integer.MIN_VALUE);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, Integer.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/LocalDateCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.time.LocalDate;
/**
* Benchmarks for {@code LocalDateCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class LocalDateCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.DATE).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("03 DD 3E 0B");
private final LocalDate toEncode = LocalDate.parse("2018-10-23");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, LocalDate.class);
}
@Benchmark
public Encoded encode() {
return doEncode(this.toEncode);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, LocalDate.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/LocalDateTimeCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.time.LocalDateTime;
/**
* Benchmarks for {@code LocalDateTimeCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class LocalDateTimeCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column smallDateTimeColumn = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.SMALLDATETIME).build());
private final ByteBuf smallDateTimeBuffer = HexUtils.decodeToByteBuf("04 F5 A8 3E 00");
private static final Column dateTimeColumn = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.DATETIME).build());
private final ByteBuf dateTimeBuffer = HexUtils.decodeToByteBuf("08 86 A9 00 00 AA 70 02 01");
private static final Column dateTime2Column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.DATETIME2).withScale(7).build());
private final ByteBuf dateTime2Buffer = HexUtils.decodeToByteBuf("082006E17483E13E0B");
private final LocalDateTime toEncode = LocalDateTime.parse("2018-06-04T01:02");
@Benchmark
public Object decodeSmallDateTime() {
this.smallDateTimeBuffer.readerIndex(0);
return codecs.decode(this.smallDateTimeBuffer, smallDateTimeColumn, LocalDateTime.class);
}
@Benchmark
public Object decodeDateTime() {
this.dateTimeBuffer.readerIndex(0);
return codecs.decode(this.dateTimeBuffer, dateTimeColumn, LocalDateTime.class);
}
@Benchmark
public Object decodeDateTime2() {
this.dateTime2Buffer.readerIndex(0);
return codecs.decode(this.dateTime2Buffer, dateTime2Column, LocalDateTime.class);
}
@Benchmark
public Encoded encode() {
return doEncode(this.toEncode);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, LocalDateTime.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/LocalTimeCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.time.LocalTime;
/**
* Benchmarks for {@code LocalTimeCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class LocalTimeCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.TIME).withScale(7).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("05 C0 C9 B1 61 5D");
private final LocalTime toEncode = LocalTime.parse("18:13:14");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, LocalTime.class);
}
@Benchmark
public Encoded encode() {
return doEncode(this.toEncode);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, LocalTime.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/LongCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code LongCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class LongCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.BIGINT).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("08 08 01 00 00 00 00 00 00 01");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, Long.class);
}
@Benchmark
public Encoded encode() {
return doEncode(Long.MIN_VALUE);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, Long.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/MoneyCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.math.BigDecimal;
/**
* Benchmarks for {@code MoneyCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class MoneyCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.MONEY).withMaxLength(8).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("08 08 11 00 00 00 20 a1 07 00");
private final BigDecimal toEncode = new BigDecimal("7301494.4032");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, BigDecimal.class);
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/ShortCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code ShortCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class ShortCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withLengthStrategy(LengthStrategy.BYTELENTYPE).withServerType(SqlServerType.SMALLINT).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("02 01 01");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, Short.class);
}
@Benchmark
public Encoded encode() {
return doEncode(Short.MIN_VALUE);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, Short.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/StringCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.codec.RpcParameterContext.ValueContext;
import io.r2dbc.mssql.message.tds.Encode;
import io.r2dbc.mssql.message.tds.ServerCharset;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.Collation;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import io.r2dbc.mssql.util.TestByteBufAllocator;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
/**
* Benchmarks for {@code StringCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class StringCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Collation cp1252 = Collation.from(13632521, 52);
private static final Column varchar = new Column(0, "",
TypeInformation.builder().withCharset(ServerCharset.CP1252.charset()).withLengthStrategy(LengthStrategy.USHORTLENTYPE).withServerType(SqlServerType.VARCHAR).build());
private final ByteBuf varcharBuffer;
private static final Collation unicode = Collation.from(0x0445, 0);
private static final Column nvarchar = new Column(0, "",
TypeInformation.builder().withCharset(ServerCharset.UNICODE.charset()).withLengthStrategy(LengthStrategy.USHORTLENTYPE).withServerType(SqlServerType.NVARCHAR).build());
private final ByteBuf nvarcharBuffer;
private static final Column text = new Column(0, "",
TypeInformation.builder().withMaxLength(2147483647).withLengthStrategy(LengthStrategy.LONGLENTYPE).withServerType(SqlServerType.TEXT).withCharset(ServerCharset.CP1252.charset()).build());
private final ByteBuf textBuffer;
private static final Column uuid = new Column(0, "",
TypeInformation.builder().withMaxLength(16).withLengthStrategy(LengthStrategy.FIXEDLENTYPE).withServerType(SqlServerType.GUID).build());
private final ByteBuf uuidBuffer;
public StringCodecBenchmarks() {
this.varcharBuffer = alloc.buffer();
Encode.uShort(this.varcharBuffer, 6);
this.varcharBuffer.writeCharSequence("foobar", ServerCharset.CP1252.charset());
this.nvarcharBuffer = alloc.buffer();
Encode.uShort(this.nvarcharBuffer, 104);
this.nvarcharBuffer.writeCharSequence("Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο", ServerCharset.UNICODE.charset());
this.textBuffer = HexUtils.decodeToByteBuf("10 64" +
"75 6D 6D 79 20 74 65 78 74 70 74 72 00 00 00 64" +
"75 6D 6D 79 54 53 00 0B 00 00 00 6D 79 74 65 78" +
"74 76 61 6C 75 65");
this.uuidBuffer = HexUtils.decodeToByteBuf("F17B0DC7C7E5C54098C7A12F7E686724FD");
}
@Benchmark
public String decodeVarchar() {
this.varcharBuffer.readerIndex(0);
return codecs.decode(this.varcharBuffer, varchar, String.class);
}
@Benchmark
public Encoded encodeVarchar() {
return doEncode(cp1252, "foobar");
}
@Benchmark
public String decodeNVarchar() {
this.nvarcharBuffer.readerIndex(0);
return codecs.decode(this.nvarcharBuffer, nvarchar, String.class);
}
@Benchmark
public Encoded encodeNvarchar() {
return doEncode(unicode, "Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο");
}
@Benchmark
public String decodeText() {
this.textBuffer.readerIndex(0);
return codecs.decode(this.textBuffer, text, String.class);
}
@Benchmark
public String decodeUuid() {
this.uuidBuffer.readerIndex(0);
return codecs.decode(this.uuidBuffer, uuid, String.class);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(TestByteBufAllocator.TEST, String.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Collation collation, Object value) {
Encoded encoded = codecs.encode(TestByteBufAllocator.TEST, RpcParameterContext.in(ValueContext.character(collation, true)), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/jmh/java/io/r2dbc/mssql/codec/UuidCodecBenchmarks.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql.codec;
import io.netty.buffer.ByteBuf;
import io.r2dbc.mssql.message.token.Column;
import io.r2dbc.mssql.message.type.LengthStrategy;
import io.r2dbc.mssql.message.type.SqlServerType;
import io.r2dbc.mssql.message.type.TypeInformation;
import io.r2dbc.mssql.util.HexUtils;
import org.junit.platform.commons.annotation.Testable;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import java.util.UUID;
/**
* Benchmarks for {@code UuidCodec}.
*
* @author Mark Paluch
*/
@State(Scope.Thread)
@Testable
public class UuidCodecBenchmarks extends CodecBenchmarkSupport {
private static final DefaultCodecs codecs = new DefaultCodecs();
private static final Column column = new Column(0, "",
TypeInformation.builder().withMaxLength(16).withLengthStrategy(LengthStrategy.FIXEDLENTYPE).withPrecision(16).withServerType(SqlServerType.GUID).build());
private final ByteBuf buffer = HexUtils.decodeToByteBuf("F17B0DC7C7E5C54098C7A12F7E686724");
private final UUID toEncode = UUID.fromString("C70D7BF1-E5C7-40C5-98C7-A12F7E686724");
@Benchmark
public Object decode() {
this.buffer.readerIndex(0);
return codecs.decode(this.buffer, column, UUID.class);
}
@Benchmark
public Encoded encode() {
return doEncode(this.toEncode);
}
@Benchmark
public Encoded encodeNull() {
Encoded encoded = codecs.encodeNull(alloc, UUID.class);
encoded.dispose();
return encoded;
}
private Encoded doEncode(Object value) {
Encoded encoded = codecs.encode(alloc, RpcParameterContext.in(), value);
encoded.dispose();
return encoded;
}
}
================================================
FILE: src/main/java/io/r2dbc/mssql/AbstractMssqlException.java
================================================
/*
* Copyright 2018-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.spi.R2dbcException;
import reactor.util.annotation.Nullable;
/**
* Microsoft SQL Server-specific exception class.
*
* @author Mark Paluch
*/
public class AbstractMssqlException extends R2dbcException {
public static final int DRIVER_ERROR_NONE = 0;
public static final int DRIVER_ERROR_FROM_DATABASE = 2;
public static final int DRIVER_ERROR_IO_FAILED = 3;
public static final int DRIVER_ERROR_INVALID_TDS = 4;
public static final int DRIVER_ERROR_SSL_FAILED = 5;
public static final int DRIVER_ERROR_UNSUPPORTED_CONFIG = 6;
public static final int DRIVER_ERROR_INTERMITTENT_TLS_FAILED = 7;
public static final int ERROR_SOCKET_TIMEOUT = 8;
public static final int ERROR_QUERY_TIMEOUT = 9;
/**
* Creates a new exception.
*/
public AbstractMssqlException() {
this((String) null);
}
/**
* Creates a new exception.
*
* @param reason the reason for the error. Set as the exception's message and retrieved with {@link #getMessage()}.
*/
public AbstractMssqlException(@reactor.util.annotation.Nullable String reason) {
this(reason, (String) null);
}
/**
* Creates a new exception.
*
* @param reason the reason for the error. Set as the exception's message and retrieved with {@link #getMessage()}.
* @param sqlState the "SQLstate" string, which follows either the XOPEN SQLstate conventions or the SQL:2003 conventions
*/
public AbstractMssqlException(@Nullable String reason, @Nullable String sqlState) {
this(reason, sqlState, 0);
}
/**
* Creates a new exception.
*
* @param reason the reason for the error. Set as the exception's message and retrieved with {@link #getMessage()}.
* @param sqlState the "SQLstate" string, which follows either the XOPEN SQLstate conventions or the SQL:2003 conventions
* @param errorCode a vendor-specific error code representing this failure
*/
public AbstractMssqlException(@Nullable String reason, @Nullable String sqlState, int errorCode) {
this(reason, sqlState, errorCode, null);
}
/**
* Creates a new exception.
*
* @param reason the reason for the error. Set as the exception's message and retrieved with {@link #getMessage()}.
* @param sqlState the "SQLstate" string, which follows either the XOPEN SQLstate conventions or the SQL:2003 conventions
* @param errorCode a vendor-specific error code representing this failure
* @param cause the cause
*/
public AbstractMssqlException(@Nullable String reason, @Nullable String sqlState, int errorCode, @Nullable Throwable cause) {
super(reason, sqlState, errorCode, cause);
}
/**
* Creates a new exception.
*
* @param reason the reason for the error. Set as the exception's message and retrieved with {@link #getMessage()}.
* @param sqlState the "SQLstate" string, which follows either the XOPEN SQLstate conventions or the SQL:2003 conventions
* @param cause the cause
*/
public AbstractMssqlException(@Nullable String reason, @Nullable String sqlState, @Nullable Throwable cause) {
this(reason, sqlState, 0, cause);
}
/**
* Creates a new exception.
*
* @param reason the reason for the error. Set as the exception's message and retrieved with {@link #getMessage()}.
* @param cause the cause
*/
public AbstractMssqlException(@Nullable String reason, @Nullable Throwable cause) {
this(reason, null, cause);
}
/**
* Creates a new exception.
*
* @param cause the cause
*/
public AbstractMssqlException(@Nullable Throwable cause) {
this(null, cause);
}
}
================================================
FILE: src/main/java/io/r2dbc/mssql/Binding.java
================================================
/*
* Copyright 2018-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.mssql.codec.Encoded;
import io.r2dbc.mssql.codec.RpcDirection;
import io.r2dbc.mssql.util.Assert;
import reactor.util.annotation.Nullable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.BiConsumer;
/**
* A collection of {@link Encoded encoded parameters} for a single bind invocation of a prepared statement.
* Bindings for Microsoft SQL Server are name-based and names are handled without the prefixing at-sign. The at sign is added during encoding.
*
* @author Mark Paluch
*/
class Binding {
private final Map<String, RpcParameter> parameters = new LinkedHashMap<>();
private boolean hasOutParameters = false;
@Nullable
private volatile String formalRepresentation;
/**
* Add a {@link Encoded encoded parameter} to the binding.
*
* @param name the name of the {@link Encoded encoded parameter}
* @param direction the direction of the encoded parameter
* @param parameter the {@link Encoded encoded parameter}
* @return this {@link Binding}
*/
public Binding add(String name, RpcDirection direction, Encoded parameter) {
Assert.requireNonNull(name, "Name must not be null");
Assert.requireNonNull(direction, "RpcDirection must not be null");
Assert.requireNonNull(parameter, "Parameter must not be null");
this.formalRepresentation = null;
this.parameters.put(name, new RpcParameter(direction, parameter));
if (direction == RpcDirection.OUT) {
this.hasOutParameters = true;
}
return this;
}
/**
* Returns parameter names of the return values.
*
* @return
*/
boolean hasOutParameters() {
return this.hasOutParameters;
}
/**
* Clear/release binding values.
*/
void clear() {
this.parameters.forEach((s, parameter) -> {
if (!parameter.encoded.isDisposed()) {
parameter.encoded.dispose();
}
});
this.parameters.clear();
}
/**
* Returns a formal representation of the bound parameters such as {@literal @P0 VARCHAR(8000), @P1 DECIMAL(12,6)}
*
* @return a formal representation of the bound parameters.
*/
public String getFormalParameters() {
String formalRepresentation = this.formalRepresentation;
if (formalRepresentation != null) {
return formalRepresentation;
}
StringBuilder builder = new StringBuilder(this.parameters.size() * 16);
Set<Map.Entry<String, RpcParameter>> entries = this.parameters.entrySet();
for (Map.Entry<String, RpcParameter> entry : entries) {
if (builder.length() != 0) {
builder.append(',');
}
builder.append('@').append(entry.getKey()).append(' ').append(entry.getValue().encoded.getFormalType());
if (entry.getValue().rpcDirection == RpcDirection.OUT) {
builder.append(" OUTPUT");
}
}
formalRepresentation = builder.toString();
this.formalRepresentation = formalRepresentation;
return formalRepresentation;
}
/**
* Performs the given action for each entry in this binding until all bound parameters
* have been processed or the action throws an exception. Unless
* otherwise specified by the implementing class, actions are performed in
* the order of entry set iteration (if an iteration order is specified.)
*
* @param action The action to be performed for each bound parameter.
*/
public void forEach(BiConsumer<String, RpcParameter> action) {
Assert.requireNonNull(action, "Action must not be null");
this.parameters.forEach(action);
}
Map<String, RpcParameter> getParameters() {
return this.parameters;
}
/**
* Returns whether this {@link Binding} is empty (i.e. no parameters bound).
*
* @return {@code true} if no parameters were bound.
*/
public boolean isEmpty() {
return this.parameters.isEmpty();
}
/**
* Returns the number of bound parameters.
*
* @return the number of bound parameters.
*/
int size() {
return this.parameters.size();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Binding that = (Binding) o;
return Objects.equals(this.parameters, that.parameters);
}
@Override
public int hashCode() {
return Objects.hash(this.parameters);
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer();
sb.append(getClass().getSimpleName());
sb.append(" [parameters=").append(this.parameters);
sb.append(']');
return sb.toString();
}
public static class RpcParameter {
final RpcDirection rpcDirection;
final Encoded encoded;
public RpcParameter(RpcDirection rpcDirection, Encoded encoded) {
this.rpcDirection = rpcDirection;
this.encoded = encoded;
}
}
}
================================================
FILE: src/main/java/io/r2dbc/mssql/ConnectionOptions.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.mssql.codec.Codecs;
import reactor.util.annotation.Nullable;
import java.time.Duration;
import java.util.function.Predicate;
/**
* @author Mark Paluch
*/
class ConnectionOptions {
private final Predicate<String> preferCursoredExecution;
private final Codecs codecs;
private final PreparedStatementCache preparedStatementCache;
private final boolean sendStringParametersAsUnicode;
private volatile Duration statementTimeout = Duration.ZERO;
ConnectionOptions(Predicate<String> preferCursoredExecution, Codecs codecs, PreparedStatementCache preparedStatementCache, boolean sendStringParametersAsUnicode) {
this.preferCursoredExecution = preferCursoredExecution;
this.codecs = codecs;
this.preparedStatementCache = preparedStatementCache;
this.sendStringParametersAsUnicode = sendStringParametersAsUnicode;
}
public Codecs getCodecs() {
return this.codecs;
}
public PreparedStatementCache getPreparedStatementCache() {
return this.preparedStatementCache;
}
public boolean prefersCursors(String sql) {
return this.preferCursoredExecution.test(sql);
}
public boolean isSendStringParametersAsUnicode() {
return this.sendStringParametersAsUnicode;
}
public Duration getStatementTimeout() {
return this.statementTimeout;
}
public void setStatementTimeout(@Nullable Duration statementTimeout) {
this.statementTimeout = statementTimeout;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer();
sb.append(getClass().getSimpleName());
sb.append(" [preferCursoredExecution=").append(this.preferCursoredExecution);
sb.append(", codecs=").append(this.codecs);
sb.append(", preparedStatementCache=").append(this.preparedStatementCache);
sb.append(", sendStringParametersAsUnicode=").append(this.sendStringParametersAsUnicode);
sb.append(", statementTimeout=").append(this.statementTimeout);
sb.append(']');
return sb.toString();
}
}
================================================
FILE: src/main/java/io/r2dbc/mssql/DefaultMssqlResult.java
================================================
/*
* Copyright 2018-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.netty.util.ReferenceCountUtil;
import io.r2dbc.mssql.client.ConnectionContext;
import io.r2dbc.mssql.codec.Codecs;
import io.r2dbc.mssql.message.token.AbstractDoneToken;
import io.r2dbc.mssql.message.token.ColumnMetadataToken;
import io.r2dbc.mssql.message.token.ErrorToken;
import io.r2dbc.mssql.message.token.NbcRowToken;
import io.r2dbc.mssql.message.token.ReturnValue;
import io.r2dbc.mssql.message.token.RowToken;
import io.r2dbc.mssql.util.Assert;
import io.r2dbc.spi.Readable;
import io.r2dbc.spi.Result;
import io.r2dbc.spi.Row;
import io.r2dbc.spi.RowMetadata;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.util.Logger;
import reactor.util.Loggers;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
/**
* {@link Result} of query results.
*
* @author Mark Paluch
*/
final class DefaultMssqlResult implements MssqlResult {
private static final Logger LOGGER = Loggers.getLogger(DefaultMssqlResult.class);
public static final boolean DEBUG_ENABLED = LOGGER.isDebugEnabled();
private final String sql;
private final ConnectionContext context;
private final Codecs codecs;
private final Flux<io.r2dbc.mssql.message.Message> messages;
private final boolean expectReturnValues;
private volatile MssqlRowMetadata rowMetadata;
private DefaultMssqlResult(String sql, ConnectionContext context, Codecs codecs, Flux<io.r2dbc.mssql.message.Message> messages, boolean expectReturnValues) {
this.sql = sql;
this.context = context;
this.codecs = codecs;
this.messages = messages;
this.expectReturnValues = expectReturnValues;
}
/**
* Create a {@link DefaultMssqlResult}.
*
* @param sql the underlying SQL statement.
* @param codecs the codecs to use.
* @param messages message stream.
* @param expectReturnValues {@code true} if the result is expected to have result values.
* @return {@link Result} object.
*/
static MssqlResult toResult(String sql, ConnectionContext context, Codecs codecs, Flux<io.r2dbc.mssql.message.Message> messages, boolean expectReturnValues) {
Assert.requireNonNull(sql, "SQL must not be null");
Assert.requireNonNull(codecs, "Codecs must not be null");
Assert.requireNonNull(context, "ConnectionContext must not be null");
Assert.requireNonNull(messages, "Messages must not be null");
LOGGER.debug(context.getMessage("Creating new result"));
return new DefaultMssqlResult(sql, context, codecs, messages, expectReturnValues);
}
@Override
public Mono<Long> getRowsUpdated() {
return this.messages
.<Long>handle((message, sink) -> {
if (message instanceof AbstractDoneToken) {
AbstractDoneToken doneToken = (AbstractDoneToken) message;
if (doneToken.hasCount()) {
if (DEBUG_ENABLED) {
LOGGER.debug(this.context.getMessage("Incoming row count: {}"), doneToken);
}
sink.next(doneToken.getRowCount());
}
if (doneToken.isAttentionAck()) {
sink.error(new ExceptionFactory.MssqlStatementCancelled(this.sql));
return;
}
}
if (message instanceof ErrorToken) {
sink.error(ExceptionFactory.createException((ErrorToken) message, this.sql));
return;
}
ReferenceCountUtil.release(message);
}).reduce(Long::sum);
}
@Override
public <T> Flux<T> map(BiFunction<Row, RowMetadata, ? extends T> mappingFunction) {
Assert.requireNonNull(mappingFunction, "Mapping function must not be null");
return doMap(true, false, readable -> {
Row row = (Row) readable;
return mappingFunction.apply(row, row.getMetadata());
});
}
@Override
public <T> Publisher<T> map(Function<? super Readable, ? extends T> mappingFunction) {
Assert.requireNonNull(mappingFunction, "Mapping function must not be null");
return doMap(true, true, mappingFunction);
}
private <T> Flux<T> doMap(boolean rows, boolean outparameters, Function<? super Readable, ? extends T> mappingFunction) {
Flux<T> mappedReturnValues = Flux.empty();
Flux<io.r2dbc.mssql.message.Message> messages = this.messages;
if (this.expectReturnValues && outparameters) {
List<ReturnValue> returnValues = new ArrayList<>();
messages = messages.doOnNext(message -> {
if (message instanceof ReturnValue) {
returnValues.add((ReturnValue) message);
}
}).filter(it -> !(it instanceof ReturnValue));
mappedReturnValues = Flux.defer(() -> {
if (returnValues.size() != 0) {
MssqlReturnValues mssqlReturnValues = MssqlReturnValues.toReturnValues(this.codecs, returnValues);
try {
return Flux.just(mappingFunction.apply(mssqlReturnValues));
} finally {
mssqlReturnValues.release();
}
}
return Flux.empty();
});
}
Flux<T> mapped = messages
.handle((message, sink) -> {
if (message instanceof AbstractDoneToken) {
AbstractDoneToken doneToken = (AbstractDoneToken) message;
if (doneToken.isAttentionAck()) {
sink.error(new ExceptionFactory.MssqlStatementCancelled(this.sql));
return;
}
}
if (message.getClass() == ColumnMetadataToken.class) {
ColumnMetadataToken token = (ColumnMetadataToken) message;
if (!token.hasColumns()) {
return;
}
if (DEBUG_ENABLED) {
LOGGER.debug(this.context.getMessage("Result column definition: {}"), message);
}
this.rowMetadata = MssqlRowMetadata.create(this.codecs, token);
return;
}
if (rows && (message.getClass() == RowToken.class || message.getClass() == NbcRowToken.class)) {
MssqlRowMetadata rowMetadata = this.rowMetadata;
if (rowMetadata == null) {
sink.error(new IllegalStateException("No MssqlRowMetadata available"));
return;
}
MssqlRow row = MssqlRow.toRow(this.codecs, (RowToken) message, rowMetadata);
try {
sink.next(mappingFunction.apply(row));
} finally {
row.release();
}
return;
}
if (message instanceof ErrorToken) {
sink.error(ExceptionFactory.createException((ErrorToken) message, this.sql));
return;
}
if (this.expectReturnValues && message instanceof ReturnValue) {
return;
}
ReferenceCountUtil.release(message);
});
if (this.expectReturnValues) {
mapped = mapped.concatWith(mappedReturnValues);
}
return mapped;
}
@Override
public MssqlResult filter(Predicate<Segment> filter) {
return MssqlSegmentResult.toResult(this.sql, this.context, this.codecs, this.messages, this.expectReturnValues).filter(filter);
}
@Override
public <T> Flux<T> flatMap(Function<Segment, ? extends Publisher<? extends T>> mappingFunction) {
return MssqlSegmentResult.toResult(this.sql, this.context, this.codecs, this.messages, this.expectReturnValues).flatMap(mappingFunction);
}
}
================================================
FILE: src/main/java/io/r2dbc/mssql/ErrorDetails.java
================================================
/*
* Copyright 2019-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.r2dbc.mssql;
import io.r2dbc.mssql.message.token.ErrorToken;
import io.r2dbc.mssql.message.token.InfoToken;
import io.r2dbc.mssql.util.StringUtils;
import reactor.util.annotation.Nullable;
/**
* Details for an Error.
*
* @author Mark Paluch
* @see ErrorToken
* @see InfoToken
*/
public final class ErrorDetails {
/**
* Error message.
*/
private final String message;
/**
* Info number.
*/
private final long number;
/**
* The error state, used as a modifier to the info Number.
*/
private final int state;
/**
* The class (severity) of the error. A class of less than 10 indicates an informational message.
*/
private final int infoClass;
/**
* The server name length and server name using B_VARCHAR format.
*/
@Nullable
private final String serverName;
/**
* The stored procedure name length and stored procedure name using B_VARCHAR format.
*/
@Nullable
private final String procName;
/**
* The line number in the SQL batch or stored procedure that caused the error.
* Line numbers begin at 1; therefore, if the line number is not applicable to the message as determined by the upper
* layer, the value of LineNumber will be 0.
*/
private final long lineNumber;
/**
* Create {@link ErrorDetails}.
*
* @param message the exception message.
* @param number the error number.
* @param state SQL state.
* @param infoClass message classification.
* @param serverName name of the server.
* @param procName procedure name.
* @param lineNumber line number in the offending SQL.
*/
public ErrorDetails(String message, long number, int state, int infoClass, String serverName, String procName,
long lineNumber) {
this.message = message;
this.number = number;
this.state = state;
this.infoClass = infoClass;
this.serverName = StringUtils.hasText(serverName) ? serverName : null;
this.procName = procName;
this.lineNumber = lineNumber;
}
/**
* Returns the error message.
*
* @return the error message.
*/
public String getMessage() {
return this.message;
}
/**
* Returns the message number.
*
* @return the message number.
*/
public long getNumber() {
return this.number;
}
/**
* The error state, used as a modifier to the message number.
*
* @return the error state.
*/
public int getState() {
return this.state;
}
/**
* The error state code.
*
* @return the error state.
*/
public String getStateCode() {
return getStateCode((int) getNumber(), getState());
}
/**
* Returns the severity class of this {@link ErrorDetails}.
*
* @return severity class of this {@link ErrorDetails}.
*/
public int getInfoClass() {
return this.infoClass;
}
/**
* Returns the server name.
*
* @return the server name.
*/
@Nullable
public String getServerName() {
return this.serverName;
}
/**
* Returns the procedure name.
*
* @return the procedure name.
*/
@Nullable
public String getProcName() {
return this.procName;
}
/**
* The line number in the SQL batch or stored procedure that caused the error. Line numbers begin at 1; therefore, if the line number is not applicable to the message as determined by the upper
* layer, the value of LineNumber will be 0.
*
* @return the line number in the SQL batch.
*/
public long getLineNumber() {
return this.lineNumber;
}
private String getStateCode(int errNum, int databaseState) {
switch (errNum) {
// case 18456: return "08001"; //username password wrong at login
case 8152:
return "22001"; // String data right truncation
case 515: // 2.2705
case 547:
retu
gitextract_rm82x0ys/
├── .github/
│ └── workflows/
│ ├── ci.yml
│ ├── pullrequests.yml
│ └── release.yml
├── .gitignore
├── .mvn/
│ └── wrapper/
│ ├── MavenWrapperDownloader.java
│ └── maven-wrapper.properties
├── .travis.yml
├── CHANGELOG
├── LICENSE
├── NOTICE
├── README.md
├── ci/
│ └── build-and-deploy-to-maven-central.sh
├── intellij-style.xml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── settings.xml
└── src/
├── jmh/
│ └── java/
│ └── io/
│ └── r2dbc/
│ └── mssql/
│ ├── BenchmarkSettings.java
│ ├── ParametrizedMssqlStatementBenchmarks.java
│ ├── PooledBenchmarks.java
│ ├── StagedResultSizeBenchmarks.java
│ ├── StatementBenchmarks.java
│ └── codec/
│ ├── BinaryCodecBenchmarks.java
│ ├── BooleanCodecBenchmarks.java
│ ├── ByteCodecBenchmarks.java
│ ├── CodecBenchmarkSupport.java
│ ├── DecimalCodecBenchmarks.java
│ ├── DoubleCodecBenchmarks.java
│ ├── IntegerCodecBenchmarks.java
│ ├── LocalDateCodecBenchmarks.java
│ ├── LocalDateTimeCodecBenchmarks.java
│ ├── LocalTimeCodecBenchmarks.java
│ ├── LongCodecBenchmarks.java
│ ├── MoneyCodecBenchmarks.java
│ ├── ShortCodecBenchmarks.java
│ ├── StringCodecBenchmarks.java
│ └── UuidCodecBenchmarks.java
├── main/
│ ├── java/
│ │ └── io/
│ │ └── r2dbc/
│ │ └── mssql/
│ │ ├── AbstractMssqlException.java
│ │ ├── Binding.java
│ │ ├── ConnectionOptions.java
│ │ ├── DefaultMssqlResult.java
│ │ ├── ErrorDetails.java
│ │ ├── EscapeAwareNameMatcher.java
│ │ ├── ExceptionFactory.java
│ │ ├── GeneratedValues.java
│ │ ├── IndefinitePreparedStatementCache.java
│ │ ├── LoginConfiguration.java
│ │ ├── LoginFlow.java
│ │ ├── MssqlBatch.java
│ │ ├── MssqlColumnMetadata.java
│ │ ├── MssqlConnection.java
│ │ ├── MssqlConnectionConfiguration.java
│ │ ├── MssqlConnectionFactory.java
│ │ ├── MssqlConnectionFactoryMetadata.java
│ │ ├── MssqlConnectionFactoryProvider.java
│ │ ├── MssqlConnectionMetadata.java
│ │ ├── MssqlException.java
│ │ ├── MssqlIsolationLevel.java
│ │ ├── MssqlResult.java
│ │ ├── MssqlReturnValues.java
│ │ ├── MssqlReturnValuesMetadata.java
│ │ ├── MssqlRow.java
│ │ ├── MssqlRowMetadata.java
│ │ ├── MssqlSegmentResult.java
│ │ ├── MssqlStatement.java
│ │ ├── MssqlStatementSupport.java
│ │ ├── NamedCollectionSupport.java
│ │ ├── OptionMapper.java
│ │ ├── ParametrizedMssqlStatement.java
│ │ ├── PreparedStatementCache.java
│ │ ├── QueryLogger.java
│ │ ├── QueryMessageFlow.java
│ │ ├── RpcQueryMessageFlow.java
│ │ ├── SimpleMssqlStatement.java
│ │ ├── api/
│ │ │ ├── MssqlTransactionDefinition.java
│ │ │ ├── SimpleTransactionDefinition.java
│ │ │ └── package-info.java
│ │ ├── client/
│ │ │ ├── Client.java
│ │ │ ├── ClientConfiguration.java
│ │ │ ├── ConnectionContext.java
│ │ │ ├── ConnectionState.java
│ │ │ ├── DisabledSslTunnel.java
│ │ │ ├── EnvironmentChangeEvent.java
│ │ │ ├── EnvironmentChangeListener.java
│ │ │ ├── MessageDecoder.java
│ │ │ ├── ReactorNettyClient.java
│ │ │ ├── StreamDecoder.java
│ │ │ ├── TdsEncoder.java
│ │ │ ├── TransactionStatus.java
│ │ │ ├── package-info.java
│ │ │ └── ssl/
│ │ │ ├── ContextProxy.java
│ │ │ ├── ExpectedHostnameX509TrustManager.java
│ │ │ ├── HostNamePredicate.java
│ │ │ ├── SslConfiguration.java
│ │ │ ├── SslEventHandler.java
│ │ │ ├── SslState.java
│ │ │ ├── TdsSslHandler.java
│ │ │ ├── TrustAllTrustManager.java
│ │ │ ├── X509CertificateUtil.java
│ │ │ └── package-info.java
│ │ ├── codec/
│ │ │ ├── AbstractCodec.java
│ │ │ ├── AbstractNumericCodec.java
│ │ │ ├── BigIntegerCodec.java
│ │ │ ├── BinaryCodec.java
│ │ │ ├── BlobCodec.java
│ │ │ ├── BooleanCodec.java
│ │ │ ├── ByteArray.java
│ │ │ ├── ByteCodec.java
│ │ │ ├── CharacterEncoder.java
│ │ │ ├── ClobCodec.java
│ │ │ ├── Codec.java
│ │ │ ├── Codecs.java
│ │ │ ├── DecimalCodec.java
│ │ │ ├── Decodable.java
│ │ │ ├── DefaultCodecs.java
│ │ │ ├── DoubleCodec.java
│ │ │ ├── Encoded.java
│ │ │ ├── FloatCodec.java
│ │ │ ├── IntegerCodec.java
│ │ │ ├── LocalDateCodec.java
│ │ │ ├── LocalDateTimeCodec.java
│ │ │ ├── LocalTimeCodec.java
│ │ │ ├── LongCodec.java
│ │ │ ├── MoneyCodec.java
│ │ │ ├── OffsetDateTimeCodec.java
│ │ │ ├── PlpEncoded.java
│ │ │ ├── PlpEncodedCharacters.java
│ │ │ ├── RpcDirection.java
│ │ │ ├── RpcEncoding.java
│ │ │ ├── RpcParameterContext.java
│ │ │ ├── ShortCodec.java
│ │ │ ├── StringCodec.java
│ │ │ ├── TimestampCodec.java
│ │ │ ├── UuidCodec.java
│ │ │ ├── ZonedDateTimeCodec.java
│ │ │ └── package-info.java
│ │ ├── message/
│ │ │ ├── ClientMessage.java
│ │ │ ├── Message.java
│ │ │ ├── TDSVersion.java
│ │ │ ├── TransactionDescriptor.java
│ │ │ ├── header/
│ │ │ │ ├── DefaultHeaderOptions.java
│ │ │ │ ├── Header.java
│ │ │ │ ├── HeaderOptions.java
│ │ │ │ ├── PacketIdProvider.java
│ │ │ │ ├── Status.java
│ │ │ │ └── Type.java
│ │ │ ├── package-info.java
│ │ │ ├── tds/
│ │ │ │ ├── ContextualTdsFragment.java
│ │ │ │ ├── Decode.java
│ │ │ │ ├── Encode.java
│ │ │ │ ├── FirstTdsFragment.java
│ │ │ │ ├── LastTdsFragment.java
│ │ │ │ ├── ProtocolException.java
│ │ │ │ ├── Redirect.java
│ │ │ │ ├── ServerCharset.java
│ │ │ │ ├── TdsFragment.java
│ │ │ │ ├── TdsPacket.java
│ │ │ │ ├── TdsPackets.java
│ │ │ │ └── package-info.java
│ │ │ ├── token/
│ │ │ │ ├── AbstractDataToken.java
│ │ │ │ ├── AbstractDoneToken.java
│ │ │ │ ├── AbstractInfoToken.java
│ │ │ │ ├── AllHeaders.java
│ │ │ │ ├── Attention.java
│ │ │ │ ├── ColInfoToken.java
│ │ │ │ ├── Column.java
│ │ │ │ ├── ColumnMetadataToken.java
│ │ │ │ ├── DataToken.java
│ │ │ │ ├── DoneInProcToken.java
│ │ │ │ ├── DoneProcToken.java
│ │ │ │ ├── DoneToken.java
│ │ │ │ ├── EnvChangeToken.java
│ │ │ │ ├── ErrorToken.java
│ │ │ │ ├── FeatureExtAckToken.java
│ │ │ │ ├── Identifier.java
│ │ │ │ ├── InfoToken.java
│ │ │ │ ├── Login7.java
│ │ │ │ ├── LoginAckToken.java
│ │ │ │ ├── NbcRowToken.java
│ │ │ │ ├── OrderToken.java
│ │ │ │ ├── Prelogin.java
│ │ │ │ ├── ReturnStatus.java
│ │ │ │ ├── ReturnValue.java
│ │ │ │ ├── RowToken.java
│ │ │ │ ├── RpcRequest.java
│ │ │ │ ├── SqlBatch.java
│ │ │ │ ├── TabnameToken.java
│ │ │ │ ├── Tabular.java
│ │ │ │ ├── TokenStream.java
│ │ │ │ └── package-info.java
│ │ │ └── type/
│ │ │ ├── AbstractTypeDecoderStrategy.java
│ │ │ ├── Collation.java
│ │ │ ├── Length.java
│ │ │ ├── LengthStrategy.java
│ │ │ ├── MutableTypeInformation.java
│ │ │ ├── PlpLength.java
│ │ │ ├── SqlServerType.java
│ │ │ ├── TdsDataType.java
│ │ │ ├── TypeBuilder.java
│ │ │ ├── TypeDecoderStrategies.java
│ │ │ ├── TypeDecoderStrategy.java
│ │ │ ├── TypeInformation.java
│ │ │ ├── TypeUtils.java
│ │ │ └── package-info.java
│ │ ├── package-info.java
│ │ └── util/
│ │ ├── Assert.java
│ │ ├── DriverVersion.java
│ │ ├── FluxDiscardOnCancel.java
│ │ ├── Operators.java
│ │ ├── PredicateUtils.java
│ │ ├── ReferenceCountUtil.java
│ │ ├── StringUtils.java
│ │ ├── Version.java
│ │ └── package-info.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── io.r2dbc.spi.ConnectionFactoryProvider
└── test/
├── java/
│ └── io/
│ └── r2dbc/
│ └── mssql/
│ ├── BindingUnitTests.java
│ ├── CodecIntegrationTests.java
│ ├── ColumnMetadataIntegrationTests.java
│ ├── ConcurrentAccessIntegrationTests.java
│ ├── EscapeAwareNameMatcherUnitTests.java
│ ├── ExceptionFactoryUnitTests.java
│ ├── GeneratedValuesUnitTests.java
│ ├── IndefinitePreparedStatementCacheUnitTests.java
│ ├── JsonIntegrationTests.java
│ ├── LobIntegrationTests.java
│ ├── LoginFlowUnitTests.java
│ ├── MssqlBatchIntegrationTests.java
│ ├── MssqlBatchUnitTests.java
│ ├── MssqlCancelIntegrationTests.java
│ ├── MssqlConnectionConfigurationUnitTests.java
│ ├── MssqlConnectionFactoryMetadataUnitTests.java
│ ├── MssqlConnectionFactoryProviderTest.java
│ ├── MssqlConnectionFactoryUnitTests.java
│ ├── MssqlConnectionIntegrationTests.java
│ ├── MssqlConnectionMetadataUnitTests.java
│ ├── MssqlConnectionUnitTests.java
│ ├── MssqlResultUnitTests.java
│ ├── MssqlReturnValuesUnitTests.java
│ ├── MssqlRowMetadataUnitTests.java
│ ├── MssqlRowUnitTests.java
│ ├── MssqlSegmentResultUnitTests.java
│ ├── MssqlTestKit.java
│ ├── ParametrizedMssqlStatementIntegrationTests.java
│ ├── ParametrizedMssqlStatementStoredProcedureIntegrationTests.java
│ ├── ParametrizedMssqlStatementUnitTests.java
│ ├── QueryMessageFlowUnitTests.java
│ ├── ReturnGeneratedValuesIntegrationTests.java
│ ├── RpcBlobUnitTests.java
│ ├── RpcQueryMessageFlowUnitTests.java
│ ├── SimpleMssqlStatementIntegrationTests.java
│ ├── SimpleMssqlStatementUnitTests.java
│ ├── SqlVariantIntegrationTests.java
│ ├── TestConnectionOptions.java
│ ├── TransactionIntegrationTests.java
│ ├── XmlIntegrationTests.java
│ ├── client/
│ │ ├── ConnectionStateUnitTests.java
│ │ ├── ReactorNettyClientIntegrationTests.java
│ │ ├── StreamDecoderUnitTests.java
│ │ ├── TdsEncoderUnitTests.java
│ │ ├── TestClient.java
│ │ └── ssl/
│ │ ├── HostNamePredicateUnitTests.java
│ │ ├── TdsSslHandlerUnitTests.java
│ │ └── X509CertificateUtilUnitTests.java
│ ├── codec/
│ │ ├── BigIntegerCodecUnitTests.java
│ │ ├── BinaryCodecUnitTests.java
│ │ ├── BlobCodecUnitTests.java
│ │ ├── BooleanCodecUnitTests.java
│ │ ├── ByteCodecUnitTests.java
│ │ ├── ClobCodecUnitTests.java
│ │ ├── ColumnUtil.java
│ │ ├── DecimalCodecUnitTests.java
│ │ ├── DoubleCodecUnitTests.java
│ │ ├── EncodedUnitTests.java
│ │ ├── FloatCodecUnitTests.java
│ │ ├── IntegerCodecUnitTests.java
│ │ ├── LocalDateCodecUnitTests.java
│ │ ├── LocalDateTimeCodecUnitTests.java
│ │ ├── LocalTimeCodecUnitTests.java
│ │ ├── LongCodecUnitTests.java
│ │ ├── MoneyCodecUnitTests.java
│ │ ├── OffsetDateTimeCodecUnitTests.java
│ │ ├── PlpEncodedUnitTests.java
│ │ ├── RpcEncodingUnitTests.java
│ │ ├── ShortCodecUnitTests.java
│ │ ├── StringCodecUnitTests.java
│ │ ├── TimestampCodecUnitTests.java
│ │ ├── UuidCodecUnitTests.java
│ │ └── ZonedDateTimeCodecUnitTests.java
│ ├── message/
│ │ ├── TDSVersionUnitTests.java
│ │ ├── header/
│ │ │ ├── HeaderUnitTests.java
│ │ │ ├── StatusUnitTests.java
│ │ │ └── TypeUnitTests.java
│ │ ├── token/
│ │ │ ├── AllHeadersUnitTests.java
│ │ │ ├── CanDecodeTestSupport.java
│ │ │ ├── ColInfoTokenUnitTests.java
│ │ │ ├── ColumnMetadataTokenUnitTests.java
│ │ │ ├── DoneInProcUnitTests.java
│ │ │ ├── DoneProcUnitTests.java
│ │ │ ├── DoneTokenUnitTests.java
│ │ │ ├── EnvChangeTokenUnitTests.java
│ │ │ ├── ErrorTokenUnitTests.java
│ │ │ ├── FeatureExtAckTokenUnitTests.java
│ │ │ ├── IdentifierUnitTests.java
│ │ │ ├── InfoTokenUnitTests.java
│ │ │ ├── Login7UnitTests.java
│ │ │ ├── LoginAckTokenUnitTests.java
│ │ │ ├── NbcRowTokenUnitTests.java
│ │ │ ├── OrderTokenUnitTests.java
│ │ │ ├── PreloginUnitTests.java
│ │ │ ├── ReturnValueUnitTests.java
│ │ │ ├── RowTokenFactory.java
│ │ │ ├── RowTokenUnitTests.java
│ │ │ ├── RpcRequestUnitTests.java
│ │ │ ├── SqlBatchUnitTests.java
│ │ │ ├── TabnameTokenUnitTests.java
│ │ │ └── TabularUnitTests.java
│ │ └── type/
│ │ ├── CollationUnitTests.java
│ │ └── TypeBuilderUnitTests.java
│ └── util/
│ ├── ClientMessageAssert.java
│ ├── EmbeddedChannelAssert.java
│ ├── EncodedAssert.java
│ ├── FluxDiscardOnCancelUnitTests.java
│ ├── HexUtils.java
│ ├── IntegrationTestSupport.java
│ ├── MsSqlServerExtension.java
│ ├── TestByteBufAllocator.java
│ └── Types.java
└── resources/
├── int-varcharmax-data.txt
└── logback-test.xml
Showing preview only (230K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2966 symbols across 300 files)
FILE: .mvn/wrapper/MavenWrapperDownloader.java
class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
method main (line 48) | public static void main(String args[]) {
method downloadFileFromURL (line 97) | private static void downloadFileFromURL(String urlString, File destina...
FILE: src/jmh/java/io/r2dbc/mssql/BenchmarkSettings.java
class BenchmarkSettings (line 33) | @Warmup(iterations = 5, time = 2000, timeUnit = TimeUnit.MILLISECONDS)
FILE: src/jmh/java/io/r2dbc/mssql/ParametrizedMssqlStatementBenchmarks.java
class ParametrizedMssqlStatementBenchmarks (line 32) | @Testable
method getHandle (line 39) | @Override
method putHandle (line 44) | @Override
method getParsedSql (line 48) | @Override
method size (line 53) | @Override
method parseSqlCached1Param (line 61) | @Benchmark
method parseSqlCached5Param (line 66) | @Benchmark
method parseSqlNonCached1Param (line 71) | @Benchmark
method parseSqlNonCached5Param (line 76) | @Benchmark
FILE: src/jmh/java/io/r2dbc/mssql/PooledBenchmarks.java
class PooledBenchmarks (line 46) | @BenchmarkMode(Mode.Throughput)
class ConnectionHolder (line 50) | @State(Scope.Benchmark)
method ConnectionHolder (line 57) | public ConnectionHolder() {
method simpleDirectJdbc (line 73) | @Benchmark
method simpleDirectR2dbc (line 91) | @Benchmark
FILE: src/jmh/java/io/r2dbc/mssql/StagedResultSizeBenchmarks.java
class StagedResultSizeBenchmarks (line 52) | @BenchmarkMode(Mode.Throughput)
class ConnectionHolder (line 56) | @State(Scope.Benchmark)
method ConnectionHolder (line 66) | public ConnectionHolder() {
method setup (line 82) | @Setup
method simpleDirectJdbc (line 103) | @Benchmark
method simpleDirectR2dbc (line 118) | @Benchmark
method simpleCursoredJdbc (line 130) | @Benchmark
method simpleCursoredR2dbc (line 146) | @Benchmark
method parametrizedDirectJdbc (line 156) | @Benchmark
method parametrizedDirectR2dbc (line 171) | @Benchmark
method preparedCursoredJdbc (line 182) | @Benchmark
method preparedCursoredR2dbc (line 198) | @Benchmark
FILE: src/jmh/java/io/r2dbc/mssql/StatementBenchmarks.java
class StatementBenchmarks (line 49) | @BenchmarkMode(Mode.Throughput)
class ConnectionHolder (line 53) | @State(Scope.Benchmark)
method ConnectionHolder (line 60) | public ConnectionHolder() {
method simpleDirectJdbc (line 91) | @Benchmark
method simpleDirectR2dbc (line 106) | @Benchmark
method simpleCursoredJdbc (line 118) | @Benchmark
method simpleCursoredR2dbc (line 133) | @Benchmark
method parametrizedDirectJdbc (line 143) | @Benchmark
method parametrizedDirectR2dbc (line 158) | @Benchmark
method preparedCursoredJdbc (line 169) | @Benchmark
method preparedCursoredR2dbc (line 184) | @Benchmark
FILE: src/jmh/java/io/r2dbc/mssql/codec/BinaryCodecBenchmarks.java
class BinaryCodecBenchmarks (line 37) | @State(Scope.Thread)
method decodeToByteArray (line 52) | @Benchmark
method decodeToByteBuffer (line 58) | @Benchmark
method encodeByteArray (line 64) | @Benchmark
method encodeByteBuffer (line 69) | @Benchmark
method encodeNull (line 75) | @Benchmark
method doEncode (line 82) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/BooleanCodecBenchmarks.java
class BooleanCodecBenchmarks (line 35) | @State(Scope.Thread)
method decode (line 46) | @Benchmark
method encode (line 52) | @Benchmark
method encodeNull (line 57) | @Benchmark
method doEncode (line 64) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/ByteCodecBenchmarks.java
class ByteCodecBenchmarks (line 35) | @State(Scope.Thread)
method decode (line 46) | @Benchmark
method encode (line 52) | @Benchmark
method encodeNull (line 57) | @Benchmark
method doEncode (line 64) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/CodecBenchmarkSupport.java
class CodecBenchmarkSupport (line 27) | public abstract class CodecBenchmarkSupport extends BenchmarkSettings {
FILE: src/jmh/java/io/r2dbc/mssql/codec/DecimalCodecBenchmarks.java
class DecimalCodecBenchmarks (line 37) | @State(Scope.Thread)
method decode (line 50) | @Benchmark
method encode (line 56) | @Benchmark
method encodeNull (line 61) | @Benchmark
method doEncode (line 68) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/DoubleCodecBenchmarks.java
class DoubleCodecBenchmarks (line 35) | @State(Scope.Thread)
method decodeDouble (line 48) | @Benchmark
method decodeFloat (line 54) | @Benchmark
method encode (line 60) | @Benchmark
method encodeNull (line 65) | @Benchmark
method doEncode (line 72) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/IntegerCodecBenchmarks.java
class IntegerCodecBenchmarks (line 35) | @State(Scope.Thread)
method decode (line 46) | @Benchmark
method encode (line 52) | @Benchmark
method encodeNull (line 57) | @Benchmark
method doEncode (line 64) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/LocalDateCodecBenchmarks.java
class LocalDateCodecBenchmarks (line 37) | @State(Scope.Thread)
method decode (line 50) | @Benchmark
method encode (line 56) | @Benchmark
method encodeNull (line 61) | @Benchmark
method doEncode (line 68) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/LocalDateTimeCodecBenchmarks.java
class LocalDateTimeCodecBenchmarks (line 37) | @State(Scope.Thread)
method decodeSmallDateTime (line 60) | @Benchmark
method decodeDateTime (line 66) | @Benchmark
method decodeDateTime2 (line 73) | @Benchmark
method encode (line 79) | @Benchmark
method encodeNull (line 84) | @Benchmark
method doEncode (line 91) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/LocalTimeCodecBenchmarks.java
class LocalTimeCodecBenchmarks (line 37) | @State(Scope.Thread)
method decode (line 50) | @Benchmark
method encode (line 56) | @Benchmark
method encodeNull (line 61) | @Benchmark
method doEncode (line 68) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/LongCodecBenchmarks.java
class LongCodecBenchmarks (line 35) | @State(Scope.Thread)
method decode (line 46) | @Benchmark
method encode (line 52) | @Benchmark
method encodeNull (line 57) | @Benchmark
method doEncode (line 64) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/MoneyCodecBenchmarks.java
class MoneyCodecBenchmarks (line 37) | @State(Scope.Thread)
method decode (line 50) | @Benchmark
FILE: src/jmh/java/io/r2dbc/mssql/codec/ShortCodecBenchmarks.java
class ShortCodecBenchmarks (line 35) | @State(Scope.Thread)
method decode (line 46) | @Benchmark
method encode (line 52) | @Benchmark
method encodeNull (line 57) | @Benchmark
method doEncode (line 64) | private Encoded doEncode(Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/StringCodecBenchmarks.java
class StringCodecBenchmarks (line 40) | @State(Scope.Thread)
method StringCodecBenchmarks (line 70) | public StringCodecBenchmarks() {
method decodeVarchar (line 88) | @Benchmark
method encodeVarchar (line 94) | @Benchmark
method decodeNVarchar (line 99) | @Benchmark
method encodeNvarchar (line 105) | @Benchmark
method decodeText (line 110) | @Benchmark
method decodeUuid (line 116) | @Benchmark
method encodeNull (line 122) | @Benchmark
method doEncode (line 129) | private Encoded doEncode(Collation collation, Object value) {
FILE: src/jmh/java/io/r2dbc/mssql/codec/UuidCodecBenchmarks.java
class UuidCodecBenchmarks (line 37) | @State(Scope.Thread)
method decode (line 50) | @Benchmark
method encode (line 56) | @Benchmark
method encodeNull (line 61) | @Benchmark
method doEncode (line 68) | private Encoded doEncode(Object value) {
FILE: src/main/java/io/r2dbc/mssql/AbstractMssqlException.java
class AbstractMssqlException (line 27) | public class AbstractMssqlException extends R2dbcException {
method AbstractMssqlException (line 50) | public AbstractMssqlException() {
method AbstractMssqlException (line 59) | public AbstractMssqlException(@reactor.util.annotation.Nullable String...
method AbstractMssqlException (line 69) | public AbstractMssqlException(@Nullable String reason, @Nullable Strin...
method AbstractMssqlException (line 80) | public AbstractMssqlException(@Nullable String reason, @Nullable Strin...
method AbstractMssqlException (line 92) | public AbstractMssqlException(@Nullable String reason, @Nullable Strin...
method AbstractMssqlException (line 103) | public AbstractMssqlException(@Nullable String reason, @Nullable Strin...
method AbstractMssqlException (line 113) | public AbstractMssqlException(@Nullable String reason, @Nullable Throw...
method AbstractMssqlException (line 122) | public AbstractMssqlException(@Nullable Throwable cause) {
FILE: src/main/java/io/r2dbc/mssql/Binding.java
class Binding (line 36) | class Binding {
method add (line 53) | public Binding add(String name, RpcDirection direction, Encoded parame...
method hasOutParameters (line 72) | boolean hasOutParameters() {
method clear (line 79) | void clear() {
method getFormalParameters (line 95) | public String getFormalParameters() {
method forEach (line 132) | public void forEach(BiConsumer<String, RpcParameter> action) {
method getParameters (line 139) | Map<String, RpcParameter> getParameters() {
method isEmpty (line 148) | public boolean isEmpty() {
method size (line 157) | int size() {
method equals (line 161) | @Override
method hashCode (line 173) | @Override
method toString (line 178) | @Override
class RpcParameter (line 187) | public static class RpcParameter {
method RpcParameter (line 193) | public RpcParameter(RpcDirection rpcDirection, Encoded encoded) {
FILE: src/main/java/io/r2dbc/mssql/ConnectionOptions.java
class ConnectionOptions (line 28) | class ConnectionOptions {
method ConnectionOptions (line 40) | ConnectionOptions(Predicate<String> preferCursoredExecution, Codecs co...
method getCodecs (line 47) | public Codecs getCodecs() {
method getPreparedStatementCache (line 51) | public PreparedStatementCache getPreparedStatementCache() {
method prefersCursors (line 55) | public boolean prefersCursors(String sql) {
method isSendStringParametersAsUnicode (line 59) | public boolean isSendStringParametersAsUnicode() {
method getStatementTimeout (line 63) | public Duration getStatementTimeout() {
method setStatementTimeout (line 67) | public void setStatementTimeout(@Nullable Duration statementTimeout) {
method toString (line 71) | @Override
FILE: src/main/java/io/r2dbc/mssql/DefaultMssqlResult.java
class DefaultMssqlResult (line 50) | final class DefaultMssqlResult implements MssqlResult {
method DefaultMssqlResult (line 68) | private DefaultMssqlResult(String sql, ConnectionContext context, Code...
method toResult (line 86) | static MssqlResult toResult(String sql, ConnectionContext context, Cod...
method getRowsUpdated (line 98) | @Override
method map (line 132) | @Override
method map (line 141) | @Override
method doMap (line 147) | private <T> Flux<T> doMap(boolean rows, boolean outparameters, Functio...
method filter (line 247) | @Override
method flatMap (line 252) | @Override
FILE: src/main/java/io/r2dbc/mssql/ErrorDetails.java
class ErrorDetails (line 31) | public final class ErrorDetails {
method ErrorDetails (line 83) | public ErrorDetails(String message, long number, int state, int infoCl...
method getMessage (line 99) | public String getMessage() {
method getNumber (line 108) | public long getNumber() {
method getState (line 117) | public int getState() {
method getStateCode (line 126) | public String getStateCode() {
method getInfoClass (line 135) | public int getInfoClass() {
method getServerName (line 144) | @Nullable
method getProcName (line 154) | @Nullable
method getLineNumber (line 165) | public long getLineNumber() {
method getStateCode (line 169) | private String getStateCode(int errNum, int databaseState) {
FILE: src/main/java/io/r2dbc/mssql/EscapeAwareNameMatcher.java
class EscapeAwareNameMatcher (line 29) | final class EscapeAwareNameMatcher {
method find (line 31) | @Nullable
method matches (line 43) | private static boolean matches(String o1, String o2) {
FILE: src/main/java/io/r2dbc/mssql/ExceptionFactory.java
class ExceptionFactory (line 43) | final class ExceptionFactory {
method ExceptionFactory (line 47) | private ExceptionFactory(String sql) {
method withSql (line 57) | static ExceptionFactory withSql(String sql) {
method createException (line 67) | R2dbcException createException(AbstractInfoToken token) {
method createException (line 79) | static R2dbcException createException(AbstractInfoToken token, String ...
method handleErrorResponse (line 168) | void handleErrorResponse(Message message, SynchronousSink<Message> sin...
method createException (line 182) | RuntimeException createException(ErrorToken message) {
method createErrorDetails (line 186) | static ErrorDetails createErrorDetails(AbstractInfoToken token) {
class MssqlBadGrammarException (line 193) | static final class MssqlBadGrammarException extends R2dbcBadGrammarExc...
method MssqlBadGrammarException (line 197) | MssqlBadGrammarException(ErrorDetails errorDetails, String sql) {
method getErrorDetails (line 202) | @Override
class MssqlDataIntegrityViolationException (line 212) | static final class MssqlDataIntegrityViolationException extends R2dbcD...
method MssqlDataIntegrityViolationException (line 216) | MssqlDataIntegrityViolationException(ErrorDetails errorDetails, Stri...
method getErrorDetails (line 221) | @Override
class MssqlNonTransientException (line 231) | static final class MssqlNonTransientException extends R2dbcNonTransien...
method MssqlNonTransientException (line 235) | MssqlNonTransientException(ErrorDetails errorDetails, String sql) {
method getErrorDetails (line 240) | @Override
class MssqlNonTransientResourceException (line 250) | static final class MssqlNonTransientResourceException extends R2dbcNon...
method MssqlNonTransientResourceException (line 254) | MssqlNonTransientResourceException(ErrorDetails errorDetails, String...
method getErrorDetails (line 259) | @Override
class MssqlPermissionDeniedException (line 269) | static final class MssqlPermissionDeniedException extends R2dbcPermiss...
method MssqlPermissionDeniedException (line 273) | MssqlPermissionDeniedException(ErrorDetails errorDetails, String sql) {
method getErrorDetails (line 278) | @Override
class MssqlRollbackException (line 288) | static final class MssqlRollbackException extends R2dbcRollbackExcepti...
method MssqlRollbackException (line 292) | MssqlRollbackException(ErrorDetails errorDetails, String sql) {
method getErrorDetails (line 297) | @Override
class MssqlTimeoutException (line 307) | static final class MssqlTimeoutException extends R2dbcTimeoutException...
method MssqlTimeoutException (line 311) | MssqlTimeoutException(ErrorDetails errorDetails, String sql) {
method getErrorDetails (line 316) | @Override
class MssqlStatementTimeoutException (line 326) | static final class MssqlStatementTimeoutException extends R2dbcTimeout...
method MssqlStatementTimeoutException (line 328) | public MssqlStatementTimeoutException(String reason, String sql) {
class MssqlTransientException (line 336) | static final class MssqlTransientException extends R2dbcTransientExcep...
method MssqlTransientException (line 340) | public MssqlTransientException(ErrorDetails errorDetails, String sql) {
method getErrorDetails (line 345) | @Override
class MssqlStatementCancelled (line 355) | static final class MssqlStatementCancelled extends R2dbcTransientExcep...
method MssqlStatementCancelled (line 357) | public MssqlStatementCancelled(String sql) {
class MssqlTransientResourceException (line 366) | private static final class MssqlTransientResourceException extends R2d...
method MssqlTransientResourceException (line 370) | MssqlTransientResourceException(ErrorDetails errorDetails, String sq...
method getErrorDetails (line 375) | @Override
FILE: src/main/java/io/r2dbc/mssql/GeneratedValues.java
class GeneratedValues (line 34) | final class GeneratedValues {
method reduceToSingleCountDoneToken (line 47) | static Flux<Message> reduceToSingleCountDoneToken(Flux<? extends Messa...
method augmentQuery (line 84) | static String augmentQuery(String sql, @Nullable String[] generatedCol...
method shouldExpectGeneratedKeys (line 99) | static boolean shouldExpectGeneratedKeys(@Nullable String[] generatedC...
method getGeneratedKeysClause (line 111) | static String getGeneratedKeysClause(String... columns) {
FILE: src/main/java/io/r2dbc/mssql/IndefinitePreparedStatementCache.java
class IndefinitePreparedStatementCache (line 30) | class IndefinitePreparedStatementCache implements PreparedStatementCache {
method getHandle (line 36) | @Override
method putHandle (line 45) | @Override
method getParsedSql (line 54) | @SuppressWarnings("unchecked")
method size (line 60) | @Override
method createKey (line 65) | private static String createKey(String sql, Binding binding) {
method toString (line 69) | @Override
FILE: src/main/java/io/r2dbc/mssql/LoginConfiguration.java
class LoginConfiguration (line 31) | final class LoginConfiguration {
method LoginConfiguration (line 51) | LoginConfiguration(@Nullable String applicationName, @Nullable UUID co...
method getConnectionId (line 63) | @Nullable
method useSsl (line 68) | boolean useSsl() {
method asBuilder (line 72) | Login7.Builder asBuilder() {
FILE: src/main/java/io/r2dbc/mssql/LoginFlow.java
class LoginFlow (line 42) | final class LoginFlow {
method LoginFlow (line 44) | private LoginFlow() {
method exchange (line 52) | static Flux<Message> exchange(Client client, LoginConfiguration login) {
method createLoginMessage (line 121) | private static Login7 createLoginMessage(LoginConfiguration login, Pre...
method getTdsVersion (line 129) | private static TDSVersion getTdsVersion(int serverVersion) {
FILE: src/main/java/io/r2dbc/mssql/MssqlBatch.java
class MssqlBatch (line 32) | public final class MssqlBatch implements Batch {
method MssqlBatch (line 40) | MssqlBatch(Client client, ConnectionOptions connectionOptions) {
method add (line 46) | @Override
method execute (line 55) | @Override
method toString (line 61) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlColumnMetadata.java
class MssqlColumnMetadata (line 35) | public final class MssqlColumnMetadata implements ColumnMetadata, OutPar...
method MssqlColumnMetadata (line 47) | MssqlColumnMetadata(Decodable decodable, Codecs codecs) {
method getName (line 52) | @Override
method getPrecision (line 57) | @Override
method getScale (line 62) | @Override
method getNullability (line 67) | @Override
method getJavaType (line 72) | @Override
method getType (line 77) | @Override
method getNativeTypeMetadata (line 82) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlConnection.java
class MssqlConnection (line 51) | public final class MssqlConnection implements Connection {
method MssqlConnection (line 77) | MssqlConnection(Client client, MssqlConnectionMetadata connectionMetad...
method beginTransaction (line 90) | @Override
method beginTransaction (line 95) | @Override
method cancel (line 154) | Mono<Void> cancel() {
method close (line 158) | @Override
method commitTransaction (line 163) | @Override
method cleanup (line 187) | private String cleanup() {
method createBatch (line 201) | @Override
method createSavepoint (line 206) | @Override
method createStatement (line 228) | @Override
method releaseSavepoint (line 241) | @Override
method rollbackTransaction (line 246) | @Override
method rollbackTransactionToSavepoint (line 278) | @Override
method isAutoCommit (line 298) | public boolean isAutoCommit() {
method setAutoCommit (line 302) | public Mono<Void> setAutoCommit(boolean autoCommit) {
method setLockWaitTimeout (line 329) | @Override
method setStatementTimeout (line 344) | @Override
method getMetadata (line 352) | @Override
method getTransactionIsolationLevel (line 357) | public IsolationLevel getTransactionIsolationLevel() {
method setTransactionIsolationLevel (line 361) | @Override
method validate (line 368) | @Override
method renderSetIsolationLevel (line 409) | private static String renderSetIsolationLevel(IsolationLevel isolation...
method sanitize (line 413) | static String sanitize(String identifier, int maxLength) {
method exchange (line 421) | private Mono<Void> exchange(String sql) {
method useTransactionStatus (line 429) | private Mono<Void> useTransactionStatus(Function<TransactionStatus, Pu...
type EmptyTransactionDefinition (line 434) | enum EmptyTransactionDefinition implements TransactionDefinition {
method getAttribute (line 437) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlConnectionConfiguration.java
class MssqlConnectionConfiguration (line 63) | public final class MssqlConnectionConfiguration {
method MssqlConnectionConfiguration (line 126) | private MssqlConnectionConfiguration(@Nullable String applicationName,...
method builder (line 163) | public static Builder builder() {
method withRedirect (line 174) | MssqlConnectionConfiguration withRedirect(Redirect redirect) {
method toClientConfiguration (line 197) | ClientConfiguration toClientConfiguration() {
method toConnectionOptions (line 203) | ConnectionOptions toConnectionOptions(Codecs codecs) {
method toString (line 207) | @Override
method getApplicationName (line 236) | @Nullable
method getConnectionId (line 241) | @Nullable
method getConnectTimeout (line 246) | Duration getConnectTimeout() {
method getDatabase (line 250) | Optional<String> getDatabase() {
method getHost (line 254) | String getHost() {
method getHostNameInCertificate (line 258) | String getHostNameInCertificate() {
method getLockWaitTimeout (line 262) | @Nullable
method getPassword (line 267) | CharSequence getPassword() {
method getPreferCursoredExecution (line 271) | Predicate<String> getPreferCursoredExecution() {
method getPort (line 275) | int getPort() {
method isSendStringParametersAsUnicode (line 279) | boolean isSendStringParametersAsUnicode() {
method useSsl (line 283) | boolean useSsl() {
method isTcpKeepAlive (line 287) | boolean isTcpKeepAlive() {
method isTcpNoDelay (line 291) | boolean isTcpNoDelay() {
method getUsername (line 295) | String getUsername() {
method getLoginConfiguration (line 299) | LoginConfiguration getLoginConfiguration() {
method repeat (line 304) | private static String repeat(int length, String character) {
method lookupHostName (line 320) | private static String lookupHostName() {
class Builder (line 347) | public static final class Builder {
method Builder (line 399) | private Builder() {
method applicationName (line 409) | public Builder applicationName(String applicationName) {
method connectionId (line 421) | public Builder connectionId(UUID connectionId) {
method connectionProvider (line 434) | public Builder connectionProvider(ConnectionProvider connectionProvi...
method connectTimeout (line 445) | public Builder connectTimeout(Duration connectTimeout) {
method database (line 460) | public Builder database(@Nullable String database) {
method enableSsl (line 470) | public Builder enableSsl() {
method enableSslTunnel (line 482) | public Builder enableSslTunnel() {
method enableSslTunnel (line 498) | public Builder enableSslTunnel(Function<SslContextBuilder, SslContex...
method host (line 510) | public Builder host(String host) {
method hostNameInCertificate (line 522) | public Builder hostNameInCertificate(String hostNameInCertificate) {
method lockWaitTimeout (line 534) | public Builder lockWaitTimeout(Duration timeout) {
method password (line 549) | public Builder password(CharSequence password) {
method preferCursoredExecution (line 561) | public Builder preferCursoredExecution(boolean preferCursoredExecuti...
method preferCursoredExecution (line 573) | public Builder preferCursoredExecution(Predicate<String> preference) {
method port (line 584) | public Builder port(int port) {
method sendStringParametersAsUnicode (line 596) | public Builder sendStringParametersAsUnicode(boolean sendStringParam...
method sslContextBuilderCustomizer (line 611) | public Builder sslContextBuilderCustomizer(Function<SslContextBuilde...
method tcpKeepAlive (line 624) | public Builder tcpKeepAlive(boolean enabled) {
method tcpNoDelay (line 637) | public Builder tcpNoDelay(boolean enabled) {
method trustServerCertificate (line 649) | public Builder trustServerCertificate() {
method trustServerCertificate (line 661) | public Builder trustServerCertificate(boolean trustServerCertificate) {
method trustStoreType (line 674) | public Builder trustStoreType(String trustStoreType) {
method trustStore (line 687) | public Builder trustStore(String trustStoreFile) {
method trustStore (line 699) | public Builder trustStore(File trustStore) {
method trustStorePassword (line 711) | public Builder trustStorePassword(char[] trustStorePassword) {
method username (line 723) | public Builder username(String username) {
method build (line 733) | public MssqlConnectionConfiguration build() {
class DefaultClientConfiguration (line 749) | static class DefaultClientConfiguration implements ClientConfiguration {
method DefaultClientConfiguration (line 783) | DefaultClientConfiguration(ConnectionProvider connectionProvider, Du...
method getHost (line 804) | @Override
method getPort (line 809) | @Override
method getConnectTimeout (line 814) | @Override
method isTcpKeepAlive (line 819) | @Override
method isTcpNoDelay (line 824) | @Override
method getConnectionProvider (line 829) | @Override
method isSslEnabled (line 834) | @Override
method getSslContext (line 839) | @Override
method loadCustomTrustStore (line 866) | @Nullable
method getSslTunnelConfiguration (line 883) | @Override
method createSslContextBuilder (line 913) | private static SslContextBuilder createSslContextBuilder() {
class DefaultCursorPreference (line 925) | static class DefaultCursorPreference implements Predicate<String> {
method test (line 929) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlConnectionFactory.java
class MssqlConnectionFactory (line 38) | public final class MssqlConnectionFactory implements ConnectionFactory {
method MssqlConnectionFactory (line 56) | public MssqlConnectionFactory(MssqlConnectionConfiguration configurati...
method MssqlConnectionFactory (line 60) | MssqlConnectionFactory(Function<MssqlConnectionConfiguration, Mono<Cli...
method connect (line 67) | private static Mono<Client> connect(MssqlConnectionConfiguration confi...
method initializeClient (line 77) | private Mono<Client> initializeClient(MssqlConnectionConfiguration con...
method redirectClient (line 95) | private Mono<Client> redirectClient(Client client, Redirect redirect) {
method propagateError (line 102) | private <T> Mono<T> propagateError(Mono<?> action, Throwable e) {
method create (line 110) | @Override
method toConnectionMetadata (line 133) | private static MssqlConnectionMetadata toConnectionMetadata(String ver...
method getConfiguration (line 137) | MssqlConnectionConfiguration getConfiguration() {
method getClientConfiguration (line 141) | ClientConfiguration getClientConfiguration() {
method getConnectionOptions (line 145) | ConnectionOptions getConnectionOptions() {
method getMetadata (line 149) | @Override
method toString (line 154) | @Override
class MssqlRoutingException (line 163) | static class MssqlRoutingException extends R2dbcNonTransientResourceEx...
method MssqlRoutingException (line 165) | public MssqlRoutingException(String reason) {
FILE: src/main/java/io/r2dbc/mssql/MssqlConnectionFactoryMetadata.java
type MssqlConnectionFactoryMetadata (line 26) | enum MssqlConnectionFactoryMetadata implements ConnectionFactoryMetadata {
method MssqlConnectionFactoryMetadata (line 35) | MssqlConnectionFactoryMetadata() {
method getName (line 38) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlConnectionFactoryProvider.java
class MssqlConnectionFactoryProvider (line 42) | public final class MssqlConnectionFactoryProvider implements ConnectionF...
method create (line 148) | @SuppressWarnings("unchecked")
method supports (line 211) | @Override
method getDriver (line 232) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlConnectionMetadata.java
class MssqlConnectionMetadata (line 26) | public final class MssqlConnectionMetadata implements ConnectionMetadata {
method MssqlConnectionMetadata (line 32) | MssqlConnectionMetadata(String databaseProductName, String databaseVer...
method from (line 45) | public static MssqlConnectionMetadata from(String edition, String vers...
method getDatabaseProductName (line 63) | public String getDatabaseProductName() {
method getDatabaseVersion (line 72) | public String getDatabaseVersion() {
FILE: src/main/java/io/r2dbc/mssql/MssqlException.java
type MssqlException (line 27) | public interface MssqlException {
method getErrorDetails (line 34) | ErrorDetails getErrorDetails();
FILE: src/main/java/io/r2dbc/mssql/MssqlIsolationLevel.java
class MssqlIsolationLevel (line 31) | public final class MssqlIsolationLevel {
method MssqlIsolationLevel (line 33) | private MssqlIsolationLevel() {
FILE: src/main/java/io/r2dbc/mssql/MssqlResult.java
type MssqlResult (line 35) | public interface MssqlResult extends Result {
method getRowsUpdated (line 40) | @Override
method map (line 46) | @Override
method filter (line 52) | @Override
method flatMap (line 58) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlReturnValues.java
class MssqlReturnValues (line 41) | final class MssqlReturnValues implements OutParameters, Message {
method MssqlReturnValues (line 55) | private MssqlReturnValues(Codecs codecs, List<ReturnValue> returnValue...
method toReturnValues (line 69) | static MssqlReturnValues toReturnValues(Codecs codecs, List<ReturnValu...
method getMetadata (line 82) | public MssqlReturnValuesMetadata getMetadata() {
method get (line 86) | @Override
method get (line 96) | @Override
method doGet (line 107) | @Nullable
method release (line 131) | public void release() {
method requireNotReleased (line 137) | private void requireNotReleased() {
FILE: src/main/java/io/r2dbc/mssql/MssqlReturnValuesMetadata.java
class MssqlReturnValuesMetadata (line 37) | final class MssqlReturnValuesMetadata extends NamedCollectionSupport<Ret...
method MssqlReturnValuesMetadata (line 50) | MssqlReturnValuesMetadata(Codecs codecs, ReturnValue[] returnValues) {
method create (line 61) | public static MssqlReturnValuesMetadata create(Codecs codecs, List<Ret...
method getParameterMetadata (line 68) | @Override
method getParameterMetadata (line 76) | @Override
method getParameterMetadatas (line 84) | @Override
method find (line 102) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlRow.java
class MssqlRow (line 38) | final class MssqlRow implements Row {
method MssqlRow (line 52) | MssqlRow(Codecs codecs, RowToken rowToken, MssqlRowMetadata metadata) {
method toRow (line 67) | static MssqlRow toRow(Codecs codecs, RowToken rowToken, MssqlRowMetada...
method getMetadata (line 81) | public MssqlRowMetadata getMetadata() {
method get (line 85) | @Override
method get (line 95) | @Override
method doGet (line 106) | @Nullable
method release (line 131) | public void release() {
method requireNotReleased (line 137) | private void requireNotReleased() {
FILE: src/main/java/io/r2dbc/mssql/MssqlRowMetadata.java
class MssqlRowMetadata (line 37) | final class MssqlRowMetadata extends NamedCollectionSupport<Column> impl...
method MssqlRowMetadata (line 51) | MssqlRowMetadata(Codecs codecs, Column[] columns, Map<String, Column> ...
method create (line 62) | public static MssqlRowMetadata create(Codecs codecs, ColumnMetadataTok...
method getColumnMetadata (line 69) | @Override
method getColumnMetadata (line 77) | @Override
method getColumnMetadatas (line 85) | @Override
method contains (line 103) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlSegmentResult.java
class MssqlSegmentResult (line 57) | final class MssqlSegmentResult implements MssqlResult {
method MssqlSegmentResult (line 71) | private MssqlSegmentResult(String sql, ConnectionContext context, Code...
method toResult (line 88) | static MssqlSegmentResult toResult(String sql, ConnectionContext conte...
method toSegments (line 100) | private static Flux<Segment> toSegments(String sql, Codecs codecs, Flu...
method getRowsUpdated (line 183) | @Override
method map (line 209) | @Override
method map (line 220) | @Override
method doMap (line 228) | private <T> Flux<T> doMap(boolean rows, boolean outparameters, Functio...
method filter (line 268) | @Override
method flatMap (line 286) | @Override
method isError (line 310) | private boolean isError(Segment segment) {
method createMessage (line 314) | private static Message createMessage(String sql, AbstractInfoToken mes...
class MssqlMessage (line 321) | static class MssqlMessage implements Message {
method MssqlMessage (line 329) | public MssqlMessage(AbstractInfoToken message, String sql, ErrorDeta...
method exception (line 335) | @Override
method errorCode (line 340) | @Override
method sqlState (line 345) | @Override
method message (line 350) | @Override
method isError (line 355) | public boolean isError() {
class MssqlRowSegment (line 361) | private static class MssqlRowSegment extends AbstractReferenceCounted ...
method MssqlRowSegment (line 367) | public MssqlRowSegment(Codecs codecs, RowToken rowToken, MssqlRowMet...
method row (line 372) | @Override
method touch (line 377) | @Override
method deallocate (line 382) | @Override
class MsqlOutSegment (line 389) | private static class MsqlOutSegment extends AbstractReferenceCounted i...
method MsqlOutSegment (line 393) | public MsqlOutSegment(Codecs codecs, List<ReturnValue> returnValues) {
method outParameters (line 397) | @Override
method touch (line 402) | @Override
method deallocate (line 407) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlStatement.java
type MssqlStatement (line 33) | public interface MssqlStatement extends Statement {
method add (line 38) | @Override
method bind (line 44) | @Override
method bindNull (line 50) | @Override
method bind (line 56) | @Override
method bindNull (line 62) | @Override
method execute (line 68) | @Override
method returnGeneratedValues (line 74) | @Override
method fetchSize (line 80) | @Override
FILE: src/main/java/io/r2dbc/mssql/MssqlStatementSupport.java
class MssqlStatementSupport (line 39) | abstract class MssqlStatementSupport implements MssqlStatement {
method MssqlStatementSupport (line 52) | MssqlStatementSupport(boolean preferCursoredExecution) {
method getEffectiveFetchSize (line 63) | int getEffectiveFetchSize() {
method getGeneratedColumns (line 72) | @Nullable
method returnGeneratedValues (line 77) | @Override
method fetchSize (line 86) | @Override
method potentiallyAttachTimeout (line 95) | Flux<Message> potentiallyAttachTimeout(Flux<Message> exchange, Connect...
FILE: src/main/java/io/r2dbc/mssql/NamedCollectionSupport.java
class NamedCollectionSupport (line 38) | abstract class NamedCollectionSupport<N> implements Collection<String> {
method NamedCollectionSupport (line 48) | @SuppressWarnings("unchecked")
method toMap (line 67) | static <N> Map<String, N> toMap(N[] named, Function<N, String> nameMap...
method shouldStripROWSTAT (line 82) | private boolean shouldStripROWSTAT(N[] columns) {
method get (line 94) | N get(Object identifier) {
method get (line 115) | N get(int index) {
method get (line 130) | N get(String name) {
method find (line 147) | @Nullable
method getCount (line 167) | int getCount() {
method toString (line 171) | @Override
method size (line 179) | @Override
method isEmpty (line 184) | @Override
method contains (line 189) | @Override
method containsAll (line 199) | @Override
method iterator (line 211) | @Override
method toArray (line 233) | @Override
method toArray (line 248) | @Override
method add (line 260) | @Override
method remove (line 265) | @Override
method addAll (line 270) | @Override
method removeAll (line 275) | @Override
method retainAll (line 280) | @Override
method clear (line 285) | @Override
FILE: src/main/java/io/r2dbc/mssql/OptionMapper.java
class OptionMapper (line 37) | final class OptionMapper {
method OptionMapper (line 41) | private OptionMapper(ConnectionFactoryOptions options) {
method create (line 51) | public static OptionMapper create(ConnectionFactoryOptions options) {
method from (line 62) | public Source<Object> from(Option<?> option) {
method fromTyped (line 81) | @SuppressWarnings("unchecked")
method toBoolean (line 97) | static boolean toBoolean(Object value) {
method toDuration (line 113) | static Duration toDuration(Object value) {
method toFile (line 129) | static File toFile(Object value) {
method toInteger (line 145) | static int toInteger(Object value) {
method toStringPredicate (line 161) | @SuppressWarnings("unchecked")
method toUuid (line 198) | static UUID toUuid(Object value) {
type Source (line 211) | public interface Source<T> {
method map (line 220) | <R> Source<R> map(Function<Object, R> mappingFunction);
method to (line 229) | Otherwise to(Consumer<T> consumer);
method to (line 237) | Otherwise to(Runnable consumer);
type Otherwise (line 241) | public interface Otherwise {
method otherwise (line 248) | void otherwise(Runnable consumer);
type Otherwises (line 252) | private enum Otherwises implements Otherwise {
method otherwise (line 255) | @Override
method otherwise (line 260) | @Override
type NullSource (line 267) | @SuppressWarnings({"unchecked", "rawtypes"})
method instance (line 272) | public static <T> Source<T> instance() {
method map (line 276) | @Override
method to (line 281) | @Override
method to (line 286) | @Override
class AvailableSource (line 292) | private static class AvailableSource<T> implements Source<T> {
method AvailableSource (line 298) | private AvailableSource(Supplier<T> supplier, String optionName) {
method map (line 310) | @Override
method to (line 325) | @Override
method to (line 342) | @Override
FILE: src/main/java/io/r2dbc/mssql/ParametrizedMssqlStatement.java
class ParametrizedMssqlStatement (line 57) | final class ParametrizedMssqlStatement extends MssqlStatementSupport imp...
method ParametrizedMssqlStatement (line 83) | ParametrizedMssqlStatement(Client client, ConnectionOptions connection...
method add (line 100) | @Override
method execute (line 109) | @Override
method exchange (line 163) | private Flux<Message> exchange(int effectiveFetchSize, boolean useGene...
method clearBindings (line 188) | private void clearBindings(Iterator<Binding> iterator) {
method returnGeneratedValues (line 198) | @Override
method fetchSize (line 205) | @Override
method tryNextBinding (line 212) | private static void tryNextBinding(Iterator<Binding> iterator, Sinks.M...
method bind (line 229) | @Override
method bind (line 248) | @Override
method bindNull (line 256) | @Override
method bindNull (line 272) | @Override
method createContext (line 280) | private static RpcParameterContext createContext(boolean in, @Nullable...
method addBinding (line 289) | private void addBinding(String name, RpcDirection rpcDirection, Encode...
method assertNotExecuted (line 296) | private void assertNotExecuted() {
method getBindings (line 307) | Bindings getBindings() {
method getParameterName (line 311) | private String getParameterName(int index) {
method getParameterName (line 315) | private String getParameterName(String name) {
method supports (line 326) | public static boolean supports(String sql) {
method isTextual (line 332) | private static boolean isTextual(@Nullable Object value) {
method findCharacter (line 353) | @SuppressWarnings({"fallthrough"})
class ParsedQuery (line 428) | static class ParsedQuery {
method ParsedQuery (line 436) | ParsedQuery(String sql, List<ParsedParameter> parameters) {
method parse (line 453) | static ParsedQuery parse(String sql) {
method getParameterName (line 485) | String getParameterName(String name) {
method getParameterName (line 506) | public String getParameterName(int index) {
method getSql (line 519) | public String getSql() {
method getParameterCount (line 526) | public int getParameterCount() {
method getParameters (line 530) | public List<ParsedParameter> getParameters() {
method equals (line 534) | @Override
method hashCode (line 547) | @Override
method toString (line 552) | @Override
class ParsedParameter (line 567) | static class ParsedParameter {
method ParsedParameter (line 573) | ParsedParameter(String name, int position) {
method getName (line 578) | public String getName() {
method getPosition (line 582) | public int getPosition() {
method equals (line 586) | @Override
method hashCode (line 599) | @Override
method toString (line 604) | @Override
class Bindings (line 616) | static final class Bindings {
method finish (line 622) | private void finish() {
method first (line 626) | Binding first() {
method getCurrent (line 630) | Binding getCurrent() {
method clear (line 642) | void clear() {
FILE: src/main/java/io/r2dbc/mssql/PreparedStatementCache.java
type PreparedStatementCache (line 26) | interface PreparedStatementCache {
method getHandle (line 41) | int getHandle(String sql, Binding binding);
method putHandle (line 50) | void putHandle(int handle, String sql, Binding binding);
method getParsedSql (line 60) | <T> T getParsedSql(String sql, Function<String, T> parseFunction);
method size (line 67) | int size();
FILE: src/main/java/io/r2dbc/mssql/QueryLogger.java
class QueryLogger (line 28) | final class QueryLogger {
method logQuery (line 32) | static void logQuery(ConnectionContext context, String query) {
FILE: src/main/java/io/r2dbc/mssql/QueryMessageFlow.java
class QueryMessageFlow (line 42) | final class QueryMessageFlow {
method exchange (line 51) | static Flux<Message> exchange(Client client, String query) {
type DoneHandler (line 62) | enum DoneHandler implements BiConsumer<Message, SynchronousSink<Messag...
method accept (line 66) | @Override
FILE: src/main/java/io/r2dbc/mssql/RpcQueryMessageFlow.java
class RpcQueryMessageFlow (line 57) | final class RpcQueryMessageFlow {
method exchange (line 117) | static Flux<Message> exchange(Client client, String query, Binding bin...
method exchange (line 154) | static Flux<Message> exchange(Client client, Codecs codecs, String que...
method exchange (line 214) | static Flux<Message> exchange(PreparedStatementCache statementCache, C...
method isPreparedStatementNotFound (line 306) | private static boolean isPreparedStatementNotFound(long errorNumber) {
method handleSpCursorReturnValue (line 310) | private static boolean handleSpCursorReturnValue(PreparedStatementCach...
method parseCursorId (line 336) | private static int parseCursorId(Codecs codecs, CursorState state, Ret...
method handleMessage (line 343) | private static void handleMessage(Client client, int fetchSize, Cursor...
method handleMessage (line 350) | private static void handleMessage(Client client, int fetchSize, Sinks....
method handleMessage (line 355) | private static void handleMessage(Client client, int fetchSize, Consum...
method onDone (line 411) | static void onDone(Client client, int fetchSize, Consumer<ClientMessag...
method isFinalToken (line 440) | private static Predicate<Message> isFinalToken(CursorState state) {
method isFinalState (line 452) | private static boolean isFinalState(CursorState state) {
method spExecuteSql (line 476) | static RpcRequest spExecuteSql(String query, Binding binding, Collatio...
method spCursorOpen (line 504) | static RpcRequest spCursorOpen(String query, Collation collation, Tran...
method spCursorFetch (line 535) | static RpcRequest spCursorFetch(int cursor, int fetchType, int rowCoun...
method spCursorClose (line 559) | static RpcRequest spCursorClose(int cursor, TransactionDescriptor tran...
method spCursorPrepExec (line 580) | static RpcRequest spCursorPrepExec(int preparedStatementHandle, String...
method spCursorExec (line 615) | static RpcRequest spCursorExec(int preparedStatementHandle, Binding bi...
class CursorState (line 645) | static class CursorState {
method wantsMore (line 665) | boolean wantsMore() {
method cancel (line 669) | void cancel() {
method update (line 673) | void update(Message it) {
method update (line 684) | public void update(Phase newPhase) {
type Phase (line 694) | enum Phase {
class IntermediateCount (line 700) | static class IntermediateCount extends AbstractDoneToken {
method IntermediateCount (line 702) | public IntermediateCount(DoneInProcToken token) {
method getName (line 706) | @Override
class OnCursorComplete (line 713) | static class OnCursorComplete implements Runnable {
method run (line 725) | @Override
method takeUntil (line 733) | public Publisher<Void> takeUntil() {
FILE: src/main/java/io/r2dbc/mssql/SimpleMssqlStatement.java
class SimpleMssqlStatement (line 39) | final class SimpleMssqlStatement extends MssqlStatementSupport implement...
method SimpleMssqlStatement (line 61) | SimpleMssqlStatement(Client client, ConnectionOptions connectionOption...
method add (line 78) | @Override
method bind (line 83) | @Override
method bind (line 89) | @Override
method bindNull (line 95) | @Override
method bindNull (line 101) | @Override
method execute (line 107) | @Override
method createResultStream (line 141) | private Publisher<MssqlResult> createResultStream(boolean useGenerated...
method returnGeneratedValues (line 150) | @Override
method fetchSize (line 157) | @Override
FILE: src/main/java/io/r2dbc/mssql/api/MssqlTransactionDefinition.java
type MssqlTransactionDefinition (line 31) | public interface MssqlTransactionDefinition extends TransactionDefinition {
method from (line 45) | static MssqlTransactionDefinition from(IsolationLevel isolationLevel) {
method named (line 55) | static MssqlTransactionDefinition named(String name) {
method isolationLevel (line 66) | MssqlTransactionDefinition isolationLevel(IsolationLevel isolationLevel);
method lockTimeout (line 75) | MssqlTransactionDefinition lockTimeout(Duration timeout);
method name (line 84) | MssqlTransactionDefinition name(String name);
method mark (line 97) | MssqlTransactionDefinition mark(String mark);
FILE: src/main/java/io/r2dbc/mssql/api/SimpleTransactionDefinition.java
class SimpleTransactionDefinition (line 29) | @SuppressWarnings("unchecked")
method SimpleTransactionDefinition (line 36) | SimpleTransactionDefinition(Map<Option<?>, Object> options) {
method getAttribute (line 40) | @Override
method with (line 45) | public MssqlTransactionDefinition with(Option<?> option, Object value) {
method isolationLevel (line 53) | @Override
method lockTimeout (line 58) | @Override
method name (line 63) | @Override
method mark (line 68) | @Override
FILE: src/main/java/io/r2dbc/mssql/client/Client.java
type Client (line 39) | public interface Client {
method attention (line 47) | Mono<Void> attention();
method close (line 54) | Mono<Void> close();
method exchange (line 64) | Flux<Message> exchange(Publisher<? extends ClientMessage> requests, Pr...
method getByteBufAllocator (line 71) | ByteBufAllocator getByteBufAllocator();
method getContext (line 78) | ConnectionContext getContext();
method getDatabaseCollation (line 85) | Optional<Collation> getDatabaseCollation();
method getDatabaseVersion (line 92) | Optional<String> getDatabaseVersion();
method getRedirect (line 100) | Optional<Redirect> getRedirect();
method getTransactionDescriptor (line 107) | TransactionDescriptor getTransactionDescriptor();
method getTransactionStatus (line 114) | TransactionStatus getTransactionStatus();
method getRequiredCollation (line 120) | default Collation getRequiredCollation() {
method isColumnEncryptionSupported (line 129) | boolean isColumnEncryptionSupported();
method isConnected (line 136) | boolean isConnected();
FILE: src/main/java/io/r2dbc/mssql/client/ClientConfiguration.java
type ClientConfiguration (line 29) | public interface ClientConfiguration extends SslConfiguration {
method getHost (line 34) | String getHost();
method getPort (line 39) | int getPort();
method getConnectTimeout (line 44) | Duration getConnectTimeout();
method isTcpKeepAlive (line 50) | boolean isTcpKeepAlive();
method isTcpNoDelay (line 56) | boolean isTcpNoDelay();
method getConnectionProvider (line 61) | ConnectionProvider getConnectionProvider();
method getSslTunnelConfiguration (line 67) | default SslConfiguration getSslTunnelConfiguration() {
FILE: src/main/java/io/r2dbc/mssql/client/ConnectionContext.java
class ConnectionContext (line 35) | public class ConnectionContext {
method ConnectionContext (line 61) | public ConnectionContext() {
method ConnectionContext (line 72) | public ConnectionContext(@Nullable String applicationName, @Nullable U...
method ConnectionContext (line 81) | private ConnectionContext(@Nullable String applicationName, @Nullable ...
method incrementConnectionCounter (line 89) | private String incrementConnectionCounter() {
method getConnectionIdPrefix (line 93) | private String getConnectionIdPrefix() {
method getMessage (line 103) | public String getMessage(String original) {
method withChannelId (line 122) | public ConnectionContext withChannelId(String channelId) {
FILE: src/main/java/io/r2dbc/mssql/client/ConnectionState.java
type ConnectionState (line 56) | public enum ConnectionState {
method decoder (line 64) | @Override
method canAdvance (line 76) | @Override
method next (line 90) | @Override
method canAdvance (line 122) | @Override
method next (line 127) | @Override
method decoder (line 132) | @Override
method canAdvance (line 146) | @Override
method next (line 151) | @Override
method decoder (line 161) | @Override
method canAdvance (line 179) | @Override
method next (line 184) | @Override
method decoder (line 189) | @Override
method canAdvance (line 216) | @Override
method next (line 221) | @Override
method decoder (line 226) | @Override
method canAdvance (line 238) | public abstract boolean canAdvance(Message message);
method next (line 247) | public abstract ConnectionState next(Message message, Connection conne...
method decoder (line 256) | abstract MessageDecoder decoder(Client client);
FILE: src/main/java/io/r2dbc/mssql/client/DisabledSslTunnel.java
type DisabledSslTunnel (line 22) | enum DisabledSslTunnel implements SslConfiguration {
method isSslEnabled (line 26) | @Override
method getSslContext (line 31) | @Override
FILE: src/main/java/io/r2dbc/mssql/client/EnvironmentChangeEvent.java
class EnvironmentChangeEvent (line 27) | public class EnvironmentChangeEvent {
method EnvironmentChangeEvent (line 36) | public EnvironmentChangeEvent(EnvChangeToken token) {
method getToken (line 43) | public EnvChangeToken getToken() {
FILE: src/main/java/io/r2dbc/mssql/client/EnvironmentChangeListener.java
type EnvironmentChangeListener (line 25) | @FunctionalInterface
method onEnvironmentChange (line 33) | void onEnvironmentChange(EnvironmentChangeEvent event);
FILE: src/main/java/io/r2dbc/mssql/client/MessageDecoder.java
type MessageDecoder (line 33) | interface MessageDecoder extends BiFunction<Header, ByteBuf, List<? exte...
method decode (line 43) | default boolean decode(Header header, ByteBuf buffer, SynchronousSink<...
FILE: src/main/java/io/r2dbc/mssql/client/ReactorNettyClient.java
class ReactorNettyClient (line 82) | public final class ReactorNettyClient implements Client {
method ReactorNettyClient (line 158) | private ReactorNettyClient(Connection connection, TdsEncoder tdsEncode...
method encodeForSend (line 349) | private Object encodeForSend(ClientMessage message) {
method resumeError (line 358) | @SuppressWarnings("unchecked")
method onInfoToken (line 376) | private void onInfoToken(Message message) {
method connect (line 397) | public static Mono<ReactorNettyClient> connect(String host, int port) {
method connect (line 411) | public static Mono<ReactorNettyClient> connect(String host, int port, ...
method connect (line 469) | public static Mono<ReactorNettyClient> connect(ClientConfiguration con...
method createSslTunnelHandler (line 518) | private static SslHandler createSslTunnelHandler(ByteBufAllocator allo...
method attention (line 522) | @Override
method close (line 527) | @Override
method getByteBufAllocator (line 545) | @Override
method getContext (line 550) | @Override
method getDatabaseCollation (line 555) | @Override
method getDatabaseVersion (line 560) | @Override
method getRedirect (line 565) | @Override
method getTransactionDescriptor (line 570) | @Override
method getTransactionStatus (line 575) | @Override
method isColumnEncryptionSupported (line 580) | @Override
method isConnected (line 585) | @Override
method exchange (line 596) | @Override
method send (line 661) | private Mono<Void> send(Publisher<? extends ClientMessage> requests) {
method handleClose (line 673) | private void handleClose() {
method handleConnectionError (line 682) | private void handleConnectionError(Throwable error) {
method drainError (line 686) | private void drainError(Supplier<? extends Throwable> supplier) {
class RequestQueue (line 701) | static class RequestQueue implements Runnable {
method RequestQueue (line 709) | RequestQueue(ConnectionContext context) {
method poll (line 713) | @Nullable
method run (line 718) | @Override
method submit (line 745) | void submit(Sinkable exchangeRequest) {
method drainRequestQueue (line 768) | void drainRequestQueue() {
class ExchangeRequest (line 787) | static class ExchangeRequest {
method complete (line 799) | public void complete() {
method isComplete (line 803) | public boolean isComplete() {
method submit (line 807) | void submit(RequestQueue queue, MonoSink<Flux<Message>> sink, Flux<M...
class TransactionListener (line 829) | class TransactionListener implements EnvironmentChangeListener {
method onEnvironmentChange (line 831) | @Override
method updateStatus (line 879) | private void updateStatus(TransactionStatus status, TransactionDescr...
class CollationListener (line 886) | class CollationListener implements EnvironmentChangeListener {
method onEnvironmentChange (line 888) | @Override
class RedirectListener (line 900) | class RedirectListener implements EnvironmentChangeListener {
method onEnvironmentChange (line 902) | @Override
type Sinkable (line 914) | interface Sinkable {
method onSuccess (line 916) | void onSuccess();
method onError (line 918) | void onError(Throwable throwable);
class MssqlConnectionClosedException (line 922) | static class MssqlConnectionClosedException extends R2dbcNonTransientR...
method MssqlConnectionClosedException (line 924) | public MssqlConnectionClosedException(String reason) {
class MssqlConnectionException (line 930) | static class MssqlConnectionException extends R2dbcNonTransientResourc...
method MssqlConnectionException (line 932) | public MssqlConnectionException(Throwable cause) {
FILE: src/main/java/io/r2dbc/mssql/client/StreamDecoder.java
class StreamDecoder (line 46) | final class StreamDecoder {
method decode (line 58) | public List<Message> decode(ByteBuf in, MessageDecoder messageDecoder) {
method decode (line 78) | public void decode(ByteBuf in, MessageDecoder messageDecoder, Synchron...
method withState (line 93) | @Nullable
method retain (line 142) | @Nullable
method getDecoderState (line 148) | @Nullable
class DecoderState (line 156) | static class DecoderState {
method DecoderState (line 165) | private DecoderState(ByteBuf remainder, ByteBuf aggregatedBody, @Nul...
method initial (line 178) | static DecoderState initial(ByteBuf initialBuffer) {
method andChunk (line 194) | DecoderState andChunk(ByteBuf in) {
method newState (line 201) | DecoderState newState(ByteBuf remainder, ByteBuf aggregatedBody, @Nu...
method canReadChunk (line 210) | boolean canReadChunk() {
method hasRawRemainder (line 219) | boolean hasRawRemainder() {
method hasAggregatedBodyRemainder (line 226) | boolean hasAggregatedBodyRemainder() {
method aggregatedBodyReaderIndex (line 233) | int aggregatedBodyReaderIndex() {
method aggregatedBodyReaderIndex (line 242) | void aggregatedBodyReaderIndex(int index) {
method getRequiredHeader (line 249) | Header getRequiredHeader() {
method readHeader (line 267) | DecoderState readHeader() {
method readChunk (line 280) | DecoderState readChunk() {
method retain (line 307) | DecoderState retain() {
method release (line 321) | void release() {
method getChunkLength (line 327) | int getChunkLength() {
class ListSink (line 333) | static class ListSink<T> extends ArrayList<T> implements SynchronousSi...
method ListSink (line 335) | public ListSink() {
method complete (line 339) | @Override
method currentContext (line 344) | @Deprecated
method contextView (line 350) | @Override
method error (line 355) | @Override
method next (line 360) | @Override
FILE: src/main/java/io/r2dbc/mssql/client/TdsEncoder.java
class TdsEncoder (line 56) | public final class TdsEncoder extends ChannelOutboundHandlerAdapter impl...
method TdsEncoder (line 76) | public TdsEncoder(PacketIdProvider packetIdProvider) {
method TdsEncoder (line 86) | public TdsEncoder(PacketIdProvider packetIdProvider, int packetSize) {
method write (line 92) | @Override
method onEnvironmentChange (line 187) | @Override
method setPacketSize (line 196) | public void setPacketSize(int packetSize) {
method getPacketSize (line 200) | public int getPacketSize() {
method getLastHeader (line 204) | private static HeaderOptions getLastHeader(HeaderOptions headerOptions) {
method getChunkedHeaderOptions (line 208) | private static HeaderOptions getChunkedHeaderOptions(HeaderOptions hea...
method doWriteFragment (line 212) | private void doWriteFragment(ChannelHandlerContext ctx, ChannelPromise...
method writeSingleMessage (line 224) | private void writeSingleMessage(ChannelHandlerContext ctx, ChannelProm...
method writeChunkedMessage (line 258) | private void writeChunkedMessage(ChannelHandlerContext ctx, ChannelPro...
method estimateChunkSize (line 309) | int estimateChunkSize(int readableBytes) {
method requiresChunking (line 313) | private boolean requiresChunking(int readableBytes) {
method getBytesToWrite (line 317) | private int getBytesToWrite(int readableBytes) {
method getEffectiveChunkSizeWithoutHeader (line 324) | private int getEffectiveChunkSizeWithoutHeader(int readableBytes) {
method isLastTransportPacket (line 328) | private boolean isLastTransportPacket(int readableBytes, boolean lastL...
type ResetHeader (line 340) | public enum ResetHeader {
FILE: src/main/java/io/r2dbc/mssql/client/TransactionStatus.java
type TransactionStatus (line 24) | public enum TransactionStatus {
FILE: src/main/java/io/r2dbc/mssql/client/ssl/ContextProxy.java
class ContextProxy (line 30) | class ContextProxy extends ChannelDuplexHandler {
FILE: src/main/java/io/r2dbc/mssql/client/ssl/ExpectedHostnameX509TrustManager.java
class ExpectedHostnameX509TrustManager (line 35) | public final class ExpectedHostnameX509TrustManager implements X509Trust...
method ExpectedHostnameX509TrustManager (line 45) | public ExpectedHostnameX509TrustManager(X509TrustManager tm, String ex...
method checkClientTrusted (line 52) | public void checkClientTrusted(X509Certificate[] chain, String authTyp...
method checkServerTrusted (line 61) | public void checkServerTrusted(X509Certificate[] chain, String authTyp...
method getAcceptedIssuers (line 76) | public X509Certificate[] getAcceptedIssuers() {
method validateServerNameInCertificate (line 80) | private void validateServerNameInCertificate(X509Certificate cert) thr...
method validateServerName (line 118) | private boolean validateServerName(@Nullable String nameInCert) {
method logFailMessage (line 140) | private void logFailMessage(String nameInCert) {
method logSuccessMessage (line 147) | private void logSuccessMessage(String nameInCert) {
FILE: src/main/java/io/r2dbc/mssql/client/ssl/HostNamePredicate.java
class HostNamePredicate (line 37) | class HostNamePredicate implements Predicate<String> {
method HostNamePredicate (line 41) | private HostNamePredicate(Pattern hostnamePattern) {
method of (line 52) | public static HostNamePredicate of(String expectedHostname) {
method test (line 94) | @Override
FILE: src/main/java/io/r2dbc/mssql/client/ssl/SslConfiguration.java
type SslConfiguration (line 39) | public interface SslConfiguration {
method isSslEnabled (line 44) | boolean isSslEnabled();
method getSslContext (line 54) | SslContext getSslContext() throws GeneralSecurityException;
FILE: src/main/java/io/r2dbc/mssql/client/ssl/SslEventHandler.java
class SslEventHandler (line 28) | class SslEventHandler extends ChannelDuplexHandler {
method userEventTriggered (line 30) | @Override
FILE: src/main/java/io/r2dbc/mssql/client/ssl/SslState.java
type SslState (line 27) | public enum SslState implements Message {
FILE: src/main/java/io/r2dbc/mssql/client/ssl/TdsSslHandler.java
class TdsSslHandler (line 57) | @ChannelHandler.Sharable
method TdsSslHandler (line 90) | public TdsSslHandler(PacketIdProvider packetIdProvider, SslConfigurati...
method setSslHandler (line 101) | void setSslHandler(SslHandler sslHandler) {
method setState (line 105) | void setState(SslState state) {
method createSslHandler (line 116) | private static SslHandler createSslHandler(SslConfiguration sslConfigu...
method userEventTriggered (line 131) | @Override
method handlerAdded (line 173) | @Override
method handlerRemoved (line 178) | @Override
method channelInactive (line 187) | @Override
method write (line 213) | @Override
method unwrap (line 246) | private Object unwrap(ByteBufAllocator allocator, Object msg) {
method flush (line 281) | @Override
method channelReadComplete (line 308) | @Override
method channelRead (line 325) | @Override
method isInHandshake (line 383) | private boolean isInHandshake() {
method requiresWrapping (line 387) | private boolean requiresWrapping() {
class Chunk (line 394) | static class Chunk {
method Chunk (line 404) | Chunk(Header header, ByteBuf fullMessage, CompositeByteBuf aggregato...
method defragment (line 415) | void defragment(ByteBuf chunk) {
method updateHeader (line 441) | void updateHeader(Header header) {
method isCompleteHandshakeAvailable (line 452) | boolean isCompleteHandshakeAvailable() {
method getRemainingLength (line 456) | int getRemainingLength() {
method isCompletePacketAvailable (line 467) | static boolean isCompletePacketAvailable(Header header, ByteBuf buff...
FILE: src/main/java/io/r2dbc/mssql/client/ssl/TrustAllTrustManager.java
type TrustAllTrustManager (line 29) | public enum TrustAllTrustManager implements X509TrustManager {
method checkClientTrusted (line 33) | public void checkClientTrusted(X509Certificate[] chain, String authTyp...
method checkServerTrusted (line 36) | public void checkServerTrusted(X509Certificate[] chain, String authTyp...
method getAcceptedIssuers (line 39) | public X509Certificate[] getAcceptedIssuers() {
FILE: src/main/java/io/r2dbc/mssql/client/ssl/X509CertificateUtil.java
class X509CertificateUtil (line 34) | final class X509CertificateUtil {
method getHostName (line 42) | @Nullable
method extractCommonName (line 54) | @Nullable
method getSubjectAlternativeNames (line 97) | static List<String> getSubjectAlternativeNames(X509Certificate cert) t...
FILE: src/main/java/io/r2dbc/mssql/codec/AbstractCodec.java
class AbstractCodec (line 32) | abstract class AbstractCodec<T> implements Codec<T> {
method AbstractCodec (line 41) | AbstractCodec(Class<T> type) {
method canEncode (line 45) | @Override
method encode (line 53) | @Override
method canEncodeNull (line 63) | @Override
method encodeNull (line 71) | @Override
method canDecode (line 79) | @Override
method decode (line 89) | @Nullable
method getType (line 103) | @Override
method doEncode (line 114) | abstract Encoded doEncode(ByteBufAllocator allocator, RpcParameterCont...
method doEncodeNull (line 122) | abstract Encoded doEncodeNull(ByteBufAllocator allocator);
method doCanDecode (line 130) | abstract boolean doCanDecode(TypeInformation typeInformation);
method doDecode (line 141) | @Nullable
FILE: src/main/java/io/r2dbc/mssql/codec/AbstractNumericCodec.java
class AbstractNumericCodec (line 39) | abstract class AbstractNumericCodec<T> extends AbstractCodec<T> {
method AbstractNumericCodec (line 66) | AbstractNumericCodec(Class<T> type, LongToObjectFunction<T> converter) {
method canEncodeNull (line 71) | @Override
method doCanDecode (line 76) | @Override
method doDecode (line 81) | @Override
method decodeDecimal (line 107) | static BigDecimal decodeDecimal(ByteBuf buffer, int length, int scale) {
method encodeNull (line 121) | @Override
type LongToObjectFunction (line 132) | @FunctionalInterface
method apply (line 141) | T apply(long value);
FILE: src/main/java/io/r2dbc/mssql/codec/BigIntegerCodec.java
class BigIntegerCodec (line 38) | final class BigIntegerCodec extends AbstractNumericCodec<BigInteger> {
method BigIntegerCodec (line 47) | private BigIntegerCodec() {
method doEncode (line 51) | @Override
method doEncodeNull (line 56) | @Override
method doDecode (line 61) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/BinaryCodec.java
class BinaryCodec (line 46) | class BinaryCodec implements Codec<Object> {
method BinaryCodec (line 65) | private BinaryCodec() {
method canEncode (line 68) | @Override
method encode (line 76) | @Override
method canEncodeNull (line 126) | @Override
method canEncodeNull (line 131) | @Override
method getType (line 140) | @SuppressWarnings("unchecked")
method encodeNull (line 146) | @Override
method encodeNull (line 151) | @Override
method canDecode (line 156) | @Override
method decode (line 165) | @Nullable
method doDecode (line 192) | Object doDecode(ByteBuf buffer, Length length, TypeInformation type, C...
class VarbinaryEncoded (line 217) | static class VarbinaryEncoded extends RpcEncoding.HintedEncoded {
method VarbinaryEncoded (line 221) | VarbinaryEncoded(TdsDataType dataType, Supplier<ByteBuf> value) {
method getFormalType (line 225) | @Override
method exceedsBigVarbinary (line 232) | private static boolean exceedsBigVarbinary(int length) {
FILE: src/main/java/io/r2dbc/mssql/codec/BlobCodec.java
class BlobCodec (line 46) | public class BlobCodec extends AbstractCodec<Blob> {
method BlobCodec (line 55) | private BlobCodec() {
method doEncode (line 59) | @Override
method canEncodeNull (line 64) | @Override
method doEncodeNull (line 69) | @Override
method encodeNull (line 74) | @Override
method doCanDecode (line 79) | @Override
method decode (line 84) | @Nullable
method doDecode (line 111) | @Override
class ScalarBlob (line 136) | static class ScalarBlob implements Blob {
method ScalarBlob (line 140) | ScalarBlob(List<ByteBuf> buffers) {
method stream (line 145) | @Override
method discard (line 168) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/BooleanCodec.java
class BooleanCodec (line 34) | final class BooleanCodec extends AbstractNumericCodec<Boolean> {
method BooleanCodec (line 43) | private BooleanCodec() {
method doEncode (line 47) | @Override
method doEncodeNull (line 52) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/ByteArray.java
class ByteArray (line 33) | abstract class ByteArray {
method fromEncoded (line 41) | static byte[] fromEncoded(Function<ByteBufAllocator, Encoded> encodeFu...
method fromBuffer (line 62) | static byte[] fromBuffer(Function<ByteBufAllocator, ByteBuf> encodeFun...
method ByteArray (line 74) | private ByteArray() {
FILE: src/main/java/io/r2dbc/mssql/codec/ByteCodec.java
class ByteCodec (line 34) | final class ByteCodec extends AbstractNumericCodec<Byte> {
method ByteCodec (line 43) | private ByteCodec() {
method doEncode (line 47) | @Override
method doEncodeNull (line 52) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/CharacterEncoder.java
class CharacterEncoder (line 43) | class CharacterEncoder {
method encodeNull (line 61) | static Encoded encodeNull(SqlServerType serverType) {
method encodeBigVarchar (line 75) | static Encoded encodeBigVarchar(ByteBufAllocator allocator, RpcDirecti...
method encodeBigVarchar (line 98) | static void encodeBigVarchar(ByteBuf buffer, RpcDirection direction, C...
method encodeCharSequence (line 164) | private static ByteBuf encodeCharSequence(ByteBufAllocator alloc, Coll...
method encodePlp (line 181) | static Encoded encodePlp(ByteBufAllocator allocator, @Nullable SqlServ...
method isNational (line 191) | private static boolean isNational(@Nullable SqlServerType serverType) {
method encodePlp (line 195) | static Encoded encodePlp(ByteBufAllocator allocator, @Nullable SqlServ...
method getPlpType (line 204) | private static SqlServerType getPlpType(@Nullable SqlServerType server...
method encodeCharSequence (line 208) | private static ByteBuf encodeCharSequence(ByteBufAllocator allocator, ...
class NvarcharEncoded (line 213) | private static class NvarcharEncoded extends RpcEncoding.HintedEncoded {
method NvarcharEncoded (line 217) | NvarcharEncoded(TdsDataType dataType, Supplier<ByteBuf> value) {
method getFormalType (line 221) | @Override
class VarcharEncoded (line 228) | private static class VarcharEncoded extends RpcEncoding.HintedEncoded {
method VarcharEncoded (line 232) | VarcharEncoded(TdsDataType dataType, Supplier<ByteBuf> value) {
method getFormalType (line 236) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/ClobCodec.java
class ClobCodec (line 58) | public class ClobCodec extends AbstractCodec<Clob> {
method ClobCodec (line 70) | private ClobCodec() {
method doEncode (line 74) | @Override
method canEncodeNull (line 79) | @Override
method doEncodeNull (line 84) | @Override
method encodeNull (line 89) | @Override
method doCanDecode (line 94) | @Override
method decode (line 99) | @Nullable
method doDecode (line 126) | @Override
class ScalarClob (line 153) | static class ScalarClob implements Clob {
method ScalarClob (line 163) | ScalarClob(TypeInformation type, Length valueLength, ByteBuf buffer) {
method stream (line 170) | @Override
method discard (line 234) | @Override
method releaseBuffers (line 239) | private void releaseBuffers() {
method createBufferStream (line 245) | private static Flux<ByteBuf> createBufferStream(ByteBuf plpStream, L...
class ClobDecodeException (line 274) | static class ClobDecodeException extends R2dbcNonTransientException {
method ClobDecodeException (line 276) | public ClobDecodeException(String reason) {
FILE: src/main/java/io/r2dbc/mssql/codec/Codec.java
type Codec (line 37) | interface Codec<T> {
method canEncode (line 46) | boolean canEncode(Object value);
method encode (line 56) | Encoded encode(ByteBufAllocator allocator, RpcParameterContext context...
method canEncodeNull (line 65) | boolean canEncodeNull(Class<?> type);
method canEncodeNull (line 75) | boolean canEncodeNull(SqlServerType serverType);
method encodeNull (line 83) | Encoded encodeNull(ByteBufAllocator allocator);
method encodeNull (line 92) | Encoded encodeNull(ByteBufAllocator allocator, SqlServerType serverType);
method canDecode (line 102) | boolean canDecode(Decodable decodable, Class<?> type);
method decode (line 112) | @Nullable
method getType (line 120) | Class<T> getType();
FILE: src/main/java/io/r2dbc/mssql/codec/Codecs.java
type Codecs (line 36) | public interface Codecs {
method encode (line 46) | Encoded encode(ByteBufAllocator allocator, RpcParameterContext context...
method encodeNull (line 55) | Encoded encodeNull(ByteBufAllocator allocator, Class<?> type);
method decode (line 66) | @Nullable
method getJavaType (line 77) | Class<?> getJavaType(TypeInformation type);
FILE: src/main/java/io/r2dbc/mssql/codec/DecimalCodec.java
class DecimalCodec (line 43) | final class DecimalCodec extends AbstractNumericCodec<BigDecimal> {
method DecimalCodec (line 63) | private DecimalCodec() {
method doEncode (line 67) | @Override
method doEncodeNull (line 92) | @Override
method doDecode (line 97) | @Override
method encodeBigDecimal (line 111) | private static void encodeBigDecimal(ByteBuf buffer, BigDecimal value) {
method exceedsMaxPrecisionOrScale (line 132) | private static boolean exceedsMaxPrecisionOrScale(BigDecimal value) {
class DecimalEncoded (line 148) | static class DecimalEncoded extends RpcEncoding.HintedEncoded {
method DecimalEncoded (line 154) | DecimalEncoded(TdsDataType dataType, Supplier<ByteBuf> value, int le...
method getFormalType (line 160) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/Decodable.java
type Decodable (line 26) | public interface Decodable {
method getType (line 33) | TypeInformation getType();
method getName (line 40) | String getName();
FILE: src/main/java/io/r2dbc/mssql/codec/DefaultCodecs.java
class DefaultCodecs (line 37) | public final class DefaultCodecs implements Codecs {
method DefaultCodecs (line 48) | @SuppressWarnings("rawtypes")
method encode (line 90) | @SuppressWarnings({"unchecked", "rawtpes"})
method getServerType (line 146) | @Nullable
method encodeNull (line 164) | @Override
method decode (line 185) | @Override
method doDecode (line 199) | @Nullable
method getJavaType (line 204) | @Override
method getDecodingCodec (line 212) | @SuppressWarnings("unchecked")
class TypeInformationWrapper (line 230) | static class TypeInformationWrapper implements Decodable {
method TypeInformationWrapper (line 234) | TypeInformationWrapper(TypeInformation typeInformation) {
method getType (line 238) | @Override
method getName (line 243) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/DoubleCodec.java
class DoubleCodec (line 38) | final class DoubleCodec extends AbstractCodec<Double> {
method DoubleCodec (line 44) | private DoubleCodec() {
method doEncode (line 48) | @Override
method canEncodeNull (line 53) | @Override
method doEncodeNull (line 58) | @Override
method encodeNull (line 63) | @Override
method doCanDecode (line 68) | @Override
method doDecode (line 73) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/Encoded.java
class Encoded (line 33) | public class Encoded implements Disposable {
method Encoded (line 39) | Encoded(TdsDataType dataType, Supplier<ByteBuf> encoder) {
method of (line 44) | public static Encoded of(TdsDataType dataType, ByteBuf value) {
method of (line 48) | public static Encoded of(TdsDataType dataType, Supplier<ByteBuf> value) {
method getDataType (line 52) | public TdsDataType getDataType() {
method getValue (line 56) | public ByteBuf getValue() {
method getFormalType (line 65) | public String getFormalType() {
method estimateLength (line 84) | public int estimateLength() {
method ofLengthAware (line 97) | public static Supplier<ByteBuf> ofLengthAware(int length, IntFunction<...
method dispose (line 101) | @Override
class DisposableSupplier (line 109) | static class DisposableSupplier implements Supplier<ByteBuf>, Disposab...
method DisposableSupplier (line 113) | DisposableSupplier(ByteBuf buf) {
method get (line 117) | @Override
method dispose (line 122) | @Override
method isDisposed (line 127) | @Override
class LengthAwareSupplier (line 134) | static class LengthAwareSupplier implements Supplier<ByteBuf> {
method LengthAwareSupplier (line 140) | public LengthAwareSupplier(int length, IntFunction<ByteBuf> delegate) {
method get (line 145) | @Override
method getLength (line 150) | public int getLength() {
FILE: src/main/java/io/r2dbc/mssql/codec/FloatCodec.java
class FloatCodec (line 37) | final class FloatCodec extends AbstractCodec<Float> {
method FloatCodec (line 43) | private FloatCodec() {
method doEncode (line 47) | @Override
method canEncodeNull (line 52) | @Override
method doEncodeNull (line 57) | @Override
method encodeNull (line 62) | @Override
method doCanDecode (line 67) | @Override
method doDecode (line 72) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/IntegerCodec.java
class IntegerCodec (line 34) | final class IntegerCodec extends AbstractNumericCodec<Integer> {
method IntegerCodec (line 43) | private IntegerCodec() {
method doEncode (line 47) | @Override
method doEncodeNull (line 52) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/LocalDateCodec.java
class LocalDateCodec (line 37) | final class LocalDateCodec extends AbstractCodec<LocalDate> {
method LocalDateCodec (line 51) | private LocalDateCodec() {
method doEncode (line 55) | @Override
method canEncodeNull (line 69) | @Override
method doEncodeNull (line 74) | @Override
method encodeNull (line 79) | @Override
method doCanDecode (line 84) | @Override
method doDecode (line 89) | @Override
method encode (line 104) | static void encode(ByteBuf buffer, LocalDate value) {
FILE: src/main/java/io/r2dbc/mssql/codec/LocalDateTimeCodec.java
class LocalDateTimeCodec (line 46) | final class LocalDateTimeCodec extends AbstractCodec<LocalDateTime> {
method LocalDateTimeCodec (line 64) | private LocalDateTimeCodec() {
method doEncode (line 68) | @Override
method canEncodeNull (line 77) | @Override
method doEncodeNull (line 82) | @Override
method encodeNull (line 87) | @Override
method doCanDecode (line 92) | @Override
method doDecode (line 97) | @Override
method encode (line 133) | static void encode(ByteBuf buffer, SqlServerType type, int scale, Loca...
FILE: src/main/java/io/r2dbc/mssql/codec/LocalTimeCodec.java
class LocalTimeCodec (line 40) | final class LocalTimeCodec extends AbstractCodec<LocalTime> {
method LocalTimeCodec (line 54) | private LocalTimeCodec() {
method doEncode (line 58) | @Override
method canEncodeNull (line 66) | @Override
method doEncodeNull (line 71) | @Override
method encodeNull (line 76) | @Override
method doCanDecode (line 81) | @Override
method doDecode (line 86) | @Override
method doEncode (line 107) | static void doEncode(ByteBuf buffer, int scale, LocalTime value) {
method doEncodeValue (line 113) | private static void doEncodeValue(ByteBuf buffer, int valueLength, Loc...
FILE: src/main/java/io/r2dbc/mssql/codec/LongCodec.java
class LongCodec (line 34) | final class LongCodec extends AbstractNumericCodec<Long> {
method LongCodec (line 43) | private LongCodec() {
method doEncode (line 47) | @Override
method doEncodeNull (line 52) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/MoneyCodec.java
class MoneyCodec (line 42) | final class MoneyCodec extends AbstractCodec<BigDecimal> {
method MoneyCodec (line 61) | private MoneyCodec() {
method doEncode (line 65) | @Override
method canEncodeNull (line 70) | @Override
method doEncodeNull (line 75) | @Override
method encodeNull (line 80) | @Override
method doCanDecode (line 85) | @Override
method doDecode (line 90) | @Override
method decode (line 98) | private static BigInteger decode(ByteBuf buffer, int length) {
FILE: src/main/java/io/r2dbc/mssql/codec/OffsetDateTimeCodec.java
class OffsetDateTimeCodec (line 41) | final class OffsetDateTimeCodec extends AbstractCodec<OffsetDateTime> {
method OffsetDateTimeCodec (line 50) | private OffsetDateTimeCodec() {
method doEncode (line 54) | @Override
method canEncodeNull (line 71) | @Override
method doEncodeNull (line 76) | @Override
method encodeNull (line 81) | @Override
method doCanDecode (line 86) | @Override
method doDecode (line 91) | @Override
method doEncode (line 107) | static void doEncode(ByteBuf buffer, OffsetDateTime value) {
FILE: src/main/java/io/r2dbc/mssql/codec/PlpEncoded.java
class PlpEncoded (line 48) | public class PlpEncoded extends Encoded {
method PlpEncoded (line 58) | public PlpEncoded(SqlServerType dataType, ByteBufAllocator allocator, ...
method encodeHeader (line 68) | public void encodeHeader(ByteBuf byteBuf) {
method isDisposed (line 74) | @Override
method dispose (line 79) | @Override
method chunked (line 90) | public Flux<ByteBuf> chunked(IntSupplier chunkSize) {
method chunked (line 101) | public Flux<ByteBuf> chunked(IntSupplier chunkSize, boolean withSizeHe...
method getFormalType (line 105) | @Override
class ChunkOperator (line 123) | static class ChunkOperator extends FluxOperator<ByteBuf, ByteBuf> {
method ChunkOperator (line 131) | ChunkOperator(Flux<ByteBuf> source, ByteBufAllocator allocator, IntS...
method subscribe (line 139) | @Override
class ChunkSubscriber (line 146) | static class ChunkSubscriber extends AtomicLong implements CoreSubscri...
method ChunkSubscriber (line 183) | ChunkSubscriber(CoreSubscriber<? super ByteBuf> actual, ByteBufAlloc...
method currentContext (line 191) | @Override
method onSubscribe (line 196) | @Override
method onNext (line 205) | @Override
method drain (line 231) | private void drain() {
method emitNext (line 282) | private void emitNext(CompositeByteBuf aggregator, int bytesToRead) {
method onError (line 310) | @Override
method onComplete (line 331) | @Override
method request (line 338) | @Override
method cancel (line 354) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/PlpEncodedCharacters.java
class PlpEncodedCharacters (line 31) | class PlpEncodedCharacters extends PlpEncoded {
method PlpEncodedCharacters (line 35) | PlpEncodedCharacters(SqlServerType dataType, Collation collation, Byte...
method encodeHeader (line 42) | public void encodeHeader(ByteBuf byteBuf) {
FILE: src/main/java/io/r2dbc/mssql/codec/RpcDirection.java
type RpcDirection (line 24) | public enum RpcDirection {
FILE: src/main/java/io/r2dbc/mssql/codec/RpcEncoding.java
class RpcEncoding (line 40) | public final class RpcEncoding {
method RpcEncoding (line 42) | private RpcEncoding() {
method encodeString (line 54) | public static void encodeString(ByteBuf buffer, @Nullable String name,...
method encodeInteger (line 68) | public static void encodeInteger(ByteBuf buffer, @Nullable String name...
method encodeHeader (line 90) | public static void encodeHeader(ByteBuf buffer, @Nullable String name,...
method writeChar (line 111) | private static void writeChar(ByteBuf buffer, char ch) {
method encodeFixed (line 127) | public static <T> Encoded encodeFixed(ByteBufAllocator allocator, SqlS...
method encode (line 153) | public static <T> Encoded encode(ByteBufAllocator allocator, SqlServer...
method encodeNull (line 177) | public static Encoded encodeNull(ByteBufAllocator allocator, SqlServer...
method wrap (line 191) | public static Encoded wrap(byte[] buffer, SqlServerType serverType) {
method encodeTemporalNull (line 206) | public static Encoded encodeTemporalNull(ByteBufAllocator allocator, S...
method encodeTemporalNull (line 229) | public static Encoded encodeTemporalNull(ByteBufAllocator allocator, S...
method prepareBuffer (line 245) | static ByteBuf prepareBuffer(ByteBufAllocator allocator, LengthStrateg...
class HintedEncoded (line 283) | static class HintedEncoded extends Encoded {
method HintedEncoded (line 287) | public HintedEncoded(TdsDataType dataType, SqlServerType sqlServerTy...
method getFormalType (line 292) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/RpcParameterContext.java
class RpcParameterContext (line 29) | public final class RpcParameterContext {
method RpcParameterContext (line 43) | private RpcParameterContext(RpcDirection direction, @Nullable ValueCon...
method in (line 55) | public static RpcParameterContext in() {
method in (line 66) | public static RpcParameterContext in(ValueContext valueContext) {
method out (line 76) | public static RpcParameterContext out() {
method out (line 87) | public static RpcParameterContext out(ValueContext valueContext) {
method getDirection (line 94) | public RpcDirection getDirection() {
method isIn (line 101) | public boolean isIn() {
method isOut (line 108) | public boolean isOut() {
method getValueContext (line 115) | @Nullable
method getServerType (line 120) | @Nullable
method getRequiredValueContext (line 131) | public ValueContext getRequiredValueContext() {
method getRequiredValueContext (line 149) | public <T extends ValueContext> T getRequiredValueContext(Class<? exte...
method toString (line 156) | @Override
method withServerType (line 166) | public RpcParameterContext withServerType(SqlServerType serverType) {
type ValueContext (line 174) | public interface ValueContext {
method character (line 176) | static ValueContext character(Collation collation, boolean sendStrin...
class CharacterValueContext (line 185) | public static class CharacterValueContext implements ValueContext {
method CharacterValueContext (line 191) | public CharacterValueContext(Collation collation, boolean sendString...
method getCollation (line 196) | public Collation getCollation() {
method isSendStringParametersAsUnicode (line 200) | public boolean isSendStringParametersAsUnicode() {
FILE: src/main/java/io/r2dbc/mssql/codec/ShortCodec.java
class ShortCodec (line 34) | final class ShortCodec extends AbstractNumericCodec<Short> {
method ShortCodec (line 43) | private ShortCodec() {
method doEncode (line 47) | @Override
method doEncodeNull (line 52) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/StringCodec.java
class StringCodec (line 49) | final class StringCodec extends AbstractCodec<String> {
method StringCodec (line 62) | private StringCodec() {
method doEncode (line 66) | @Override
method canEncodeNull (line 80) | @Override
method doEncodeNull (line 85) | @Override
method encodeNull (line 90) | @Override
method doCanDecode (line 95) | @Override
method decode (line 100) | @Nullable
method doDecode (line 122) | @Override
method exceedsBigVarchar (line 160) | static boolean exceedsBigVarchar(RpcDirection direction, String value) {
FILE: src/main/java/io/r2dbc/mssql/codec/TimestampCodec.java
class TimestampCodec (line 36) | final class TimestampCodec extends AbstractCodec<byte[]> {
method TimestampCodec (line 40) | private TimestampCodec() {
method canEncode (line 44) | @Override
method doEncode (line 49) | @Override
method canEncodeNull (line 54) | @Override
method doEncodeNull (line 59) | @Override
method encodeNull (line 64) | @Override
method doCanDecode (line 69) | @Override
method doDecode (line 74) | @Override
FILE: src/main/java/io/r2dbc/mssql/codec/UuidCodec.java
class UuidCodec (line 30) | final class UuidCodec extends AbstractCodec<UUID> {
method UuidCodec (line 39) | private UuidCodec() {
method doEncode (line 43) | @Override
method canEncodeNull (line 56) | @Override
method doEncodeNull (line 61) | @Override
method encodeNull (line 66) | @Override
method doCanDecode (line 71) | @Override
method doDecode (line 76) | @Override
method swapForRead (line 98) | private static long swapForRead(byte[] memory) {
method swapForWrite (line 115) | private byte[] swapForWrite(long msb) {
FILE: src/main/java/io/r2dbc/mssql/codec/ZonedDateTimeCodec.java
class ZonedDateTimeCodec (line 39) | final class ZonedDateTimeCodec extends AbstractCodec<ZonedDateTime> {
method ZonedDateTimeCodec (line 48) | private ZonedDateTimeCodec() {
method doEncode (line 52) | @Override
method canEncodeNull (line 57) | @Override
method doEncodeNull (line 62) | @Override
method encodeNull (line 67) | @Override
method doCanDecode (line 72) | @Override
method doDecode (line 77) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/ClientMessage.java
type ClientMessage (line 29) | public interface ClientMessage extends Message {
method encode (line 38) | Object encode(ByteBufAllocator allocator, int packetSize);
FILE: src/main/java/io/r2dbc/mssql/message/Message.java
type Message (line 27) | public interface Message {
FILE: src/main/java/io/r2dbc/mssql/message/TDSVersion.java
type TDSVersion (line 26) | public enum TDSVersion {
method TDSVersion (line 41) | TDSVersion(int version) {
method getVersion (line 45) | public int getVersion() {
method isGreateOrEqualsTo (line 55) | public boolean isGreateOrEqualsTo(TDSVersion reference) {
FILE: src/main/java/io/r2dbc/mssql/message/TransactionDescriptor.java
class TransactionDescriptor (line 29) | public final class TransactionDescriptor {
method TransactionDescriptor (line 38) | private TransactionDescriptor(byte[] descriptor) {
method empty (line 51) | public static TransactionDescriptor empty() {
method from (line 61) | public static TransactionDescriptor from(byte[] descriptor) {
method toBytes (line 68) | public byte[] toBytes() {
method equals (line 72) | @Override
method hashCode (line 84) | @Override
method toString (line 89) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/header/DefaultHeaderOptions.java
class DefaultHeaderOptions (line 24) | class DefaultHeaderOptions implements HeaderOptions {
method get (line 37) | static HeaderOptions get(Type value, Status status) {
method DefaultHeaderOptions (line 46) | DefaultHeaderOptions(Type type, Status status) {
method getType (line 51) | @Override
method getStatus (line 56) | @Override
method is (line 61) | @Override
method toString (line 66) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/header/Header.java
class Header (line 27) | public class Header implements HeaderOptions {
method Header (line 78) | public Header(Type type, Status status, int length, int spid) {
method Header (line 82) | public Header(Type type, Status status, int length, int spid, int pack...
method Header (line 86) | public Header(Type type, Status status, short length, short spid, byte...
method create (line 109) | public static Header create(HeaderOptions options, int length, PacketI...
method getType (line 117) | public Type getType() {
method getStatus (line 121) | public Status getStatus() {
method is (line 125) | public boolean is(Status.StatusBit bit) {
method getSpid (line 129) | public short getSpid() {
method getPacketId (line 133) | public byte getPacketId() {
method getWindow (line 137) | public byte getWindow() {
method getLength (line 141) | public short getLength() {
method encode (line 150) | public void encode(ByteBuf buffer) {
method encode (line 161) | public void encode(ByteBuf buffer, PacketIdProvider packetIdProvider) {
method encode (line 174) | public static void encode(ByteBuf buffer, HeaderOptions options, int l...
method encode (line 189) | public static void encode(ByteBuf buffer, Type type, Status status, in...
method canDecode (line 205) | public static boolean canDecode(ByteBuf buffer) {
method decode (line 213) | public static Header decode(ByteBuf buffer) {
method equals (line 225) | @Override
method hashCode (line 242) | @Override
method toString (line 247) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/header/HeaderOptions.java
type HeaderOptions (line 25) | public interface HeaderOptions {
method and (line 33) | default HeaderOptions and(Status.StatusBit bit) {
method not (line 51) | default HeaderOptions not(Status.StatusBit bit) {
method getType (line 68) | Type getType();
method getStatus (line 75) | Status getStatus();
method is (line 83) | boolean is(Status.StatusBit bit);
method create (line 92) | static HeaderOptions create(Type type, Status status) {
FILE: src/main/java/io/r2dbc/mssql/message/header/PacketIdProvider.java
type PacketIdProvider (line 30) | @FunctionalInterface
method nextPacketId (line 36) | byte nextPacketId();
method just (line 44) | static PacketIdProvider just(int value) {
method just (line 54) | static PacketIdProvider just(byte value) {
method atomic (line 63) | static PacketIdProvider atomic() {
FILE: src/main/java/io/r2dbc/mssql/message/header/Status.java
class Status (line 35) | public class Status {
method Status (line 47) | private Status(Set<StatusBit> statusBits) {
method empty (line 56) | public static Status empty() {
method fromBitmask (line 66) | public static Status fromBitmask(byte bitmask) {
method fromBitmask0 (line 70) | private static Status fromBitmask0(byte bitmask) {
method of (line 89) | public static Status of(StatusBit bit) {
method of (line 102) | public static Status of(StatusBit bit, StatusBit... other) {
method and (line 122) | public Status and(StatusBit bit) {
method not (line 139) | public Status not(StatusBit bit) {
method is (line 158) | public boolean is(Status.StatusBit bit) {
method getValue (line 165) | public byte getValue() {
method equals (line 169) | @Override
method hashCode (line 181) | @Override
method getStatusValue (line 186) | private static byte getStatusValue(Collection<StatusBit> statusBits) {
method toString (line 197) | @Override
type StatusBit (line 208) | public enum StatusBit {
method StatusBit (line 226) | StatusBit(int bits) {
method getBits (line 232) | public int getBits() {
FILE: src/main/java/io/r2dbc/mssql/message/header/Type.java
type Type (line 24) | public enum Type {
method Type (line 29) | Type(int value) {
method valueOf (line 41) | public static Type valueOf(byte value) {
method getValue (line 71) | public byte getValue() {
FILE: src/main/java/io/r2dbc/mssql/message/tds/ContextualTdsFragment.java
class ContextualTdsFragment (line 29) | public class ContextualTdsFragment extends TdsFragment {
method ContextualTdsFragment (line 39) | public ContextualTdsFragment(HeaderOptions headerOptions, ByteBuf byte...
method getHeaderOptions (line 48) | public HeaderOptions getHeaderOptions() {
FILE: src/main/java/io/r2dbc/mssql/message/tds/Decode.java
class Decode (line 27) | public final class Decode {
method Decode (line 29) | private Decode() {
method asByte (line 38) | public static byte asByte(ByteBuf buffer) {
method uByte (line 48) | public static int uByte(ByteBuf buffer) {
method dword (line 58) | public static long dword(ByteBuf buffer) {
method bit (line 68) | public static byte bit(ByteBuf buffer) {
method asFloat (line 78) | public static float asFloat(ByteBuf buffer) {
method asDouble (line 88) | public static double asDouble(ByteBuf buffer) {
method tinyInt (line 98) | public static byte tinyInt(ByteBuf buffer) {
method smallInt (line 108) | public static short smallInt(ByteBuf buffer) {
method asInt (line 118) | public static int asInt(ByteBuf buffer) {
method bigint (line 128) | public static long bigint(ByteBuf buffer) {
method asLong (line 138) | public static int asLong(ByteBuf buffer) {
method uLongLong (line 148) | public static long uLongLong(ByteBuf buffer) {
method uShort (line 158) | public static int uShort(ByteBuf buffer) {
method peekUShort (line 169) | @Nullable
method intBigEndian (line 190) | public static int intBigEndian(ByteBuf buffer) {
method unicodeUString (line 200) | public static String unicodeUString(ByteBuf buffer) {
method unicodeBString (line 213) | public static String unicodeBString(ByteBuf buffer) {
method decodeUnicode (line 220) | private static String decodeUnicode(ByteBuf buffer, int length) {
FILE: src/main/java/io/r2dbc/mssql/message/tds/Encode.java
class Encode (line 32) | public final class Encode {
method Encode (line 36) | private Encode() {
method asByte (line 45) | public static void asByte(ByteBuf buffer, int value) {
method asByte (line 55) | public static void asByte(ByteBuf buffer, byte value) {
method asFloat (line 65) | public static void asFloat(ByteBuf buffer, float value) {
method asDouble (line 75) | public static void asDouble(ByteBuf buffer, double value) {
method dword (line 85) | public static void dword(ByteBuf buffer, int value) {
method asLong (line 95) | public static void asLong(ByteBuf buffer, int value) {
method smallMoney (line 105) | public static void smallMoney(ByteBuf buffer, BigInteger value) {
method money (line 115) | public static void money(ByteBuf buffer, BigInteger value) {
method bit (line 130) | public static void bit(ByteBuf buffer, boolean value) {
method tinyInt (line 140) | public static void tinyInt(ByteBuf buffer, byte value) {
method smallInt (line 150) | public static void smallInt(ByteBuf buffer, short value) {
method smallInt (line 160) | public static void smallInt(ByteBuf buffer, int value) {
method asInt (line 170) | public static void asInt(ByteBuf buffer, int value) {
method bigint (line 180) | public static void bigint(ByteBuf buffer, long value) {
method uLongLong (line 190) | public static void uLongLong(ByteBuf buffer, long value) {
method uShort (line 200) | public static void uShort(ByteBuf buffer, int value) {
method intBigEndian (line 215) | public static void intBigEndian(ByteBuf buffer, int value) {
method shortBE (line 225) | public static void shortBE(ByteBuf buffer, short value) {
method uShortBE (line 235) | public static void uShortBE(ByteBuf buffer, int value) {
method uString (line 251) | public static void uString(ByteBuf buffer, String value, Charset chars...
method unicodeStream (line 265) | public static void unicodeStream(ByteBuf buffer, String value) {
method rpcString (line 280) | public static void rpcString(ByteBuf buffer, CharSequence value) {
method rpcString (line 297) | public static void rpcString(ByteBuf buffer, CharSequence value, Chars...
FILE: src/main/java/io/r2dbc/mssql/message/tds/FirstTdsFragment.java
class FirstTdsFragment (line 30) | public final class FirstTdsFragment extends ContextualTdsFragment {
method FirstTdsFragment (line 38) | FirstTdsFragment(HeaderOptions headerOptions, ByteBuf byteBuf) {
FILE: src/main/java/io/r2dbc/mssql/message/tds/LastTdsFragment.java
class LastTdsFragment (line 29) | public final class LastTdsFragment extends TdsFragment {
method LastTdsFragment (line 37) | LastTdsFragment(ByteBuf byteBuf) {
FILE: src/main/java/io/r2dbc/mssql/message/tds/ProtocolException.java
class ProtocolException (line 29) | public final class ProtocolException extends R2dbcNonTransientResourceEx...
method ProtocolException (line 54) | public ProtocolException(@Nullable String reason) {
method ProtocolException (line 64) | public ProtocolException(@Nullable String reason, int driverErrorCode) {
method ProtocolException (line 74) | public ProtocolException(@Nullable String reason, @Nullable Throwable ...
method ProtocolException (line 85) | public ProtocolException(@Nullable String reason, @Nullable Throwable ...
method invalidTds (line 95) | public static ProtocolException invalidTds(String reason) {
method unsupported (line 105) | public static ProtocolException unsupported(String reason) {
method unsupported (line 115) | public static ProtocolException unsupported(Throwable cause) {
FILE: src/main/java/io/r2dbc/mssql/message/tds/Redirect.java
class Redirect (line 12) | public final class Redirect {
method getServerName (line 25) | public String getServerName() {
method getPort (line 34) | public int getPort() {
method Redirect (line 38) | private Redirect(String serverName, int port) {
method create (line 50) | public static Redirect create(String serverName, int port) {
method decode (line 60) | public static Redirect decode(ByteBuf buffer) {
FILE: src/main/java/io/r2dbc/mssql/message/tds/ServerCharset.java
type ServerCharset (line 26) | public enum ServerCharset {
method ServerCharset (line 60) | ServerCharset(String charsetName, boolean supportsAsciiConversion, boo...
method checkSupported (line 72) | private void checkSupported() {
method charset (line 90) | public Charset charset() {
method supportsAsciiConversion (line 104) | public boolean supportsAsciiConversion() {
method hasAsciiCompatibleSBCS (line 111) | public boolean hasAsciiCompatibleSBCS() {
FILE: src/main/java/io/r2dbc/mssql/message/tds/TdsFragment.java
class TdsFragment (line 27) | public class TdsFragment {
method TdsFragment (line 36) | TdsFragment(ByteBuf buffer) {
method getByteBuf (line 43) | public ByteBuf getByteBuf() {
FILE: src/main/java/io/r2dbc/mssql/message/tds/TdsPacket.java
class TdsPacket (line 31) | public final class TdsPacket extends TdsFragment {
method TdsPacket (line 35) | TdsPacket(Header header, ByteBuf buffer) {
method encode (line 55) | public ByteBuf encode(ByteBufAllocator allocator) {
method encode (line 78) | public ByteBuf encode(ByteBufAllocator allocator, PacketIdProvider pac...
FILE: src/main/java/io/r2dbc/mssql/message/tds/TdsPackets.java
type TdsPackets (line 28) | public interface TdsPackets {
method create (line 37) | static ContextualTdsFragment create(HeaderOptions options, ByteBuf buf...
method create (line 47) | static TdsFragment create(ByteBuf buffer) {
method first (line 58) | static FirstTdsFragment first(HeaderOptions options, ByteBuf buffer) {
method last (line 68) | static LastTdsFragment last(ByteBuf buffer) {
method create (line 79) | static TdsPacket create(Header header, ByteBuf buffer) {
FILE: src/main/java/io/r2dbc/mssql/message/token/AbstractDataToken.java
class AbstractDataToken (line 24) | public abstract class AbstractDataToken implements DataToken {
method AbstractDataToken (line 33) | protected AbstractDataToken(byte type) {
method getType (line 40) | public byte getType() {
method getName (line 47) | public abstract String getName();
FILE: src/main/java/io/r2dbc/mssql/message/token/AbstractDoneToken.java
class AbstractDoneToken (line 32) | public abstract class AbstractDoneToken extends AbstractDataToken implem...
method AbstractDoneToken (line 102) | protected AbstractDoneToken(byte type, int status, int currentCommand,...
method isAttentionAck (line 118) | public static boolean isAttentionAck(Message message) {
method isDone (line 133) | public static boolean isDone(Message message) {
method hasCount (line 148) | public static boolean hasCount(Message message) {
method canDecode (line 164) | public static boolean canDecode(ByteBuf buffer) {
method encode (line 178) | public void encode(ByteBuf buffer) {
method getStatus (line 188) | public int getStatus() {
method isAttentionAck (line 195) | public boolean isAttentionAck() {
method isDone (line 202) | public boolean isDone() {
method isError (line 209) | public boolean isError() {
method hasMore (line 216) | public boolean hasMore() {
method hasCount (line 223) | public boolean hasCount() {
method getCurrentCommand (line 230) | public int getCurrentCommand() {
method getRowCount (line 237) | public long getRowCount() {
method equals (line 241) | @Override
method hashCode (line 255) | @Override
method toString (line 260) | @Override
method value (line 274) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/AbstractInfoToken.java
class AbstractInfoToken (line 28) | public abstract class AbstractInfoToken extends AbstractDataToken {
method AbstractInfoToken (line 78) | AbstractInfoToken(byte type, long length, long number, byte state, byt...
method canDecode (line 99) | public static boolean canDecode(ByteBuf buffer) {
method getNumber (line 108) | public long getNumber() {
method getState (line 112) | public byte getState() {
method getInfoClass (line 116) | public byte getInfoClass() {
method getClassification (line 120) | public Classification getClassification() {
method getMessage (line 124) | public String getMessage() {
method getServerName (line 128) | public String getServerName() {
method getProcName (line 132) | public String getProcName() {
method getLineNumber (line 136) | public long getLineNumber() {
method toString (line 140) | @Override
type Classification (line 155) | public enum Classification {
method Classification (line 244) | Classification(int code) {
method Classification (line 248) | Classification(int from, int to) {
method valueOf (line 259) | static Classification valueOf(int value) {
FILE: src/main/java/io/r2dbc/mssql/message/token/AllHeaders.java
class AllHeaders (line 32) | public final class AllHeaders {
method AllHeaders (line 40) | private AllHeaders(byte[] transactionDescriptor, int outstandingReques...
method transactional (line 60) | public static AllHeaders transactional(TransactionDescriptor transacti...
method transactional (line 75) | public static AllHeaders transactional(byte[] transactionDescriptor, i...
method encode (line 87) | public void encode(ByteBuf buffer) {
method getLength (line 96) | public int getLength() {
method equals (line 100) | @Override
method hashCode (line 114) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/Attention.java
class Attention (line 41) | public final class Attention implements ClientMessage, TokenStream {
method Attention (line 53) | private Attention(int outstandingRequests, byte[] transactionDescripto...
method create (line 67) | public static Attention create(int outstandingRequests, TransactionDes...
method encode (line 74) | @Override
method encode (line 89) | void encode(ByteBuf buffer) {
method getName (line 93) | @Override
method equals (line 98) | @Override
method hashCode (line 110) | @Override
method toString (line 115) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/ColInfoToken.java
class ColInfoToken (line 32) | public class ColInfoToken extends AbstractDataToken {
method ColInfoToken (line 48) | private ColInfoToken(List<ColInfo> columns) {
method skip (line 60) | public static ColInfoToken skip(ByteBuf buffer) {
method decode (line 74) | public static ColInfoToken decode(ByteBuf buffer) {
method canDecode (line 101) | public static boolean canDecode(ByteBuf buffer) {
method getColumns (line 112) | public List<ColInfo> getColumns() {
method getName (line 116) | @Override
method toString (line 121) | @Override
class ColInfo (line 133) | static final class ColInfo {
method ColInfo (line 158) | private ColInfo(byte column, byte table, byte status, @Nullable Stri...
method getColumn (line 165) | public byte getColumn() {
method getTable (line 169) | public byte getTable() {
method getStatus (line 173) | public byte getStatus() {
method getName (line 177) | @Nullable
method toString (line 182) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/Column.java
class Column (line 31) | public class Column implements Decodable {
method Column (line 49) | public Column(int index, String name, TypeInformation type) {
method Column (line 61) | public Column(int index, String name, TypeInformation type, @Nullable ...
method getIndex (line 74) | public int getIndex() {
method getName (line 83) | @Override
method getType (line 93) | @Override
method getTable (line 103) | @Nullable
method toString (line 108) | @Override
method equals (line 119) | @Override
method hashCode (line 133) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/ColumnMetadataToken.java
class ColumnMetadataToken (line 35) | public final class ColumnMetadataToken extends AbstractDataToken {
method ColumnMetadataToken (line 54) | private ColumnMetadataToken(Column[] columns) {
method create (line 83) | public static ColumnMetadataToken create(Column[] columns) {
method decode (line 94) | public static ColumnMetadataToken decode(ByteBuf buffer, boolean encry...
method canDecode (line 130) | public static boolean canDecode(ByteBuf buffer, boolean encryptionSupp...
method canDecodeColumn (line 171) | private static boolean canDecodeColumn(ByteBuf buffer, boolean encrypt...
method decodeDataClassification (line 203) | private static void decodeDataClassification(ByteBuf buffer) {
method decodeColumn (line 217) | private static Column decodeColumn(ByteBuf buffer, boolean encryptionS...
method getColumns (line 237) | public Column[] getColumns() {
method hasColumns (line 241) | public boolean hasColumns() {
method getName (line 245) | @Override
method toMap (line 250) | public Map<String, Column> toMap() {
method toString (line 254) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/DataToken.java
type DataToken (line 26) | public interface DataToken extends Message {
method getType (line 31) | byte getType();
method getName (line 36) | String getName();
FILE: src/main/java/io/r2dbc/mssql/message/token/DoneInProcToken.java
class DoneInProcToken (line 28) | public final class DoneInProcToken extends AbstractDoneToken {
method DoneInProcToken (line 62) | private DoneInProcToken(int status, int currentCommand, long rowCount) {
method create (line 72) | public static DoneInProcToken create(long rowCount) {
method isDone (line 82) | public static boolean isDone(Message message) {
method decode (line 97) | public static DoneInProcToken decode(ByteBuf buffer) {
method create0 (line 106) | private static DoneInProcToken create0(int status, int currentCommand,...
method getName (line 125) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/DoneProcToken.java
class DoneProcToken (line 27) | public final class DoneProcToken extends AbstractDoneToken {
method DoneProcToken (line 61) | private DoneProcToken(int status, int currentCommand, long rowCount) {
method create (line 71) | public static DoneProcToken create(long rowCount) {
method decode (line 81) | public static DoneProcToken decode(ByteBuf buffer) {
method create0 (line 90) | private static DoneProcToken create0(int status, int currentCommand, l...
method getName (line 109) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/DoneToken.java
class DoneToken (line 28) | public final class DoneToken extends AbstractDoneToken {
method DoneToken (line 62) | private DoneToken(int status, int currentCommand, long rowCount) {
method create (line 75) | public static DoneToken create(long rowCount) {
method count (line 87) | public static DoneToken count(long rowCount) {
method more (line 99) | public static DoneToken more(long rowCount) {
method isDone (line 109) | public static boolean isDone(Message message) {
method decode (line 124) | public static DoneToken decode(ByteBuf buffer) {
method create0 (line 133) | private static DoneToken create0(int status, int currentCommand, long ...
method getName (line 152) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/EnvChangeToken.java
class EnvChangeToken (line 32) | public final class EnvChangeToken extends AbstractDataToken {
method EnvChangeToken (line 50) | public EnvChangeToken(int length, EnvChangeType changeType, byte[] new...
method decode (line 69) | public static EnvChangeToken decode(ByteBuf buffer) {
method canDecode (line 109) | public static boolean canDecode(ByteBuf buffer) {
method getName (line 118) | @Override
method getLength (line 123) | public int getLength() {
method getChangeType (line 127) | public EnvChangeType getChangeType() {
method getNewValue (line 131) | public byte[] getNewValue() {
method getOldValue (line 135) | @Nullable
method getOldValueString (line 140) | public String getOldValueString() {
method getNewValueString (line 144) | public String getNewValueString() {
method toString (line 148) | @Override
type EnvChangeType (line 162) | public enum EnvChangeType {
method toByteLength (line 165) | @Override
method toByteLength (line 171) | @Override
method toByteLength (line 177) | @Override
method toByteLength (line 183) | @Override
method toByteLength (line 189) | @Override
method toByteLength (line 195) | @Override
method toByteLength (line 201) | @Override
method toByteLength (line 207) | @Override
method EnvChangeType (line 217) | EnvChangeType(int type) {
method getType (line 221) | public byte getType() {
method valueOf (line 232) | public static EnvChangeType valueOf(int value) {
method toByteLength (line 243) | public int toByteLength(byte dataLength) {
FILE: src/main/java/io/r2dbc/mssql/message/token/ErrorToken.java
class ErrorToken (line 27) | public final class ErrorToken extends AbstractInfoToken {
method ErrorToken (line 31) | public ErrorToken(long length, long number, int state, int infoClass, ...
method ErrorToken (line 35) | public ErrorToken(long length, long number, byte state, byte infoClass...
method decode (line 45) | public static ErrorToken decode(ByteBuf buffer) {
method getName (line 61) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/FeatureExtAckToken.java
class FeatureExtAckToken (line 32) | public final class FeatureExtAckToken extends AbstractDataToken {
method FeatureExtAckToken (line 40) | private FeatureExtAckToken(List<FeatureToken> featureTokens) {
method decode (line 51) | public static FeatureExtAckToken decode(ByteBuf buffer) {
method getFeatureTokens (line 76) | public List<FeatureToken> getFeatureTokens() {
method getName (line 80) | @Override
method toString (line 85) | @Override
class FeatureToken (line 97) | public abstract static class FeatureToken {
method FeatureToken (line 109) | public FeatureToken(byte featureId, long length) {
class ColumnEncryption (line 119) | public final static class ColumnEncryption extends FeatureToken {
method ColumnEncryption (line 128) | public ColumnEncryption(long length, byte tceVersion) {
method decode (line 140) | public static ColumnEncryption decode(ByteBuf buffer) {
method getTceVersion (line 159) | public byte getTceVersion() {
method toString (line 163) | @Override
class UnknownFeature (line 177) | public final static class UnknownFeature extends FeatureToken {
method UnknownFeature (line 181) | public UnknownFeature(byte featureId, long length, byte[] data) {
method decode (line 193) | public static UnknownFeature decode(byte featureId, ByteBuf buffer) {
FILE: src/main/java/io/r2dbc/mssql/message/token/Identifier.java
class Identifier (line 33) | public final class Identifier {
method Identifier (line 46) | private Identifier(@Nullable String serverName, @Nullable String datab...
method objectName (line 61) | public static Identifier objectName(String objectName) {
method builder (line 70) | public static Builder builder() {
method decode (line 81) | public static Identifier decode(ByteBuf buffer) {
method canDecodeAndSkipBytes (line 124) | static boolean canDecodeAndSkipBytes(ByteBuf buffer) {
method getServerName (line 154) | @Nullable
method getDatabaseName (line 159) | @Nullable
method getSchemaName (line 164) | @Nullable
method getObjectName (line 169) | public String getObjectName() {
method asEscapedString (line 173) | public String asEscapedString() {
method toString (line 198) | @Override
method equals (line 203) | @Override
method hashCode (line 218) | @Override
class Builder (line 226) | public static class Builder {
method Builder (line 240) | private Builder() {
method objectName (line 250) | public Builder objectName(String objectName) {
method schemaName (line 264) | public Builder schemaName(String schemaName) {
method databaseName (line 278) | public Builder databaseName(String databaseName) {
method serverName (line 292) | public Builder serverName(String serverName) {
method build (line 304) | public Identifier build() {
FILE: src/main/java/io/r2dbc/mssql/message/token/InfoToken.java
class InfoToken (line 27) | public final class InfoToken extends AbstractInfoToken {
method InfoToken (line 31) | public InfoToken(long length, long number, int state, int infoClass, S...
method InfoToken (line 35) | public InfoToken(long length, long number, byte state, byte infoClass,...
method decode (line 45) | public static InfoToken decode(ByteBuf buffer) {
method getName (line 61) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/Login7.java
class Login7 (line 46) | public final class Login7 implements TokenStream, ClientMessage {
method Login7 (line 100) | private Login7(TDSVersion tdsVersion, int packetSize, byte[] clientPro...
method builder (line 143) | public static Builder builder() {
method getName (line 147) | @Override
method encode (line 152) | @Override
method encode (line 161) | void encode(ByteBuf buffer) {
method writeToken (line 252) | private int writeToken(int dataLength, ByteBuf buffer, LoginRequestTok...
method getToken (line 261) | private LoginRequestToken getToken(TokenType tokenType) {
method toString (line 272) | @Override
class Builder (line 289) | public static class Builder {
method Builder (line 348) | private Builder() {
method tdsVersion (line 367) | public Builder tdsVersion(TDSVersion tdsVersion) {
method packetSize (line 379) | public Builder packetSize(int packetSize) {
method optionFlags1 (line 391) | public Builder optionFlags1(OptionFlags1 optionFlags1) {
method optionFlags2 (line 404) | public Builder optionFlags2(OptionFlags2 optionFlags2) {
method optionFlags3 (line 417) | public Builder optionFlags3(OptionFlags3 optionFlags3) {
method typeFlags (line 430) | public Builder typeFlags(TypeFlags typeFlags) {
method username (line 443) | public Builder username(CharSequence username) {
method password (line 456) | public Builder password(CharSequence password) {
method applicationName (line 472) | public Builder applicationName(CharSequence applicationName) {
method clientLibraryName (line 488) | public Builder clientLibraryName(CharSequence clientLibraryName) {
method clientLibraryVersion (line 504) | public Builder clientLibraryVersion(Version clientLibraryVersion) {
method hostName (line 518) | public Builder hostName(CharSequence hostname) {
method database (line 534) | public Builder database(CharSequence databaseName) {
method serverName (line 550) | public Builder serverName(CharSequence serverName) {
method clientId (line 566) | public Builder clientId(byte[] clientId) {
method clientProcessId (line 581) | public Builder clientProcessId(int processId) {
method build (line 593) | public Login7 build() {
class OptionFlags1 (line 625) | public final static class OptionFlags1 {
method OptionFlags1 (line 682) | private OptionFlags1(int optionByte) {
method empty (line 691) | public static OptionFlags1 empty() {
method byteOrderX86 (line 700) | public OptionFlags1 byteOrderX86() {
method byteOrder6800 (line 709) | public OptionFlags1 byteOrder6800() {
method charSetAscii (line 718) | public OptionFlags1 charSetAscii() {
method charSetEbcdic (line 727) | public OptionFlags1 charSetEbcdic() {
method floatIeee754 (line 736) | public OptionFlags1 floatIeee754() {
method floatVax (line 745) | public OptionFlags1 floatVax() {
method floatNd500 (line 754) | public OptionFlags1 floatNd500() {
method dumpLoadOn (line 763) | public OptionFlags1 dumpLoadOn() {
method dumpLoadOff (line 772) | public OptionFlags1 dumpLoadOff() {
method useDbOff (line 781) | public OptionFlags1 useDbOff() {
method useDbOn (line 790) | public OptionFlags1 useDbOn() {
method initDatabaseFailWarn (line 799) | public OptionFlags1 initDatabaseFailWarn() {
method initDatabaseFailFatal (line 808) | public OptionFlags1 initDatabaseFailFatal() {
method disableLang (line 817) | public OptionFlags1 disableLang() {
method enableLang (line 826) | public OptionFlags1 enableLang() {
method getValue (line 833) | public byte getValue() {
class OptionFlags2 (line 842) | public final static class OptionFlags2 {
method OptionFlags2 (line 888) | private OptionFlags2(int optionByte) {
method empty (line 897) | public static OptionFlags2 empty() {
method setInitLangFailWarn (line 906) | public OptionFlags2 setInitLangFailWarn() {
method setInitLangFailFatal (line 915) | public OptionFlags2 setInitLangFailFatal() {
method disableOdbc (line 924) | public OptionFlags2 disableOdbc() {
method enableOdbc (line 933) | public OptionFlags2 enableOdbc() {
method normalUserType (line 942) | public OptionFlags2 normalUserType() {
method serverUserType (line 951) | public OptionFlags2 serverUserType() {
method remoteUserType (line 960) | public OptionFlags2 remoteUserType() {
method sqlreplUserType (line 969) | public OptionFlags2 sqlreplUserType() {
method disableIntegratedSecurity (line 978) | public OptionFlags2 disableIntegratedSecurity() {
method enableIntegratedSecurity (line 987) | public OptionFlags2 enableIntegratedSecurity() {
method getValue (line 994) | public byte getValue() {
class TypeFlags (line 1003) | public final static class TypeFlags {
method TypeFlags (line 1032) | private TypeFlags(int optionByte) {
method empty (line 1041) | public static TypeFlags empty() {
method defaultSqlType (line 1050) | public TypeFlags defaultSqlType() {
method tsqlType (line 1059) | public TypeFlags tsqlType() {
method disableOledb (line 1068) | public TypeFlags disableOledb() {
method enableOledb (line 1077) | public TypeFlags enableOledb() {
method getValue (line 1084) | public byte getValue() {
class OptionFlags3 (line 1093) | public final static class OptionFlags3 {
method OptionFlags3 (line 1127) | private OptionFlags3(int optionByte) {
method empty (line 1136) | public static OptionFlags3 empty() {
method changePassword (line 1145) | public OptionFlags3 changePassword() {
method enableUserInstance (line 1154) | public OptionFlags3 enableUserInstance() {
method enableUnknownCollationHandling (line 1163) | public OptionFlags3 enableUnknownCollationHandling() {
method enableExtensions (line 1172) | public OptionFlags3 enableExtensions() {
method getValue (line 1179) | public byte getValue() {
class LoginRequestToken (line 1185) | public final static class LoginRequestToken {
method LoginRequestToken (line 1195) | LoginRequestToken(TokenType tokenType, @Nullable CharSequence value) {
method getTokenType (line 1202) | public TokenType getTokenType() {
method getValue (line 1206) | public byte[] getValue() {
method getEncrypted (line 1210) | public byte[] getEncrypted() {
method getLength (line 1214) | public int getLength() {
method toString (line 1218) | @Override
method toUCS16 (line 1233) | private static byte[] toUCS16(@Nullable CharSequence s) {
method encryptPassword (line 1255) | private byte[] encryptPassword(@Nullable CharSequence pwd) {
type TokenType (line 1275) | enum TokenType {
type ConditionalProtocolSegment (line 1282) | interface ConditionalProtocolSegment {
method length (line 1287) | int length();
method encode (line 1294) | void encode(ByteBuf buffer);
type Conditionals (line 1301) | enum Conditionals implements ConditionalProtocolSegment {
method length (line 1309) | @Override
method encode (line 1314) | @Override
method length (line 1322) | @Override
method encode (line 1327) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/LoginAckToken.java
class LoginAckToken (line 28) | public class LoginAckToken extends AbstractDataToken {
method LoginAckToken (line 66) | public LoginAckToken(long length, byte clientInterface, int tdsVersion...
method decode (line 81) | public static LoginAckToken decode(ByteBuf buffer) {
method getClientInterface (line 97) | public byte getClientInterface() {
method getTdsVersion (line 101) | public int getTdsVersion() {
method getProgrName (line 105) | public String getProgrName() {
method getVersion (line 109) | public Version getVersion() {
method getName (line 113) | @Override
method toString (line 118) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/NbcRowToken.java
class NbcRowToken (line 32) | public final class NbcRowToken extends RowToken {
method NbcRowToken (line 44) | private NbcRowToken(ByteBuf[] data, boolean[] nullMarker) {
method decode (line 56) | public static NbcRowToken decode(ByteBuf buffer, Column[] columns) {
method canDecode (line 71) | public static boolean canDecode(ByteBuf buffer, Column[] columns) {
method getColumnData (line 105) | @Override
method doDecode (line 110) | private static NbcRowToken doDecode(ByteBuf buffer, Column[] columns) {
method getNullBitmap (line 130) | private static boolean[] getNullBitmap(ByteBuf buffer, Column[] column...
method getNullBitmapSize (line 158) | private static int getNullBitmapSize(Column[] columns) {
method getName (line 162) | @Override
method toString (line 167) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/OrderToken.java
class OrderToken (line 31) | class OrderToken extends AbstractDataToken {
method OrderToken (line 42) | private OrderToken(List<Integer> orderByColumns) {
method decode (line 53) | public static OrderToken decode(ByteBuf buffer) {
method canDecode (line 77) | public static boolean canDecode(ByteBuf buffer) {
method getOrderByColumns (line 85) | public List<Integer> getOrderByColumns() {
method getName (line 89) | @Override
method toString (line 94) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/Prelogin.java
class Prelogin (line 50) | public final class Prelogin implements TokenStream, ClientMessage {
method Prelogin (line 61) | public Prelogin(List<? extends Token> tokens) {
method builder (line 70) | public static Builder builder() {
method decode (line 80) | public static Prelogin decode(ByteBuf buffer) {
method getTokens (line 129) | public List<? extends Token> getTokens() {
method getToken (line 140) | public <T extends Token> Optional<T> getToken(Class<? extends T> token...
method getRequiredToken (line 161) | public <T extends Token> T getRequiredToken(Class<? extends T> tokenTy...
method getName (line 169) | @Override
method encode (line 174) | @Override
method encode (line 190) | void encode(ByteBuf buffer) {
method equals (line 212) | @Override
method hashCode (line 224) | @Override
method toString (line 229) | @Override
method getSize (line 238) | private static int getSize(List<? extends Token> tokens) {
class Builder (line 254) | public static class Builder {
method Builder (line 282) | private Builder() {
method withConnectionId (line 291) | public Builder withConnectionId(UUID connectionId) {
method withActivityId (line 305) | public Builder withActivityId(UUID activityId) {
method withActivitySequence (line 319) | public Builder withActivitySequence(int activitySequence) {
method withThreadId (line 332) | public Builder withThreadId(int threadId) {
method withEncryptionDisabled (line 344) | public Builder withEncryptionDisabled() {
method withEncryptionEnabled (line 356) | public Builder withEncryptionEnabled() {
method withEncryptionNotSupported (line 368) | public Builder withEncryptionNotSupported() {
method withInstanceName (line 375) | public Builder withInstanceName(String instanceName) {
method build (line 388) | public Prelogin build() {
class Token (line 414) | public abstract static class Token {
method Token (line 420) | Token(int type, int length) {
method decode (line 438) | static <T extends Token> T decode(TokenDecodingState toDecode, Lengt...
method encodeToken (line 465) | public void encodeToken(ByteBuf buffer, int position) {
method getType (line 477) | byte getType() {
method getLength (line 486) | int getLength() {
method encodeStream (line 490) | public abstract void encodeStream(ByteBuf buffer);
method getTotalLength (line 495) | final int getTotalLength() {
method getTokenHeaderLength (line 502) | int getTokenHeaderLength() {
method getDataLength (line 509) | int getDataLength() {
class Terminator (line 518) | public static class Terminator extends Token {
method Terminator (line 524) | Terminator() {
method encodeToken (line 528) | @Override
method getTokenHeaderLength (line 533) | @Override
method encodeStream (line 538) | @Override
method toString (line 542) | @Override
class Version (line 555) | public static class Version extends Token {
method Version (line 575) | public Version(int version, int subbuild) {
method Version (line 585) | public Version(int version, short subbuild) {
method decode (line 599) | public static Version decode(TokenDecodingState toDecode) {
method getVersion (line 617) | public int getVersion() {
method getSubbuild (line 621) | public short getSubbuild() {
method encodeStream (line 625) | @Override
method toString (line 632) | @Override
class InstanceValidation (line 647) | public static class InstanceValidation extends Token {
method InstanceValidation (line 663) | public InstanceValidation(String instanceName) {
method InstanceValidation (line 672) | private InstanceValidation(byte[] instanceName) {
method decode (line 684) | public static InstanceValidation decode(TokenDecodingState toDecode) {
method encodeStream (line 695) | @Override
method toString (line 700) | @Override
method toBytes (line 710) | private static byte[] toBytes(String instanceName) {
class Encryption (line 726) | public static class Encryption extends Token {
method Encryption (line 757) | public Encryption(byte encryption) {
method decode (line 770) | public static Encryption decode(TokenDecodingState toDecode) {
method getEncryption (line 786) | public byte getEncryption() {
method encodeStream (line 790) | @Override
method requiresSslHandshake (line 800) | public boolean requiresSslHandshake() {
method requiresLoginSslHandshake (line 810) | public boolean requiresLoginSslHandshake() {
method requiresConnectionSslHandshake (line 819) | public boolean requiresConnectionSslHandshake() {
method toString (line 823) | @Override
class ThreadId (line 837) | public static class ThreadId extends Token {
method ThreadId (line 851) | public ThreadId(int threadId) {
method encodeStream (line 858) | @Override
method toString (line 863) | @Override
class TraceId (line 877) | public static class TraceId extends Token {
method TraceId (line 903) | public TraceId(@Nullable UUID connectionId, @Nullable UUID activityI...
method encodeStream (line 912) | @Override
method toString (line 934) | @Override
class UnknownToken (line 950) | public static class UnknownToken extends Token {
method UnknownToken (line 952) | UnknownToken(int type, int length) {
method decode (line 963) | public static UnknownToken decode(byte type, TokenDecodingState toDe...
method encodeStream (line 970) | @Override
method toString (line 974) | @Override
type DecodeFunction (line 986) | @FunctionalInterface
method decode (line 989) | T decode(short length, ByteBuf buffer);
type LengthValidator (line 998) | @FunctionalInterface
method validate (line 1010) | void validate(short length);
method ignore (line 1017) | static LengthValidator ignore() {
class TokenDecodingState (line 1026) | static class TokenDecodingState {
method TokenDecodingState (line 1034) | TokenDecodingState(ByteBuf buffer) {
method create (line 1039) | public static TokenDecodingState create(ByteBuf byteBuf) {
method canDecode (line 1043) | public boolean canDecode() {
method afterTokenDecoded (line 1050) | void afterTokenDecoded() {
method readBody (line 1061) | ByteBuf readBody(int position, short length) {
FILE: src/main/java/io/r2dbc/mssql/message/token/ReturnStatus.java
class ReturnStatus (line 28) | public class ReturnStatus extends AbstractDataToken {
method ReturnStatus (line 43) | private ReturnStatus(int status) {
method create (line 55) | public static ReturnStatus create(int status) {
method decode (line 70) | public static ReturnStatus decode(ByteBuf buffer) {
method canDecode (line 83) | public static boolean canDecode(ByteBuf buffer) {
method getStatus (line 90) | public int getStatus() {
method getType (line 94) | @Override
method getName (line 99) | @Override
method toString (line 104) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/ReturnValue.java
class ReturnValue (line 38) | public class ReturnValue extends AbstractReferenceCounted implements Dat...
method ReturnValue (line 69) | public ReturnValue(int ordinal, @Nullable String parameterName, int st...
method ReturnValue (line 82) | public ReturnValue(int ordinal, @Nullable String parameterName, byte s...
method decode (line 100) | public static ReturnValue decode(ByteBuf buffer, boolean encryptionSup...
method canDecode (line 128) | public static boolean canDecode(ByteBuf buffer, boolean encryptionSupp...
method matches (line 178) | public static boolean matches(Message message, String name) {
method matches (line 193) | public static boolean matches(Message message, int ordinal) {
method getOrdinal (line 200) | public int getOrdinal() {
method getParameterName (line 204) | @Nullable
method getValueType (line 209) | public TypeInformation getValueType() {
method getStatus (line 213) | public byte getStatus() {
method getValue (line 217) | public ByteBuf getValue() {
method asDecodable (line 227) | public Decodable asDecodable() {
method getType (line 243) | @Override
method getName (line 248) | @Override
method touch (line 253) | @Override
method deallocate (line 259) | @Override
method toString (line 264) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/RowToken.java
class RowToken (line 39) | public class RowToken extends AbstractReferenceCounted implements DataTo...
method RowToken (line 50) | RowToken(ByteBuf[] data) {
method decode (line 61) | public static RowToken decode(ByteBuf buffer, Column[] columns) {
method canDecode (line 76) | public static boolean canDecode(ByteBuf buffer, Column[] columns) {
method canDecodeColumn (line 98) | static boolean canDecodeColumn(ByteBuf buffer, Column column) {
method doCanDecode (line 114) | private static boolean doCanDecode(ByteBuf buffer, Column column) {
method canDecodePlp (line 144) | private static boolean canDecodePlp(ByteBuf buffer, Column column) {
method doDecode (line 176) | private static RowToken doDecode(ByteBuf buffer, Column[] columns) {
method decodeColumnData (line 194) | @Nullable
method doDecode (line 212) | @Nullable
method doDecodePlp (line 236) | @Nullable
method getColumnData (line 275) | @Nullable
method getType (line 280) | @Override
method getName (line 285) | @Override
method touch (line 290) | @Override
method deallocate (line 295) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/RpcRequest.java
class RpcRequest (line 53) | public final class RpcRequest implements ClientMessage, TokenStream {
method RpcRequest (line 149) | private RpcRequest(AllHeaders allHeaders, @Nullable String procName, @...
method builder (line 164) | public static Builder builder() {
method encode (line 168) | @Override
method getByteBuf (line 269) | private ByteBuf getByteBuf(AtomicReference<ByteBuf> firstBufferHolder,...
method encodeHeader (line 281) | private void encodeHeader(ByteBuf buffer) {
method getProcName (line 297) | @Nullable
method getProcId (line 302) | public Integer getProcId() {
method getName (line 306) | @Override
method equals (line 311) | @Override
method hashCode (line 328) | @Override
method toString (line 333) | @Override
class Builder (line 349) | public final static class Builder {
method withProcName (line 370) | public Builder withProcName(String procName) {
method withProcId (line 386) | public Builder withProcId(int id) {
method withParameter (line 403) | public Builder withParameter(RpcDirection direction, Collation colla...
method withParameter (line 421) | public Builder withParameter(RpcDirection direction, @Nullable Integ...
method withParameter (line 438) | public Builder withParameter(RpcDirection direction, Encoded value) {
method withNamedParameter (line 458) | public Builder withNamedParameter(RpcDirection direction, String nam...
method withNamedParameter (line 478) | public Builder withNamedParameter(RpcDirection direction, String nam...
method withNamedParameter (line 497) | public Builder withNamedParameter(RpcDirection direction, String nam...
method withTransactionDescriptor (line 515) | public Builder withTransactionDescriptor(TransactionDescriptor trans...
method withOptionFlags (line 529) | public Builder withOptionFlags(OptionFlags optionFlags) {
method build (line 542) | public RpcRequest build() {
class OptionFlags (line 556) | public final static class OptionFlags {
method OptionFlags (line 572) | private OptionFlags(int optionByte) {
method empty (line 581) | public static OptionFlags empty() {
method enableRecompile (line 590) | public OptionFlags enableRecompile() {
method disableMetadata (line 599) | public OptionFlags disableMetadata() {
method getValue (line 606) | public byte getValue() {
class ParameterDescriptor (line 615) | abstract static class ParameterDescriptor {
method ParameterDescriptor (line 622) | ParameterDescriptor(RpcDirection direction, @Nullable String name) {
method encode (line 633) | abstract void encode(ByteBuf buffer);
method estimateLength (line 640) | abstract int estimateLength();
method getDirection (line 642) | public RpcDirection getDirection() {
method getName (line 646) | @Nullable
class RpcString (line 656) | static class RpcString extends ParameterDescriptor {
method RpcString (line 663) | RpcString(RpcDirection direction, @Nullable String name, Collation c...
method encode (line 669) | @Override
method estimateLength (line 674) | @Override
method equals (line 679) | @Override
method hashCode (line 692) | @Override
method toString (line 697) | @Override
class RpcInt (line 712) | static class RpcInt extends ParameterDescriptor {
method RpcInt (line 717) | RpcInt(RpcDirection direction, @Nullable String name, @Nullable Inte...
method encode (line 722) | @Override
method estimateLength (line 727) | @Override
method equals (line 732) | @Override
method hashCode (line 744) | @Override
method toString (line 749) | @Override
class EncodedRpcParameter (line 764) | static class EncodedRpcParameter extends ParameterDescriptor {
method EncodedRpcParameter (line 768) | EncodedRpcParameter(RpcDirection direction, @Nullable String name, E...
method getValue (line 773) | public Encoded getValue() {
method encode (line 777) | @Override
method encodeHeader (line 785) | void encodeHeader(ByteBuf buffer) {
method estimateLength (line 789) | @Override
method equals (line 798) | @Override
method hashCode (line 810) | @Override
method toString (line 815) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/SqlBatch.java
class SqlBatch (line 38) | public final class SqlBatch implements ClientMessage, TokenStream {
method SqlBatch (line 53) | private SqlBatch(int outstandingRequests, byte[] transactionDescriptor...
method create (line 71) | public static SqlBatch create(int outstandingRequests, TransactionDesc...
method encode (line 79) | @Override
method encode (line 92) | void encode(ByteBuf buffer) {
method getSql (line 98) | public String getSql() {
method getName (line 102) | @Override
method equals (line 107) | @Override
method hashCode (line 120) | @Override
method toString (line 125) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/TabnameToken.java
class TabnameToken (line 31) | public class TabnameToken extends AbstractDataToken {
method TabnameToken (line 37) | private TabnameToken(List<Identifier> tableNames) {
method decode (line 49) | public static TabnameToken decode(ByteBuf buffer) {
method canDecode (line 72) | public static boolean canDecode(ByteBuf buffer) {
method getTableNames (line 85) | public List<Identifier> getTableNames() {
method getName (line 89) | @Override
method toString (line 94) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/token/Tabular.java
class Tabular (line 41) | public final class Tabular implements Message {
method Tabular (line 45) | private Tabular(List<? extends DataToken> tokens) {
method create (line 55) | public static Tabular create(DataToken... tokens) {
method decode (line 69) | public static Tabular decode(ByteBuf buffer, boolean encryptionSupport...
method createDecoder (line 82) | public static TabularDecoder createDecoder(boolean encryptionSupported) {
method decodeFunction (line 92) | private static DecodeFunction decodeFunction(boolean encryptionSupport...
method getTokens (line 221) | public List<? extends DataToken> getTokens() {
method findToken (line 231) | @Nullable
method getToken (line 251) | <T extends DataToken> Optional<T> getToken(Class<? extends T> tokenTyp...
method getToken (line 265) | <T extends DataToken> Optional<T> getToken(Class<? extends T> tokenTyp...
method getRequiredToken (line 282) | <T extends DataToken> T getRequiredToken(Class<? extends T> tokenType) {
method getRequiredToken (line 296) | <T extends DataToken> T getRequiredToken(Class<? extends T> tokenType,...
method toString (line 302) | @Override
type DecodeFinished (line 314) | enum DecodeFinished implements DataToken {
method getType (line 326) | @Override
method getName (line 331) | @Override
class TabularDecoder (line 343) | public static class TabularDecoder {
method TabularDecoder (line 350) | TabularDecoder(boolean encryptionSupported) {
method decode (line 360) | public List<DataToken> decode(ByteBuf buffer) {
method decode (line 399) | public boolean decode(ByteBuf buffer, SynchronousSink<Message> messa...
type DecodeFunction (line 437) | @FunctionalInterface
method tryDecode (line 447) | DataToken tryDecode(byte type, ByteBuf buffer);
FILE: src/main/java/io/r2dbc/mssql/message/token/TokenStream.java
type TokenStream (line 22) | public interface TokenStream {
method getName (line 27) | String getName();
FILE: src/main/java/io/r2dbc/mssql/message/type/AbstractTypeDecoderStrategy.java
class AbstractTypeDecoderStrategy (line 26) | abstract class AbstractTypeDecoderStrategy implements TypeDecoderStrategy {
method AbstractTypeDecoderStrategy (line 35) | AbstractTypeDecoderStrategy(int typeDescriptorLength) {
method canDecode (line 39) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/type/Collation.java
class Collation (line 52) | @SuppressWarnings("unused")
method Collation (line 89) | private Collation(int lcid, int sortId) throws UnsupportedEncodingExce...
method from (line 114) | public static Collation from(int lcid, int sortId) {
method decode (line 143) | public static Collation decode(ByteBuf buffer) {
method getLength (line 153) | static int getLength() {
method encode (line 162) | public void encode(ByteBuf buffer) {
method getCharset (line 171) | public Charset getCharset() {
method getLCID (line 180) | int getLCID() {
method getSortId (line 189) | int getSortId() {
method supportsAsciiConversion (line 198) | boolean supportsAsciiConversion() {
method hasAsciiCompatibleSBCS (line 207) | boolean hasAsciiCompatibleSBCS() {
method getLanguageId (line 211) | private int getLanguageId() {
method equals (line 215) | @Override
method hashCode (line 228) | @Override
method toString (line 233) | @Override
method getEncodingFromLCID (line 242) | private ServerCharset getEncodingFromLCID() throws UnsupportedEncoding...
method getEncodingFromSortId (line 262) | private ServerCharset getEncodingFromSortId() throws UnsupportedEncodi...
type WindowsLocale (line 293) | enum WindowsLocale {
method WindowsLocale (line 506) | WindowsLocale(int langID, ServerCharset serverCharset) {
method getServerCharset (line 511) | ServerCharset getServerCharset() {
type SortOrder (line 520) | enum SortOrder {
method SortOrder (line 647) | SortOrder(int sortId, String name, ServerCharset serverCharset) {
method getServerCharset (line 653) | ServerCharset getServerCharset() {
method toString (line 658) | public final String toString() {
FILE: src/main/java/io/r2dbc/mssql/message/type/Length.java
class Length (line 32) | public final class Length {
method Length (line 65) | private Length(int length, boolean isNull) {
method nullLength (line 75) | public static Length nullLength() {
method of (line 85) | public static Length of(int length) {
method of (line 96) | public static Length of(int length, boolean isNull) {
method decode (line 124) | public static Length decode(ByteBuf buffer, TypeInformation type) {
method canDecode (line 186) | public static boolean canDecode(ByteBuf buffer, TypeInformation type) {
method doCanDecode (line 196) | private static boolean doCanDecode(ByteBuf buffer, TypeInformation typ...
method encode (line 242) | public void encode(ByteBuf buffer, TypeInformation type) {
method encode (line 282) | public void encode(ByteBuf buffer, LengthStrategy lengthStrategy) {
method getLength (line 316) | public int getLength() {
method isNull (line 320) | public boolean isNull() {
method toString (line 324) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/type/LengthStrategy.java
type LengthStrategy (line 22) | public enum LengthStrategy {
FILE: src/main/java/io/r2dbc/mssql/message/type/MutableTypeInformation.java
class MutableTypeInformation (line 28) | final class MutableTypeInformation implements TypeInformation {
method getMaxLength (line 56) | @Override
method getLengthStrategy (line 61) | @Override
method getPrecision (line 66) | @Override
method getDisplaySize (line 71) | @Override
method getScale (line 76) | @Override
method getServerType (line 81) | @Override
method getUserType (line 86) | @Override
method getUdtTypeName (line 91) | @Override
method getCollation (line 97) | @Override
method getCharset (line 103) | @Override
method getServerTypeName (line 109) | @Override
method isNullable (line 114) | @Override
method isCaseSensitive (line 119) | @Override
method isSparseColumnSet (line 124) | @Override
method isEncrypted (line 129) | @Override
method getUpdatability (line 134) | @Override
method isIdentity (line 150) | @Override
method getFlags (line 155) | private byte[] getFlags() {
method supportsFastAsciiConversion (line 166) | public boolean supportsFastAsciiConversion() {
method toString (line 180) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/type/PlpLength.java
class PlpLength (line 33) | public final class PlpLength {
method PlpLength (line 43) | private PlpLength(long length, boolean isNull) {
method unknown (line 53) | public static PlpLength unknown() {
method nullLength (line 62) | public static PlpLength nullLength() {
method of (line 72) | public static PlpLength of(long length) {
method of (line 83) | public static PlpLength of(long length, boolean isNull) {
method decode (line 94) | public static PlpLength decode(ByteBuf buffer, TypeInformation type) {
method canDecode (line 112) | public static boolean canDecode(ByteBuf buffer, TypeInformation type) {
method encode (line 127) | public void encode(ByteBuf buffer) {
method doCanDecode (line 136) | private static boolean doCanDecode(ByteBuf buffer, TypeInformation typ...
method getLength (line 145) | public long getLength() {
method isNull (line 149) | public boolean isNull() {
method isUnknown (line 153) | public boolean isUnknown() {
method toString (line 157) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/type/SqlServerType.java
type SqlServerType (line 36) | public enum SqlServerType implements Type {
method SqlServerType (line 98) | SqlServerType(Category category, Class<?> defaultJavaType, String name...
method SqlServerType (line 110) | SqlServerType(Category category, Class<?> defaultJavaType, String name...
method SqlServerType (line 127) | SqlServerType(Category category, Class<?> defaultJavaType, String name) {
method of (line 144) | public static SqlServerType of(String typeName) {
method of (line 161) | public static SqlServerType of(R2dbcType type) {
method getCategory (line 213) | public Category getCategory() {
method getJavaType (line 217) | @Override
method getMaxLength (line 222) | public int getMaxLength() {
method getName (line 226) | @Override
method getNullableType (line 231) | @Nullable
method getFixedTypes (line 236) | public TdsDataType[] getFixedTypes() {
method toString (line 245) | @Override
type Category (line 253) | public enum Category {
FILE: src/main/java/io/r2dbc/mssql/message/type/TdsDataType.java
type TdsDataType (line 22) | public enum TdsDataType {
method TdsDataType (line 85) | TdsDataType(int value, LengthStrategy lengthStrategy) {
method getValue (line 90) | public byte getValue() {
method getLengthStrategy (line 94) | public LengthStrategy getLengthStrategy() {
method valueOf (line 104) | static TdsDataType valueOf(int value) {
FILE: src/main/java/io/r2dbc/mssql/message/type/TypeBuilder.java
type TypeBuilder (line 33) | @SuppressWarnings("unused")
method decode (line 109) | @Override
method decode (line 124) | @Override
method decode (line 163) | @Override
method decode (line 174) | @Override
method decode (line 190) | @Override
method decode (line 214) | @Override
method decode (line 231) | @Override
method decode (line 250) | @Override
method decode (line 276) | @Override
method decode (line 292) | @Override
method decode (line 309) | @Override
method decode (line 335) | @Override
method decode (line 354) | @Override
method decode (line 374) | @Override
method TypeBuilder (line 394) | TypeBuilder(TdsDataType tdsType, TypeDecoderStrategy strategy) {
method decode (line 406) | static TypeInformation decode(ByteBuf buffer, boolean readFlags) {
method canDecode (line 436) | static boolean canDecode(ByteBuf buffer, boolean readFlags) {
method getTdsDataType (line 458) | TdsDataType getTdsDataType() {
method build (line 470) | MutableTypeInformation build(MutableTypeInformation typeInfo, ByteBuf ...
FILE: src/main/java/io/r2dbc/mssql/message/type/TypeDecoderStrategies.java
type TypeDecoderStrategies (line 28) | interface TypeDecoderStrategies {
method bigOrSmall (line 37) | static TypeDecoderStrategy bigOrSmall(TypeBuilder big, TypeBuilder sma...
method create (line 51) | static TypeDecoderStrategy create(SqlServerType serverType, int maxLen...
method decimalNumeric (line 61) | static TypeDecoderStrategy decimalNumeric(SqlServerType serverType) {
method temporal (line 71) | static TypeDecoderStrategy temporal(SqlServerType serverType) {
class FixedLenStrategy (line 78) | class FixedLenStrategy extends AbstractTypeDecoderStrategy {
method FixedLenStrategy (line 90) | FixedLenStrategy(SqlServerType serverType, int maxLength, int precis...
method decode (line 99) | @Override
class DecimalNumericStrategy (line 115) | class DecimalNumericStrategy extends AbstractTypeDecoderStrategy {
method DecimalNumericStrategy (line 119) | DecimalNumericStrategy(SqlServerType serverType) {
method decode (line 124) | @Override
class BigOrSmallByteLenStrategy (line 148) | class BigOrSmallByteLenStrategy extends AbstractTypeDecoderStrategy {
method BigOrSmallByteLenStrategy (line 154) | BigOrSmallByteLenStrategy(TypeBuilder bigBuilder, TypeBuilder smallB...
method decode (line 160) | @Override
class KatmaiScaledTemporalStrategy (line 185) | class KatmaiScaledTemporalStrategy extends AbstractTypeDecoderStrategy {
method KatmaiScaledTemporalStrategy (line 189) | KatmaiScaledTemporalStrategy(SqlServerType serverType) {
method getPrecision (line 194) | private int getPrecision(String baseFormat, int scale) {
method decode (line 200) | @Override
FILE: src/main/java/io/r2dbc/mssql/message/type/TypeDecoderStrategy.java
type TypeDecoderStrategy (line 24) | public interface TypeDecoderStrategy {
method canDecode (line 32) | boolean canDecode(ByteBuf buffer);
method decode (line 40) | void decode(MutableTypeInformation typeInfo, ByteBuf buffer);
FILE: src/main/java/io/r2dbc/mssql/message/type/TypeInformation.java
type TypeInformation (line 33) | public interface TypeInformation {
method decode (line 42) | static TypeInformation decode(ByteBuf buffer, boolean readFlags) {
method canDecode (line 53) | static boolean canDecode(ByteBuf buffer, boolean readFlags) {
method getMaxLength (line 62) | int getMaxLength();
method getLengthStrategy (line 69) | LengthStrategy getLengthStrategy();
method getPrecision (line 76) | int getPrecision();
method getDisplaySize (line 83) | int getDisplaySize();
method getScale (line 90) | int getScale();
method getServerType (line 97) | SqlServerType getServerType();
method getUserType (line 104) | int getUserType();
method getUdtTypeName (line 111) | @Nullable
method getCollation (line 119) | @Nullable
method getCharset (line 128) | @Nullable
method getServerTypeName (line 136) | String getServerTypeName();
method isNullable (line 143) | boolean isNullable();
method isCaseSensitive (line 150) | boolean isCaseSensitive();
method isSparseColumnSet (line 152) | boolean isSparseColumnSet();
method isEncrypted (line 159) | boolean isEncrypted();
method getUpdatability (line 166) | Updatability getUpdatability();
method isIdentity (line 173) | boolean isIdentity();
method builder (line 180) | static Builder builder() {
class Builder (line 187) | final class Builder {
method Builder (line 211) | private Builder() {
method withCharset (line 220) | public Builder withCharset(Charset charset) {
method withCollation (line 231) | public Builder withCollation(Collation collation) {
method withDisplaySize (line 242) | public Builder withDisplaySize(int displaySize) {
method withFlags (line 253) | public Builder withFlags(int flags) {
method withLengthStrategy (line 264) | public Builder withLengthStrategy(LengthStrategy lengthStrategy) {
method withMaxLength (line 275) | public Builder withMaxLength(int maxLength) {
method withPrecision (line 286) | public Builder withPrecision(int precision) {
method withScale (line 297) | public Builder withScale(int scale) {
method withServerType (line 308) | public Builder withServerType(SqlServerType serverType) {
method build (line 319) | public TypeInformation build() {
type Updatability (line 342) | enum Updatability {
method Updatability (line 348) | Updatability(int value) {
method getValue (line 352) | public byte getValue() {
FILE: src/main/java/io/r2dbc/mssql/message/type/TypeUtils.java
class TypeUtils (line 26) | public final class TypeUtils {
method getTimeValueLength (line 105) | public static int getTimeValueLength(int scale) {
method getDateTimeValueLength (line 115) | public static int getDateTimeValueLength(int scale) {
method getDatetimeoffsetValueLength (line 125) | static int getDatetimeoffsetValueLength(int scale) {
method getNanosSinceMidnightLength (line 135) | private static int getNanosSinceMidnightLength(int scale) {
FILE: src/main/java/io/r2dbc/mssql/util/Assert.java
class Assert (line 50) | public final class Assert {
method state (line 66) | public static void state(boolean expression, String message) {
method state (line 86) | public static void state(boolean expression, Supplier<String> messageS...
method isTrue (line 104) | public static void isTrue(boolean expression, String message) {
method isTrue (line 122) | public static void isTrue(boolean expression, Supplier<String> message...
method isNull (line 139) | public static void isNull(@Nullable Object object, String message) {
method isNull (line 156) | public static void isNull(@Nullable Object object, Supplier<String> me...
method notNull (line 173) | public static void notNull(@Nullable Object object, String message) {
method notNull (line 190) | public static void notNull(@Nullable Object object, Supplier<String> m...
method requireNonNull (line 208) | public static <T> T requireNonNull(@Nullable T object, String message) {
method requireNonNull (line 225) | public static <T> T requireNonNull(@Nullable T object, Supplier<String...
method isInstanceOf (line 243) | public static void isInstanceOf(Class<?> type, @Nullable Object obj, S...
method isInstanceOf (line 262) | public static void isInstanceOf(Class<?> type, @Nullable Object obj, S...
method isInstanceOf (line 277) | public static void isInstanceOf(Class<?> type, @Nullable Object obj) {
method isAssignable (line 294) | public static void isAssignable(Class<?> superType, @Nullable Class<?>...
method isAssignable (line 313) | public static void isAssignable(Class<?> superType, @Nullable Class<?>...
method isAssignable (line 328) | public static void isAssignable(Class<?> superType, Class<?> subType) {
method instanceCheckFailed (line 332) | private static void instanceCheckFailed(Class<?> type, @Nullable Objec...
method assignableCheckFailed (line 350) | private static void assignableCheckFailed(Class<?> superType, @Nullabl...
method endsWithSeparator (line 367) | private static boolean endsWithSeparator(String msg) {
method messageWithTypeName (line 371) | private static String messageWithTypeName(String msg, @Nullable Object...
method nullSafeGet (line 375) | @Nullable
FILE: src/main/java/io/r2dbc/mssql/util/DriverVersion.java
class DriverVersion (line 27) | public final class DriverVersion {
method DriverVersion (line 29) | private DriverVersion() {
method getVersion (line 37) | @Nullable
FILE: src/main/java/io/r2dbc/mssql/util/FluxDiscardOnCancel.java
class FluxDiscardOnCancel (line 39) | class FluxDiscardOnCancel<T> extends FluxOperator<T, T> {
method FluxDiscardOnCancel (line 45) | FluxDiscardOnCancel(Flux<? extends T> source, Runnable cancelConsumer) {
method subscribe (line 50) | @Override
class FluxDiscardOnCancelSubscriber (line 55) | static class FluxDiscardOnCancelSubscriber<T> extends AtomicBoolean im...
method FluxDiscardOnCancelSubscriber (line 65) | FluxDiscardOnCancelSubscriber(CoreSubscriber<T> actual, Runnable can...
method onSubscribe (line 72) | @Override
method currentContext (line 81) | @Override
method onNext (line 86) | @Override
method onError (line 97) | @Override
method onComplete (line 106) | @Override
method request (line 113) | @Override
method cancel (line 118) | @Override
FILE: src/main/java/io/r2dbc/mssql/util/Operators.java
class Operators (line 27) | public final class Operators {
method Operators (line 29) | private Operators() {
method discardOnCancel (line 42) | public static <T> Flux<T> discardOnCancel(Flux<? extends T> source) {
method discardOnCancel (line 59) | public static <T> Flux<T> discardOnCancel(Flux<? extends T> source, Ru...
FILE: src/main/java/io/r2dbc/mssql/util/PredicateUtils.java
class PredicateUtils (line 25) | public final class PredicateUtils {
method PredicateUtils (line 27) | private PredicateUtils() {
method not (line 39) | public static <T> Predicate<T> not(Predicate<T> t) {
method or (line 53) | @SafeVarargs
method and (line 69) | @SafeVarargs
FILE: src/main/java/io/r2dbc/mssql/util/ReferenceCountUtil.java
class ReferenceCountUtil (line 28) | public class ReferenceCountUtil {
method maybeRelease (line 34) | public static void maybeRelease(@Nullable Object obj) {
method maybeSafeRelease (line 44) | public static void maybeSafeRelease(@Nullable Object obj) {
method ReferenceCountUtil (line 51) | private ReferenceCountUtil() {
FILE: src/main/java/io/r2dbc/mssql/util/StringUtils.java
class StringUtils (line 26) | public class StringUtils {
method isEmpty (line 43) | public static boolean isEmpty(@Nullable Object str) {
method hasLength (line 63) | public static boolean hasLength(@Nullable CharSequence str) {
method hasLength (line 77) | public static boolean hasLength(@Nullable String str) {
method hasText (line 99) | public static boolean hasText(@Nullable CharSequence str) {
method hasText (line 114) | public static boolean hasText(@Nullable String str) {
method containsText (line 118) | private static boolean containsText(CharSequence str) {
FILE: src/main/java/io/r2dbc/mssql/util/Version.java
class Version (line 22) | public class Version implements Comparable<Version> {
method Version (line 39) | public Version(int... parts) {
method parse (line 61) | public static Version parse(String version) {
method getMajor (line 82) | public int getMajor() {
method getMinor (line 86) | public int getMinor() {
method getBugfix (line 90) | public int getBugfix() {
method isGreaterThan (line 100) | public boolean isGreaterThan(Version version) {
method isGreaterThanOrEqualTo (line 110) | public boolean isGreaterThanOrEqualTo(Version version) {
method is (line 120) | public boolean is(Version version) {
method isLessThan (line 130) | public boolean isLessThan(Version version) {
method isLessThanOrEqualTo (line 140) | public boolean isLessThanOrEqualTo(Version version) {
method compareTo (line 149) | public int compareTo(Version that) {
method equals (line 179) | @Override
method hashCode (line 201) | @Override
method toString (line 217) | @Override
FILE: src/test/java/io/r2dbc/mssql/BindingUnitTests.java
class BindingUnitTests (line 33) | class BindingUnitTests {
method shouldReportFormalParameters (line 35) | @Test
method shouldReportMultipleFormalParameters (line 44) | @Test
method shouldReportCorrectIntermediateFormalParameters (line 54) | @Test
method shouldBindParameters (line 66) | @Test
method shouldClearBindings (line 78) | @Test
FILE: src/test/java/io/r2dbc/mssql/CodecIntegrationTests.java
class CodecIntegrationTests (line 57) | class CodecIntegrationTests extends IntegrationTestSupport {
method shouldEncodeBooleanAsBit (line 63) | @Test
method shouldEncodeBooleanAsTinyint (line 68) | @Test
method shouldEncodeByteAsTinyint (line 73) | @Test
method shouldEncodeShortAsSmallint (line 78) | @Test
method shouldEncodeIntegerAInt (line 83) | @Test
method shouldEncodeLongABigint (line 88) | @Test
method shouldEncodeFloatAsReal (line 93) | @Test
method shouldEncodeDoubleAsFloat (line 98) | @Test
method shouldEncodeDoubleAsNumeric (line 103) | @Test
method shouldEncodeBigIntegerAsNumeric (line 108) | @Test
method shouldEncodeDoubleAsDecimal (line 113) | @Test
method shouldEncodeDoubleAsDecimal1 (line 118) | @Test
method shouldEncodeDate (line 123) | @Test
method shouldEncodeTime (line 128) | @Test
method shouldEncodeDateTime (line 133) | @Test
method shouldEncodeDateTime2 (line 138) | @Test
method shouldEncodeZonedDateTimeAsDatetimeoffset (line 143) | @Test
method shouldEncodeOffsetDateTimeAsDatetimeoffset (line 149) | @Test
method shouldEncodeGuid (line 154) | @Test
method shouldEncodeStringAsVarchar (line 159) | @Test
method shouldEncodeStringAsNVarchar (line 168) | @Test
method shouldEncodeStringAsVarcharSendingCharsAsNatl (line 175) | @Test
method shouldEncodeStringAsVarcharMax (line 186) | @Test
method shouldEncodeStringAsVarcharMaxWithBigString (line 191) | @Test
method shouldEncodeStringAsNVarcharMax (line 203) | @Test
method shouldEncodeClobAsNVarcharMax (line 211) | @Test
method shouldEncodeClobAsVarcharMaxAsNatl (line 221) | @Test
method shouldEncodeClobAsVarcharMaxAsUnicode (line 237) | @Test
method shouldEncodeStringAsText (line 248) | @Test
method shouldEncodeStringAsNText (line 253) | @Test
method shouldEncodeByteBufferAsBinary (line 258) | @Test
method shouldEncodeByteBufferAsVarBinary (line 263) | @Test
method shouldEncodeByteArrayAsVarBinaryMax (line 268) | @Test
method shouldEncodeBlobAsVarBinaryMax (line 278) | @Test
method shouldEncodeByteArrayAsImage (line 288) | @Test
method shouldEncodeByteArrayAsBinary (line 293) | @Test
method shouldEncodeByteArrayAsVarBinary (line 298) | @Test
method shouldEncodeByteBufferAsVarBinaryMax (line 303) | @Test
method shouldEncodeByteBufferAsImage (line 310) | @Test
method testType (line 317) | private void testType(MssqlConnection connection, String columnType, O...
method testType (line 321) | private void testType(MssqlConnection connection, String columnType, O...
method testType (line 325) | private void testType(MssqlConnection connection, String columnType, O...
method testType (line 329) | private void testType(MssqlConnection connection, String columnType, O...
method testType (line 333) | private void testType(MssqlConnection connection, String columnType, O...
method testType (line 337) | private void testType(MssqlConnection connection, String columnType, O...
method createTable (line 427) | private void createTable(MssqlConnection connection, String columnType) {
FILE: src/test/java/io/r2dbc/mssql/ColumnMetadataIntegrationTests.java
class ColumnMetadataIntegrationTests (line 42) | class ColumnMetadataIntegrationTests extends IntegrationTestSupport {
method shouldReportBit (line 44) | @Test
method shouldReportTinyint (line 49) | @Test
method shouldReportSmallint (line 54) | @Test
method shouldReportInt (line 59) | @Test
method shouldReportBigint (line 64) | @Test
method shouldReportReal (line 69) | @Test
method shouldReportFloat (line 74) | @Test
method shouldReportNumeric (line 80) | @Test
method shouldReportDecimal (line 85) | @Test
method shouldReportDate (line 90) | @Test
method shouldReportTime (line 95) | @Test
method shouldReportDateTime (line 100) | @Test
method shouldReportDateTime2 (line 105) | @Test
method shouldReportDatetimeoffset (line 110) | @Test
method shouldReportUuid (line 115) | @Test
method shouldReportVarchar (line 120) | @Test
method shouldEncodeStringAsNVarchar (line 125) | @Test
method testType (line 130) | private void testType(String columnType, Object value, Expectation exp...
method createTable (line 171) | private void createTable(MssqlConnection connection, String columnType) {
class Expectation (line 185) | static class Expectation {
method Expectation (line 193) | Expectation(int precision, int scale, Class<?> javaClass) {
FILE: src/test/java/io/r2dbc/mssql/ConcurrentAccessIntegrationTests.java
class ConcurrentAccessIntegrationTests (line 35) | class ConcurrentAccessIntegrationTests extends IntegrationTestSupport {
method shouldSerializeMultipleActiveSubscriptions (line 37) | @Test
method createTable (line 68) | private void createTable(MssqlConnection connection) {
method insertRecord (line 82) | private Flux<Long> insertRecord(MssqlConnection connection, int id) {
FILE: src/test/java/io/r2dbc/mssql/EscapeAwareNameMatcherUnitTests.java
class EscapeAwareNameMatcherUnitTests (line 31) | class EscapeAwareNameMatcherUnitTests {
method containsConsidersNamingRules (line 35) | @Test
FILE: src/test/java/io/r2dbc/mssql/ExceptionFactoryUnitTests.java
class ExceptionFactoryUnitTests (line 37) | class ExceptionFactoryUnitTests {
method shouldTranslateWellKnownGrammarErrors (line 39) | @Test
method shouldTranslateWellKnownIntegrityViolation (line 47) | @Test
method shouldTranslateGeneralPermissionErrors (line 55) | @Test
method shouldTranslateWellKnownTransientError (line 63) | @Test
method shouldTranslateGeneralGrammarErrors (line 71) | @Test
method shouldTranslateGeneralIntegrityViolation (line 83) | @Test
method shouldTranslateGeneralRollbackException (line 91) | @Test
method shouldTranslateGeneralError (line 99) | @Test
method shouldTranslateGeneralResourceException (line 107) | @Test
FILE: src/test/java/io/r2dbc/mssql/GeneratedValuesUnitTests.java
class GeneratedValuesUnitTests (line 34) | class GeneratedValuesUnitTests {
method shouldRejectNullColumns (line 36) | @Test
method shouldRejectMultipleColumns (line 43) | @Test
method shouldAugmentQuery (line 49) | @Test
method shouldReportGeneratedKeysExpectation (line 54) | @Test
method shouldGenerateDefaultClause (line 60) | @Test
method shouldGenerateCustomizedClause (line 65) | @Test
method shouldReorderMessageFlowForGeneratedKeys (line 70) | @Test
FILE: src/test/java/io/r2dbc/mssql/IndefinitePreparedStatementCacheUnitTests.java
class IndefinitePreparedStatementCacheUnitTests (line 31) | class IndefinitePreparedStatementCacheUnitTests {
method shouldReuseCachedStatements (line 33) | @Test
FILE: src/test/java/io/r2dbc/mssql/JsonIntegrationTests.java
class JsonIntegrationTests (line 28) | class JsonIntegrationTests extends IntegrationTestSupport {
method shouldExecuteForJsonSimple (line 30) | @Test
method shouldExecuteForJsonParametrized (line 40) | @Test
FILE: src/test/java/io/r2dbc/mssql/LobIntegrationTests.java
class LobIntegrationTests (line 43) | class LobIntegrationTests extends IntegrationTestSupport {
method testNullBlob (line 53) | @Test
method testSmallBlob (line 74) | @Test
method testBigBlob (line 96) | @Test
method testBigBlobs (line 121) | @Test
method testByteArrayBlob (line 151) | @Test
method testNullClob (line 189) | @Test
method testSmallClob (line 210) | @Test
method createTable (line 232) | private void createTable(MssqlConnection connection, String columnType) {
FILE: src/test/java/io/r2dbc/mssql/LoginFlowUnitTests.java
class LoginFlowUnitTests (line 37) | class LoginFlowUnitTests {
method shouldInitiateLogin (line 39) | @Test
method shouldFinishLogin (line 61) | @Test
method shouldPropagateError (line 77) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlBatchIntegrationTests.java
class MssqlBatchIntegrationTests (line 34) | class MssqlBatchIntegrationTests extends IntegrationTestSupport {
method shouldRunBatchWithMultipleResults (line 40) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlBatchUnitTests.java
class MssqlBatchUnitTests (line 32) | class MssqlBatchUnitTests {
method shouldExecuteSingleBatch (line 34) | @Test
method shouldExecuteMultiBatch (line 50) | @Test
method shouldFailOnExecution (line 67) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlCancelIntegrationTests.java
class MssqlCancelIntegrationTests (line 33) | class MssqlCancelIntegrationTests extends IntegrationTestSupport {
method setUp (line 37) | @BeforeEach
method shouldCancelUnparametrizedBatch (line 53) | @Test
method shouldCancelUnparametrizedCursoredBatch (line 73) | @Test
method shouldCancelParametrizedBatch (line 93) | @Test
method shouldCancelParametrizedCursoredBatch (line 114) | @Test
method createTable (line 135) | private void createTable(MssqlConnection connection, String table) {
method insertRecord (line 149) | private void insertRecord(MssqlConnection connection, int id) {
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionConfigurationUnitTests.java
class MssqlConnectionConfigurationUnitTests (line 55) | final class MssqlConnectionConfigurationUnitTests {
method builderNoApplicationName (line 57) | @Test
method builderNoConnectionId (line 63) | @Test
method builderNoHost (line 69) | @Test
method builderNoPassword (line 75) | @Test
method builderNoUsername (line 81) | @Test
method configuration (line 87) | @Test
method configurationDefaults (line 117) | @Test
method constructorNoNoHost (line 137) | @Test
method constructorNoPassword (line 146) | @Test
method constructorNoUsername (line 155) | @Test
method constructorNoSslCustomizer (line 164) | @Test
method redirect (line 172) | @Test
method redirectOtherDomain (line 195) | @Test
method redirectInDomain (line 218) | @Test
method configureKeyStore (line 242) | @Test
method selfSign (line 281) | private static Certificate selfSign(KeyPair keyPair, String subjectDN)
method shouldAcceptQueries (line 307) | @ParameterizedTest
method shouldRejectQueries (line 313) | @ParameterizedTest
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionFactoryMetadataUnitTests.java
class MssqlConnectionFactoryMetadataUnitTests (line 23) | final class MssqlConnectionFactoryMetadataUnitTests {
method name (line 25) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionFactoryProviderTest.java
class MssqlConnectionFactoryProviderTest (line 55) | final class MssqlConnectionFactoryProviderTest {
method doesNotSupportWithWrongDriver (line 59) | @Test
method doesNotSupportWithoutDriver (line 70) | @Test
method doesNotSupportWithoutHost (line 80) | @Test
method doesNotSupportWithoutPassword (line 90) | @Test
method doesNotSupportWithoutUser (line 100) | @Test
method supports (line 110) | @Test
method supportsAlternateDriverId (line 120) | @Test
method shouldConfigureWithStaticCursoredExecutionPreference (line 130) | @Test
method shouldConfigureWithLockWaitTimeout (line 146) | @Test
method shouldConfigureWithStringAsUnicode (line 162) | @Test
method shouldConfigureWithSsl (line 188) | @Test
method shouldConfigureWithoutSsl (line 206) | @Test
method shouldConfigureWithSslCustomizer (line 222) | @Test
method shouldConfigureWithSslTunnel (line 239) | @Test
method shouldConfigureWithSslTunnelCustomizer (line 265) | @Test
method shouldConfigureTcpKeepAlive (line 280) | @Test
method shouldConfigureTcpNoDelay (line 294) | @Test
method shouldConfigureWithTrustServerCertificate (line 308) | @Test
method shouldConfigureWithTrustStoreCustomizer (line 326) | @Test
method shouldConfigureWithStaticBooleanCursoredExecutionPreference (line 347) | @Test
method shouldConfigureWithClassCursoredExecutionPreference (line 363) | @Test
method returnsDriverIdentifier (line 380) | @Test
class MyPredicate (line 385) | static class MyPredicate implements Predicate<String> {
method test (line 387) | @Override
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionFactoryUnitTests.java
class MssqlConnectionFactoryUnitTests (line 44) | final class MssqlConnectionFactoryUnitTests {
method constructorNoClientFactory (line 52) | @Test
method constructorNoConfiguration (line 62) | @Test
method shouldFollowRedirect (line 68) | @Test
method properlyPropagatesFailures (line 111) | @Test
method shouldFailOnMultipleRedirects (line 133) | @Test
method shouldCreateNewPreparedStatement (line 167) | @Test
method createColumn (line 180) | private static Column createColumn(int index, String name, SqlServerTy...
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionIntegrationTests.java
class MssqlConnectionIntegrationTests (line 61) | class MssqlConnectionIntegrationTests extends IntegrationTestSupport {
method shouldFailOnConnectionRefused (line 63) | @Test
method shouldFailOnLoginFailedRefused (line 81) | @Test
method shouldConnectWithSelfSignedCert (line 99) | @Test
method shouldReportMetadata (line 121) | @Test
method shouldInsertAndSelectUsingMap (line 135) | @Test
method shouldInsertAndSelectUsingRowCount (line 165) | @Test
method shouldInsertAndSelectUsingPagingAndDirectMode (line 182) | @Test
method shouldInsertAndSelectUsingPagingAndCursors (line 213) | @Test
method shouldInsertAndSelectCompoundStatement (line 234) | @Test
method shouldConsumeSequence (line 269) | @Test
method shouldReusePreparedStatements (line 290) | @Test
method shouldApplyLockWaitwaot (line 299) | @Test
method queryAfterCancelShouldCompleteSuccessfully (line 344) | @Test
method cancelShouldTerminateOngoingDirectQuery (line 352) | @Test
method cancelShouldTerminateOngoingCursoredQuery (line 367) | @Test
method shouldResumeOperationsAfterCancellationOfPendingRequest (line 382) | @Test
method shouldRejectMultipleParametrizedExecutions (line 397) | @Test
method createTable (line 416) | private void createTable(MssqlConnection connection) {
method createSequence (line 430) | private void createSequence(MssqlConnection connection) {
method writeKeyStoreToTempFile (line 441) | private String writeKeyStoreToTempFile(Path tempDir, KeyStore keyStore...
method insertRecord (line 451) | private void insertRecord(MssqlConnection connection, int id) {
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionMetadataUnitTests.java
class MssqlConnectionMetadataUnitTests (line 28) | class MssqlConnectionMetadataUnitTests {
method shouldConstructMetadata (line 30) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlConnectionUnitTests.java
class MssqlConnectionUnitTests (line 49) | class MssqlConnectionUnitTests {
method shouldBeginTransactionFromInitialState (line 55) | @Test
method shouldBeginTransactionFromExplicitState (line 68) | @Test
method shouldNotBeginTransactionFromStartedState (line 81) | @Test
method shouldCommitFromExplicitTransaction (line 99) | @Test
method shouldNotCommitInAutoCommitState (line 112) | @Test
method shouldRollbackFromExplicitTransaction (line 130) | @Test
method shouldNotRollbackInAutoCommitState (line 143) | @Test
method shouldNotSupportSavePointRelease (line 161) | @Test
method shouldAllowSavepointNames (line 171) | @ParameterizedTest
method shouldRejectSavepointNames (line 182) | @ParameterizedTest
method shouldRollbackTransactionToSavepointFromExplicitTransaction (line 193) | @Test
method shouldNotRollbackTransactionToSavepointInAutoCommitState (line 206) | @Test
method shouldCreateSavepointFromExplicitTransaction (line 224) | @Test
method createSavepointShouldBeginTransaction (line 238) | @Test
method shouldSetIsolationLevel (line 252) | @ParameterizedTest
method shouldSetLockWaitTimeout (line 267) | @Test
method localValidationShouldValidateAgainstConnectionState (line 301) | @Test
method remoteValidationShouldIssueQuery (line 325) | @Test
method remoteValidationShouldFail (line 340) | @Test
method shouldSanitizeProperly (line 356) | @Test
method isolationLevels (line 365) | private static Stream<IsolationLevel> isolationLevels() {
FILE: src/test/java/io/r2dbc/mssql/MssqlResultUnitTests.java
class MssqlResultUnitTests (line 37) | class MssqlResultUnitTests {
method shouldEmitErrorSignalInOrder (line 39) | @ParameterizedTest
method factories (line 61) | static List<ResultFactory> factories() {
class ResultFactory (line 88) | static abstract class ResultFactory {
method create (line 90) | abstract MssqlResult create(Flux<Message> messages);
FILE: src/test/java/io/r2dbc/mssql/MssqlReturnValuesUnitTests.java
class MssqlReturnValuesUnitTests (line 39) | class MssqlReturnValuesUnitTests {
method metadataShouldReportColumnNames (line 55) | @Test
method metadataShouldReportCorrectType (line 63) | @Test
method getShouldReturnValue (line 76) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlRowMetadataUnitTests.java
class MssqlRowMetadataUnitTests (line 44) | class MssqlRowMetadataUnitTests {
method shouldLookupMetadataByName (line 56) | @Test
method shouldRemoveRowstatIfLastColumn (line 70) | @Test
method retainsRowstatIfNotLastColumn (line 86) | @Test
method shouldLookupMetadataByIndex (line 99) | @Test
method shouldReturnMetadataForAllColumns (line 108) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlRowUnitTests.java
class MssqlRowUnitTests (line 39) | class MssqlRowUnitTests {
method shouldReadRowByIndex (line 55) | @Test
method shouldReadRowByName (line 63) | @Test
method releaseShouldDeallocateResources (line 69) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlSegmentResultUnitTests.java
class MssqlSegmentResultUnitTests (line 54) | class MssqlSegmentResultUnitTests {
method getRowToken (line 74) | private NbcRowToken getRowToken() {
method shouldApplyRowMapping (line 78) | @Test
method shouldApplyOutParameterMapping (line 89) | @Test
method mapShouldIgnoreNotice (line 103) | @Test
method mapShouldTerminateWithError (line 113) | @Test
method getRowsUpdatedShouldTerminateWithError (line 123) | @Test
method shouldConsumeRowsUpdated (line 133) | @Test
method filterShouldRetainUpdateCount (line 144) | @Test
method filterShouldSkipRowMapping (line 155) | @Test
method filterShouldSkipErrorMessage (line 167) | @Test
method mapRowShouldDeallocateRowResources (line 180) | @ValueSource(booleans = {true, false})
method mapShouldDeallocateRowResources (line 205) | @ValueSource(booleans = {true, false})
method filterShouldDeallocateResources (line 229) | @ValueSource(booleans = {true, false})
method flatMapShouldDeallocateResourcesAfterConsumption (line 254) | @Test
method flatMapShouldNotTerminateWithError (line 273) | @Test
method emptyFlatMapShouldDeallocateResourcesAfterConsumption (line 285) | @Test
method flatMapShouldMapErrorResponse (line 299) | @Test
method flatMapShouldMapNoticeResponse (line 321) | @Test
FILE: src/test/java/io/r2dbc/mssql/MssqlTestKit.java
class MssqlTestKit (line 37) | final class MssqlTestKit extends IntegrationTestSupport implements TestK...
method blobType (line 47) | @Override
method clobType (line 52) | @Override
method getConnectionFactory (line 57) | @Override
method getIdentifier (line 62) | @Override
method getJdbcOperations (line 67) | @Override
method expand (line 78) | @Override
method getPlaceholder (line 88) | @Override
method prepareStatementWithIncompleteBatchFails (line 93) | @Override
method prepareStatementWithIncompleteBindingFails (line 98) | @Override
FILE: src/test/java/io/r2dbc/mssql/ParametrizedMssqlStatementIntegrationTests.java
class ParametrizedMssqlStatementIntegrationTests (line 41) | class ParametrizedMssqlStatementIntegrationTests extends IntegrationTest...
method shouldExecuteBatch (line 47) | @Test
method failureShouldNotLockUpConnection (line 72) | @Test
method shouldDecodeNull (line 99) | @Test
method shouldRunQueryWithLocalVariableDeclarations (line 114) | @Test
method shouldEmitSingleResultForCursoredExecution (line 124) | @Test
method shouldRepreparePreparedStatement (line 147) | @Test
method shouldRunStatementWithMultipleResults (line 189) | @Test
method shouldRunStatementWithMultipleBindingsAndResults (line 220) | @Test
method shouldTimeoutSqlBatch (line 269) | @Test
method shouldTimeoutCursored (line 278) | @Test
FILE: src/test/java/io/r2dbc/mssql/ParametrizedMssqlStatementStoredProcedureIntegrationTests.java
class ParametrizedMssqlStatementStoredProcedureIntegrationTests (line 32) | class ParametrizedMssqlStatementStoredProcedureIntegrationTests extends ...
method setUp (line 34) | @BeforeEach
method shouldCallProcedure (line 51) | @Test
method shouldCallProcedureWithFetchSize (line 66) | @Test
method shouldCallProcedureAsSegment (line 82) | @Test
method shouldCallProcedureWithFetchSizeAsSegment (line 97) | @Test
FILE: src/test/java/io/r2dbc/mssql/ParametrizedMssqlStatementUnitTests.java
class ParametrizedMssqlStatementUnitTests (line 51) | class ParametrizedMssqlStatementUnitTests {
method shouldSupportSql (line 57) | @Test
method shouldParseSql (line 67) | @Test
method executeWithoutBindingsShouldNotFail (line 82) | @Test
method shouldBindParameterByIndex (line 89) | @Test
method shouldRejectBindIndexOutOfBounds (line 98) | @Test
method shouldBindParameterByName (line 107) | @Test
method shouldBindParameterByNameWithPrefix (line 116) | @Test
method shouldBindParameter (line 125) | @Test
method shouldRejectBindForUnknownParameters (line 143) | @Test
method shouldCachePreparedStatementHandle (line 151) | @Test
method shouldReusePreparedStatementHandle (line 180) | @Test
method shouldPropagateError (line 211) | @Test
FILE: src/test/java/io/r2dbc/mssql/QueryMessageFlowUnitTests.java
class QueryMessageFlowUnitTests (line 42) | @SuppressWarnings("unchecked")
method setUp (line 47) | @BeforeEach
method shouldAwaitDoneProcTokenShouldNotCompleteFlow (line 53) | @Test
method shouldAwaitDoneToken (line 65) | @Test
FILE: src/test/java/io/r2dbc/mssql/ReturnGeneratedValuesIntegrationTests.java
class ReturnGeneratedValuesIntegrationTests (line 36) | class ReturnGeneratedValuesIntegrationTests extends IntegrationTestSuppo...
method setUp (line 38) | @BeforeEach
method simpleStatementShouldReturnNumberOfInsertedRows (line 43) | @Test
method simpleStatementShouldReturnGeneratedValues (line 53) | @Test
method preparedStatementShouldReturnNumberOfInsertedRows (line 63) | @Test
method preparedStatementShouldReturnGeneratedValues (line 74) | @Test
method verifyRowsUpdated (line 85) | private static void verifyRowsUpdated(Flux<MssqlResult> result) {
method verifyGeneratedValues (line 99) | private static void verifyGeneratedValues(Flux<MssqlResult> result) {
method createTable (line 107) | private void createTable(MssqlConnection connection) {
FILE: src/test/java/io/r2dbc/mssql/RpcBlobUnitTests.java
class RpcBlobUnitTests (line 51) | public class RpcBlobUnitTests {
method shouldEncodeChunkedStream (line 61) | @Test
FILE: src/test/java/io/r2dbc/mssql/RpcQueryMessageFlowUnitTests.java
class RpcQueryMessageFlowUnitTests (line 53) | @SuppressWarnings("unchecked")
method setUp (line 69) | @BeforeEach
method shouldEncodeSpExecuteSql (line 74) | @Test
method shouldEncodeSpCursorOpen (line 102) | @Test
method shouldEncodeSpCursorFetch (line 124) | @Test
method shouldEncodeSpCursorClose (line 144) | @Test
method shouldEncodeSpPrepExec (line 161) | @Test
method shouldEncodeSpCursorExec (line 196) | @Test
method shouldTransitionFromNoneToFetching (line 221) | @Test
method shouldContinueFetching (line 235) | @Test
method shouldStopFetching (line 250) | @Test
method shouldTransitionFromNoneToClosing (line 264) | @Test
method shouldTransitionFromClosingToClosed (line 277) | @Test
FILE: src/test/java/io/r2dbc/mssql/SimpleMssqlStatementIntegrationTests.java
class SimpleMssqlStatementIntegrationTests (line 32) | class SimpleMssqlStatementIntegrationTests extends IntegrationTestSupport {
method shouldTimeoutSqlBatch (line 34) | @Test
method shouldTimeoutCursored (line 43) | @Test
FILE: src/test/java/io/r2dbc/mssql/SimpleMssqlStatementUnitTests.java
class SimpleMssqlStatementUnitTests (line 60) | class SimpleMssqlStatementUnitTests {
method shouldReportNumberOfAffectedRows (line 71) | @Test
method shouldReturnColumnData (line 91) | @Test
method shouldFlatMapResults (line 117) | @Test
method shouldFilterAndFlatMapCount (line 136) | @Test
method shouldFilterAndFlatMapData (line 152) | @Test
method shouldFilterError (line 178) | @Test
method shouldFlatMapErrorMessage (line 193) | @Test
method simpleResultAndCount (line 218) | private TestClient simpleResultAndCount() {
method shouldPreferCursoredExecution (line 240) | @Test
method shouldForceDirectExecution (line 262) | @Test
method shouldPreferDirectExecution (line 279) | @Test
method shouldForceCursoredExecution (line 296) | @Test
method mockClient (line 318) | @SuppressWarnings("unchecked")
method createColumn (line 331) | private static Column createColumn(int index, String name, SqlServerTy...
FILE: src/test/java/io/r2dbc/mssql/SqlVariantIntegrationTests.java
class SqlVariantIntegrationTests (line 28) | class SqlVariantIntegrationTests extends IntegrationTestSupport {
method shouldExecuteBatch (line 30) | @Test
FILE: src/test/java/io/r2dbc/mssql/TestConnectionOptions.java
class TestConnectionOptions (line 24) | class TestConnectionOptions extends ConnectionOptions {
method TestConnectionOptions (line 26) | TestConnectionOptions() {
FILE: src/test/java/io/r2dbc/mssql/TransactionIntegrationTests.java
class TransactionIntegrationTests (line 38) | class TransactionIntegrationTests extends IntegrationTestSupport {
method savepointsSynchronized (line 40) | @Test
method savepointsConcatWith (line 98) | @Test
method autoCommitDisabled (line 128) | @Test
method savepointStartsTransaction (line 154) | @Test
method commitTransaction (line 189) | @Test
method rollbackTransaction (line 218) | @Test
method shouldBeginExtendedTransaction (line 247) | @Test
method getTransactionCount (line 283) | private Flux<Integer> getTransactionCount() {
method shouldRestoreAutoCommitAfterExtendedTx (line 288) | @Test
method assertAutoCommit (line 310) | private void assertAutoCommit() {
method shouldResetIsolationLevelAfterTransaction (line 337) | @Test
method shouldResetLockTimeoutAfterTransaction (line 357) | @Test
method getIsolationLevel (line 376) | Mono<IsolationLevel> getIsolationLevel() {
method getImplicitTransactions (line 407) | Mono<Boolean> getImplicitTransactions() {
method createTable (line 414) | private void createTable(MssqlConnection connection) {
FILE: src/test/java/io/r2dbc/mssql/XmlIntegrationTests.java
class XmlIntegrationTests (line 28) | class XmlIntegrationTests extends IntegrationTestSupport {
method shouldExecuteForXmlSimple (line 30) | @Test
method shouldExecuteForXmlParametrized (line 40) | @Test
FILE: src/test/java/io/r2dbc/mssql/client/ConnectionStateUnitTests.java
class ConnectionStateUnitTests (line 37) | class ConnectionStateUnitTests {
method setUp (line 45) | @BeforeEach
method shouldInitiateSslHandshakeForLogin (line 52) | @Test
method shouldInitiateSslHandshakeForConnection (line 62) | @Test
method shouldAdvanceToSslHandshakeState (line 72) | @Test
method shouldAdvancePreloginState (line 82) | @Test
FILE: src/test/java/io/r2dbc/mssql/client/ReactorNettyClientIntegrationTests.java
class ReactorNettyClientIntegrationTests (line 47) | class ReactorNettyClientIntegrationTests extends IntegrationTestSupport {
method setUp (line 63) | @BeforeEach
method tearDown (line 70) | @AfterEach
method disconnectedShouldRejectExchange (line 75) | @Test
method shouldCancelExchangeOnCloseFirstMessage (line 87) | @Test
FILE: src/test/java/io/r2dbc/mssql/client/StreamDecoderUnitTests.java
class StreamDecoderUnitTests (line 43) | class StreamDecoderUnitTests {
method shouldDecodeFullPacket (line 47) | @Test
method shouldDecodePartialPacket (line 69) | @Test
method shouldDecodePacketWithNextRemainder (line 104) | @Test
method shouldDecodePacketWithNextRemainderAfterNextHeader (line 133) | @Test
method shouldDecodeTwoPacketsFragmented (line 163) | @Test
method shouldDecodeChunkedPackets (line 205) | @Test
method shouldDecodeManyChunks (line 249) | @Test
method createChunks (line 272) | private List<ByteBuf> createChunks() {
method initializeColumMetadata (line 303) | private static void initializeColumMetadata(StreamDecoder decoder, Mes...
FILE: src/test/java/io/r2dbc/mssql/client/TdsEncoderUnitTests.java
class TdsEncoderUnitTests (line 44) | class TdsEncoderUnitTests {
method shouldPassThruByteBuffers (line 46) | @Test
method shouldPrependByteBuffersWithHeader (line 57) | @Test
method shouldResetHeaderStatus (line 72) | @Test
method shouldEncodeTdsPacket (line 87) | @Test
method shouldEncodeContextualTdsFragment (line 103) | @Test
method shouldEncodeAndSplitContextualTdsFragment (line 120) | @Test
method shouldEncodeTdsFragment (line 142) | @Test
method failsEncodingTdsFragmentWithoutHeader (line 161) | @Test
method shouldEncodeMessageSequence (line 173) | @Test
method shouldChunkMessagesLargeSmall (line 207) | @Test
method shouldChunkMessagesLargeLargeSmall (line 231) | @Test
method shouldChunkMessagesLargeLargeLarge (line 262) | @Test
method shouldEstimateTdsPacketSize (line 301) | @Test
method encodeExpectation (line 311) | private static void encodeExpectation(ByteBuf buffer, StatusBit bit, i...
FILE: src/test/java/io/r2dbc/mssql/client/TestClient.java
class TestClient (line 44) | @SuppressWarnings({"unchecked", "rawtypes"})
method TestClient (line 64) | private TestClient(boolean expectClose, boolean connected, Flux<Window...
method builder (line 92) | public static Builder builder() {
method attention (line 96) | @Override
method close (line 101) | @Override
method isClosed (line 108) | public boolean isClosed() {
method exchange (line 112) | public Flux<Message> exchange(Publisher<? extends ClientMessage> reque...
method getByteBufAllocator (line 124) | @Override
method getContext (line 129) | @Override
method getDatabaseCollation (line 134) | @Override
method getDatabaseVersion (line 141) | @Override
method getRedirect (line 146) | @Override
method getTransactionDescriptor (line 151) | @Override
method getTransactionStatus (line 156) | @Override
method isColumnEncryptionSupported (line 161) | @Override
method isConnected (line 166) | @Override
class Builder (line 171) | public static final class Builder {
method Builder (line 183) | private Builder() {
method build (line 186) | public TestClient build() {
method expectClose (line 190) | public Builder expectClose() {
method withConnected (line 195) | public Builder withConnected(boolean connected) {
method withRedirect (line 200) | public Builder withRedirect(Redirect redirect) {
method withTransactionStatus (line 205) | public Builder withTransactionStatus(TransactionStatus transactionSt...
method expectRequest (line 210) | public Exchange.Builder<Builder> expectRequest(ClientMessage... requ...
method assertNextRequestWith (line 222) | public Exchange.Builder<Builder> assertNextRequestWith(Consumer<Clie...
method assertNextRequestWith (line 228) | public Exchange.Builder<Builder> assertNextRequestWith(Consumer<Clie...
method window (
Condensed preview — 329 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,784K chars).
[
{
"path": ".github/workflows/ci.yml",
"chars": 1075,
"preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
},
{
"path": ".github/workflows/pullrequests.yml",
"chars": 818,
"preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
},
{
"path": ".github/workflows/release.yml",
"chars": 1079,
"preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
},
{
"path": ".gitignore",
"chars": 479,
"preview": "### Maven template\ntarget/\npom.xml.tag\npom.xml.releaseBackup\npom.xml.versionsBackup\npom.xml.next\nrelease.properties\ndepe"
},
{
"path": ".mvn/wrapper/MavenWrapperDownloader.java",
"chars": 4334,
"preview": "/*\n * Copyright 2018-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": ".mvn/wrapper/maven-wrapper.properties",
"chars": 118,
"preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip\n"
},
{
"path": ".travis.yml",
"chars": 788,
"preview": "language: java\njdk:\n- openjdk8\ncache:\n directories:\n - $HOME/.m2\nnotifications:\n slack:\n secure: JMisDlbY76AZeIQn/"
},
{
"path": "CHANGELOG",
"chars": 10894,
"preview": "R2DBC MSSQL Changelog\n=============================\n\n1.0.0.RELEASE\n------------------\n* Upgrade to Project Reactor 2022."
},
{
"path": "LICENSE",
"chars": 11359,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NOTICE",
"chars": 620,
"preview": "Reactive Relational Database Connectivity\n\nCopyright 2017-2022 the original author or authors.\n\nLicensed under the Apach"
},
{
"path": "README.md",
"chars": 26004,
"preview": "# Reactive Relational Database Connectivity Microsoft SQL Server Implementation [
About this extraction
This page contains the full source code of the r2dbc/r2dbc-mssql GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 329 files (1.6 MB), approximately 400.8k tokens, and a symbol index with 2966 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.