Full Code of snowflakedb/snowflake-jdbc for AI

master 342336349d2a cached
1042 files
87.1 MB
1.8M tokens
9696 symbols
1 requests
Download .txt
Showing preview only (7,154K chars total). Download the full file or copy to clipboard to get everything.
Repository: snowflakedb/snowflake-jdbc
Branch: master
Commit: 342336349d2a
Files: 1042
Total size: 87.1 MB

Directory structure:
gitextract_690hkf8e/

├── .cursor/
│   └── skills/
│       └── graphite-pr-workflow/
│           └── SKILL.md
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── BUG_REPORT.md
│   │   └── FEATURE_REQUEST.md
│   ├── pull_request_template.md
│   ├── repo_meta.yaml
│   └── workflows/
│       ├── build-test.yml
│       ├── changelog.yml
│       ├── check-style.yml
│       ├── cla_bot.yml
│       ├── jira_close.yml
│       ├── jira_comment.yml
│       ├── jira_issue.yml
│       ├── parameters_aws.json.gpg
│       ├── parameters_aws_auth_tests.json.gpg
│       ├── parameters_azure.json.gpg
│       ├── parameters_gcp.json.gpg
│       ├── rsa_keys/
│       │   ├── rsa_key_jdbc_aws.p8.gpg
│       │   ├── rsa_key_jdbc_azure.p8.gpg
│       │   └── rsa_key_jdbc_gcp.p8.gpg
│       ├── semgrep.yml
│       ├── snyk-issue.yml
│       ├── snyk-pr.yml
│       └── snyk-scan.yml
├── .gitignore
├── .mvn/
│   └── wrapper/
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── .pre-commit-config.yaml
├── CHANGELOG.md
├── FIPS/
│   ├── .gitignore
│   ├── pom.xml
│   ├── public_pom.xml
│   ├── scripts/
│   │   └── check_content.sh
│   └── src/
│       └── test/
│           └── java/
│               └── net/
│                   └── snowflake/
│                       └── client/
│                           ├── AbstractDriverIT.java
│                           ├── DontRunOnGCP.java
│                           ├── DontRunOnGithubActions.java
│                           ├── TestUtil.java
│                           ├── category/
│                           │   └── FipsTestSuite.java
│                           └── jdbc/
│                               └── ConnectionFipsIT.java
├── Jenkinsfile
├── LICENSE.txt
├── README.rst
├── SECURITY.md
├── TestOnly/
│   ├── .gitignore
│   ├── README.rst
│   └── pom.xml
├── ci/
│   ├── _init.sh
│   ├── build.sh
│   ├── container/
│   │   ├── build_component.sh
│   │   ├── change_snowflake_test_pwd.py
│   │   ├── create_schema.py
│   │   ├── download_artifact.sh
│   │   ├── drop_schema.py
│   │   ├── hang_webserver.py
│   │   ├── sf_test_utils.py
│   │   ├── test_authentication.sh
│   │   ├── test_component.sh
│   │   └── upload_artifact.sh
│   ├── image/
│   │   ├── .gitignore
│   │   ├── Dockerfile.jdbc-rockylinux-openjdk-test
│   │   ├── Dockerfile.jdbc-rockylinux8-openjdk-test
│   │   ├── build.sh
│   │   ├── scripts/
│   │   │   ├── aws.sh
│   │   │   ├── entrypoint.sh
│   │   │   ├── git.sh
│   │   │   ├── npmrc
│   │   │   ├── pip.sh
│   │   │   └── python3.6.sh
│   │   └── update.sh
│   ├── log_analyze_setup.sh
│   ├── scripts/
│   │   ├── check_content.sh
│   │   ├── check_no_raw_system_calls.sh
│   │   ├── login_docker.sh
│   │   ├── set_git_info.sh
│   │   └── setup_gpg.sh
│   ├── test.sh
│   ├── test_authentication.sh
│   ├── test_mac.sh
│   ├── test_revocation.sh
│   ├── test_wif.sh
│   ├── test_windows.bat
│   └── wif/
│       ├── aws-lambda/
│       │   ├── README.md
│       │   ├── pom.xml
│       │   ├── src/
│       │   │   └── main/
│       │   │       └── java/
│       │   │           └── com/
│       │   │               └── snowflake/
│       │   │                   └── wif/
│       │   │                       └── aws/
│       │   │                           └── WifLambdaFunctionE2e.java
│       │   └── test.sh
│       ├── azure-function/
│       │   ├── Dockerfile
│       │   ├── README.md
│       │   ├── host.json
│       │   ├── pom.xml
│       │   ├── src/
│       │   │   └── main/
│       │   │       └── java/
│       │   │           └── com/
│       │   │               └── snowflake/
│       │   │                   └── wif/
│       │   │                       └── azure/
│       │   │                           └── WifAzureFunctionE2e.java
│       │   └── test.sh
│       ├── gcp-function/
│       │   ├── README.md
│       │   ├── pom.xml
│       │   ├── src/
│       │   │   └── main/
│       │   │       └── java/
│       │   │           └── com/
│       │   │               └── snowflake/
│       │   │                   └── wif/
│       │   │                       └── gcp/
│       │   │                           └── WifGcpFunctionE2e.java
│       │   └── test.sh
│       ├── parameters/
│       │   ├── parameters_wif.json.gpg
│       │   ├── parameters_wif_function.json.gpg
│       │   ├── rsa_gcp_function.gpg
│       │   ├── rsa_wif_aws_azure.gpg
│       │   └── rsa_wif_gcp.gpg
│       ├── shared/
│       │   └── com/
│       │       └── snowflake/
│       │           └── wif/
│       │               └── common/
│       │                   └── WifTestHelper.java
│       └── test_wif.sh
├── codecov/
│   ├── codecov
│   ├── codecov.SHA256SUM
│   ├── codecov.SHA256SUM.sig
│   └── codecov_aarch64
├── codecov.yml
├── dependencies/
│   ├── Readme.md
│   ├── arrow-format-17.0.0.jar
│   ├── arrow-memory-17.0.0.pom
│   ├── arrow-memory-core-17.0.0.jar
│   ├── arrow-memory-netty-buffer-patch-17.0.0.jar
│   ├── arrow-memory-unsafe-17.0.0.jar
│   ├── arrow-vector-17.0.0.jar
│   └── tika-core-2.4.1.jar
├── fat-jar-test-app/
│   ├── pom.xml
│   ├── run.sh
│   └── src/
│       └── main/
│           ├── fips-java/
│           │   └── net/
│           │       └── snowflake/
│           │           └── FipsInitializer.java
│           ├── java/
│           │   └── net/
│           │       └── snowflake/
│           │           └── FatJarTestApp.java
│           └── resources/
│               ├── logback.xml
│               ├── logging.properties
│               └── test.csv
├── linkage-checker-exclusion-rules.xml
├── mvnw
├── mvnw.cmd
├── output.json
├── parent-pom.xml
├── pom.xml
├── prepareNewVersion.sh
├── prober/
│   ├── Dockerfile
│   ├── Jenkinsfile.groovy
│   ├── entrypoint.sh
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── snowflake/
│                       └── client/
│                           └── jdbc/
│                               └── prober/
│                                   └── Prober.java
├── public_pom.xml
├── settings.json
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── net/
│   │   │       └── snowflake/
│   │   │           └── client/
│   │   │               ├── api/
│   │   │               │   ├── auth/
│   │   │               │   │   └── AuthenticatorType.java
│   │   │               │   ├── connection/
│   │   │               │   │   ├── DownloadStreamConfig.java
│   │   │               │   │   ├── SnowflakeConnection.java
│   │   │               │   │   ├── SnowflakeDatabaseMetaData.java
│   │   │               │   │   └── UploadStreamConfig.java
│   │   │               │   ├── datasource/
│   │   │               │   │   ├── SnowflakeDataSource.java
│   │   │               │   │   └── SnowflakeDataSourceFactory.java
│   │   │               │   ├── driver/
│   │   │               │   │   └── SnowflakeDriver.java
│   │   │               │   ├── exception/
│   │   │               │   │   ├── ErrorCode.java
│   │   │               │   │   └── SnowflakeSQLException.java
│   │   │               │   ├── http/
│   │   │               │   │   └── HttpHeadersCustomizer.java
│   │   │               │   ├── loader/
│   │   │               │   │   ├── LoadResultListener.java
│   │   │               │   │   ├── Loader.java
│   │   │               │   │   ├── LoaderFactory.java
│   │   │               │   │   ├── LoaderProperty.java
│   │   │               │   │   ├── LoadingError.java
│   │   │               │   │   └── Operation.java
│   │   │               │   ├── pooling/
│   │   │               │   │   ├── SnowflakeConnectionPoolDataSource.java
│   │   │               │   │   └── SnowflakeConnectionPoolDataSourceFactory.java
│   │   │               │   ├── resultset/
│   │   │               │   │   ├── FieldMetadata.java
│   │   │               │   │   ├── QueryStatus.java
│   │   │               │   │   ├── SnowflakeAsyncResultSet.java
│   │   │               │   │   ├── SnowflakeResultSet.java
│   │   │               │   │   ├── SnowflakeResultSetMetaData.java
│   │   │               │   │   ├── SnowflakeResultSetSerializable.java
│   │   │               │   │   └── SnowflakeType.java
│   │   │               │   └── statement/
│   │   │               │       ├── SnowflakePreparedStatement.java
│   │   │               │       └── SnowflakeStatement.java
│   │   │               ├── internal/
│   │   │               │   ├── api/
│   │   │               │   │   └── implementation/
│   │   │               │   │       ├── connection/
│   │   │               │   │       │   └── SnowflakeConnectionImpl.java
│   │   │               │   │       ├── datasource/
│   │   │               │   │       │   └── SnowflakeBasicDataSource.java
│   │   │               │   │       ├── metadata/
│   │   │               │   │       │   └── SnowflakeDatabaseMetaDataImpl.java
│   │   │               │   │       ├── pooling/
│   │   │               │   │       │   ├── LogicalConnection.java
│   │   │               │   │       │   ├── SnowflakeConnectionPoolDataSourceImpl.java
│   │   │               │   │       │   └── SnowflakePooledConnection.java
│   │   │               │   │       ├── resultset/
│   │   │               │   │       │   ├── FieldMetadataImpl.java
│   │   │               │   │       │   └── SnowflakeBaseResultSet.java
│   │   │               │   │       └── statement/
│   │   │               │   │           ├── SnowflakeCallableStatementImpl.java
│   │   │               │   │           ├── SnowflakePreparedStatementImpl.java
│   │   │               │   │           └── SnowflakeStatementImpl.java
│   │   │               │   ├── common/
│   │   │               │   │   └── core/
│   │   │               │   │       ├── SFBinary.java
│   │   │               │   │       └── SFBinaryFormat.java
│   │   │               │   ├── config/
│   │   │               │   │   ├── ConnectionParameters.java
│   │   │               │   │   ├── SFClientConfig.java
│   │   │               │   │   ├── SFClientConfigParser.java
│   │   │               │   │   └── SFConnectionConfigParser.java
│   │   │               │   ├── core/
│   │   │               │   │   ├── ArrowSqlInput.java
│   │   │               │   │   ├── AssertUtil.java
│   │   │               │   │   ├── AttributeEnhancingHttpRequestRetryHandler.java
│   │   │               │   │   ├── BaseSqlInput.java
│   │   │               │   │   ├── BasicEvent.java
│   │   │               │   │   ├── CachedCredentialType.java
│   │   │               │   │   ├── CancellationReason.java
│   │   │               │   │   ├── ChunkDownloader.java
│   │   │               │   │   ├── ColumnTypeHelper.java
│   │   │               │   │   ├── Constants.java
│   │   │               │   │   ├── CredentialManager.java
│   │   │               │   │   ├── DataConversionContext.java
│   │   │               │   │   ├── DefaultFileCacheManager.java
│   │   │               │   │   ├── DownloaderMetrics.java
│   │   │               │   │   ├── Event.java
│   │   │               │   │   ├── EventHandler.java
│   │   │               │   │   ├── EventUtil.java
│   │   │               │   │   ├── FieldSchemaCreator.java
│   │   │               │   │   ├── FileCacheManager.java
│   │   │               │   │   ├── FileCacheManagerBuilder.java
│   │   │               │   │   ├── FileCacheUtil.java
│   │   │               │   │   ├── FileTypeDetector.java
│   │   │               │   │   ├── FileUtil.java
│   │   │               │   │   ├── HeaderCustomizerHttpRequestInterceptor.java
│   │   │               │   │   ├── HeartbeatIntervalSelector.java
│   │   │               │   │   ├── HeartbeatRegistry.java
│   │   │               │   │   ├── HeartbeatThread.java
│   │   │               │   │   ├── HttpClientSettingsKey.java
│   │   │               │   │   ├── HttpExecutingContext.java
│   │   │               │   │   ├── HttpExecutingContextBuilder.java
│   │   │               │   │   ├── HttpProtocol.java
│   │   │               │   │   ├── HttpResponseContextDto.java
│   │   │               │   │   ├── HttpResponseWithHeaders.java
│   │   │               │   │   ├── HttpUtil.java
│   │   │               │   │   ├── JsonSqlInput.java
│   │   │               │   │   ├── JsonSqlOutput.java
│   │   │               │   │   ├── MetaDataOfBinds.java
│   │   │               │   │   ├── NoOpFileCacheManager.java
│   │   │               │   │   ├── OCSPMode.java
│   │   │               │   │   ├── OCSPTelemetryData.java
│   │   │               │   │   ├── ObjectMapperFactory.java
│   │   │               │   │   ├── OpaqueContextDTO.java
│   │   │               │   │   ├── ParameterBindingDTO.java
│   │   │               │   │   ├── PrivateLinkDetector.java
│   │   │               │   │   ├── QueryContextCache.java
│   │   │               │   │   ├── QueryContextDTO.java
│   │   │               │   │   ├── QueryContextEntryDTO.java
│   │   │               │   │   ├── QueryExecDTO.java
│   │   │               │   │   ├── QueryResultFormat.java
│   │   │               │   │   ├── ResultUtil.java
│   │   │               │   │   ├── SFArrowResultSet.java
│   │   │               │   │   ├── SFBaseResultSet.java
│   │   │               │   │   ├── SFBaseSession.java
│   │   │               │   │   ├── SFBaseStatement.java
│   │   │               │   │   ├── SFBasicCrlTrustManager.java
│   │   │               │   │   ├── SFChildResult.java
│   │   │               │   │   ├── SFCrlTrustManagerFactory.java
│   │   │               │   │   ├── SFException.java
│   │   │               │   │   ├── SFExtendedCrlTrustManager.java
│   │   │               │   │   ├── SFFixedViewResultSet.java
│   │   │               │   │   ├── SFJsonResultSet.java
│   │   │               │   │   ├── SFLoginInput.java
│   │   │               │   │   ├── SFLoginOutput.java
│   │   │               │   │   ├── SFOCSPException.java
│   │   │               │   │   ├── SFOauthLoginInput.java
│   │   │               │   │   ├── SFPreparedStatementMetaData.java
│   │   │               │   │   ├── SFPubKeysInternal.java
│   │   │               │   │   ├── SFResultSet.java
│   │   │               │   │   ├── SFResultSetFactory.java
│   │   │               │   │   ├── SFResultSetMetaData.java
│   │   │               │   │   ├── SFSSLConnectionSocketFactory.java
│   │   │               │   │   ├── SFSession.java
│   │   │               │   │   ├── SFSessionProperty.java
│   │   │               │   │   ├── SFSqlInput.java
│   │   │               │   │   ├── SFStatement.java
│   │   │               │   │   ├── SFStatementType.java
│   │   │               │   │   ├── SFTrustManager.java
│   │   │               │   │   ├── SdkProxyRoutePlanner.java
│   │   │               │   │   ├── SecureStorageAppleManager.java
│   │   │               │   │   ├── SecureStorageLinuxManager.java
│   │   │               │   │   ├── SecureStorageManager.java
│   │   │               │   │   ├── SecureStorageWindowsManager.java
│   │   │               │   │   ├── SecurityUtil.java
│   │   │               │   │   ├── SessionUtil.java
│   │   │               │   │   ├── SessionUtilExternalBrowser.java
│   │   │               │   │   ├── SessionUtilKeyPair.java
│   │   │               │   │   ├── SfSqlArray.java
│   │   │               │   │   ├── SfTimestampUtil.java
│   │   │               │   │   ├── SnowflakeMutableProxyRoutePlanner.java
│   │   │               │   │   ├── SpcsTokenReader.java
│   │   │               │   │   ├── StmtUtil.java
│   │   │               │   │   ├── SystemUtil.java
│   │   │               │   │   ├── URLUtil.java
│   │   │               │   │   ├── UUIDUtils.java
│   │   │               │   │   ├── arrow/
│   │   │               │   │   │   ├── AbstractArrowVectorConverter.java
│   │   │               │   │   │   ├── ArrayConverter.java
│   │   │               │   │   │   ├── ArrowResultChunkIndexSorter.java
│   │   │               │   │   │   ├── ArrowResultUtil.java
│   │   │               │   │   │   ├── ArrowVectorConverter.java
│   │   │               │   │   │   ├── ArrowVectorConverterUtil.java
│   │   │               │   │   │   ├── BigIntToFixedConverter.java
│   │   │               │   │   │   ├── BigIntToScaledFixedConverter.java
│   │   │               │   │   │   ├── BigIntToTimeConverter.java
│   │   │               │   │   │   ├── BigIntToTimestampLTZConverter.java
│   │   │               │   │   │   ├── BigIntToTimestampNTZConverter.java
│   │   │               │   │   │   ├── BitToBooleanConverter.java
│   │   │               │   │   │   ├── DateConverter.java
│   │   │               │   │   │   ├── DecfloatToDecimalConverter.java
│   │   │               │   │   │   ├── DecimalToScaledFixedConverter.java
│   │   │               │   │   │   ├── DoubleToRealConverter.java
│   │   │               │   │   │   ├── IntToFixedConverter.java
│   │   │               │   │   │   ├── IntToScaledFixedConverter.java
│   │   │               │   │   │   ├── IntToTimeConverter.java
│   │   │               │   │   │   ├── IntervalDayTimeToDurationConverter.java
│   │   │               │   │   │   ├── IntervalYearMonthToPeriodConverter.java
│   │   │               │   │   │   ├── MapConverter.java
│   │   │               │   │   │   ├── SmallIntToFixedConverter.java
│   │   │               │   │   │   ├── SmallIntToScaledFixedConverter.java
│   │   │               │   │   │   ├── StructConverter.java
│   │   │               │   │   │   ├── StructObjectWrapper.java
│   │   │               │   │   │   ├── StructuredTypeDateTimeConverter.java
│   │   │               │   │   │   ├── ThreeFieldStructToTimestampTZConverter.java
│   │   │               │   │   │   ├── TinyIntToFixedConverter.java
│   │   │               │   │   │   ├── TinyIntToScaledFixedConverter.java
│   │   │               │   │   │   ├── TwoFieldStructToTimestampLTZConverter.java
│   │   │               │   │   │   ├── TwoFieldStructToTimestampNTZConverter.java
│   │   │               │   │   │   ├── TwoFieldStructToTimestampTZConverter.java
│   │   │               │   │   │   ├── VarBinaryToBinaryConverter.java
│   │   │               │   │   │   ├── VarCharConverter.java
│   │   │               │   │   │   ├── VectorTypeConverter.java
│   │   │               │   │   │   └── tostringhelpers/
│   │   │               │   │   │       ├── ArrowArrayStringRepresentationBuilder.java
│   │   │               │   │   │       ├── ArrowObjectStringRepresentationBuilder.java
│   │   │               │   │   │       └── ArrowStringRepresentationBuilderBase.java
│   │   │               │   │   ├── auth/
│   │   │               │   │   │   ├── ClientAuthnDTO.java
│   │   │               │   │   │   ├── ClientAuthnParameter.java
│   │   │               │   │   │   ├── oauth/
│   │   │               │   │   │   │   ├── AccessTokenProvider.java
│   │   │               │   │   │   │   ├── AuthorizationCodeRedirectRequestHandler.java
│   │   │               │   │   │   │   ├── DPoPUtil.java
│   │   │               │   │   │   │   ├── OAuthAccessTokenForRefreshTokenProvider.java
│   │   │               │   │   │   │   ├── OAuthAccessTokenProviderFactory.java
│   │   │               │   │   │   │   ├── OAuthAuthorizationCodeAccessTokenProvider.java
│   │   │               │   │   │   │   ├── OAuthClientCredentialsAccessTokenProvider.java
│   │   │               │   │   │   │   ├── OAuthUtil.java
│   │   │               │   │   │   │   ├── RandomStateProvider.java
│   │   │               │   │   │   │   ├── StateProvider.java
│   │   │               │   │   │   │   └── TokenResponseDTO.java
│   │   │               │   │   │   └── wif/
│   │   │               │   │   │       ├── AwsAttestationService.java
│   │   │               │   │   │       ├── AwsIdentityAttestationCreator.java
│   │   │               │   │   │       ├── AzureAttestationService.java
│   │   │               │   │   │       ├── AzureIdentityAttestationCreator.java
│   │   │               │   │   │       ├── GcpIdentityAttestationCreator.java
│   │   │               │   │   │       ├── OidcIdentityAttestationCreator.java
│   │   │               │   │   │       ├── PlatformDetectionUtil.java
│   │   │               │   │   │       ├── WorkloadIdentityAttestation.java
│   │   │               │   │   │       ├── WorkloadIdentityAttestationCreator.java
│   │   │               │   │   │       ├── WorkloadIdentityAttestationProvider.java
│   │   │               │   │   │       ├── WorkloadIdentityProviderType.java
│   │   │               │   │   │       └── WorkloadIdentityUtil.java
│   │   │               │   │   ├── bind/
│   │   │               │   │   │   ├── BindException.java
│   │   │               │   │   │   └── BindUploader.java
│   │   │               │   │   ├── crl/
│   │   │               │   │   │   ├── CRLCache.java
│   │   │               │   │   │   ├── CRLCacheConfig.java
│   │   │               │   │   │   ├── CRLCacheEntry.java
│   │   │               │   │   │   ├── CRLCacheManager.java
│   │   │               │   │   │   ├── CRLFileCache.java
│   │   │               │   │   │   ├── CRLInMemoryCache.java
│   │   │               │   │   │   ├── CRLValidationResult.java
│   │   │               │   │   │   ├── CRLValidationUtils.java
│   │   │               │   │   │   ├── CRLValidator.java
│   │   │               │   │   │   ├── CertRevocationCheckMode.java
│   │   │               │   │   │   ├── CertificateValidationResult.java
│   │   │               │   │   │   ├── CrlRevocationManager.java
│   │   │               │   │   │   ├── NoopCRLCache.java
│   │   │               │   │   │   └── VerifiedCertPathBuilder.java
│   │   │               │   │   ├── json/
│   │   │               │   │   │   ├── BooleanConverter.java
│   │   │               │   │   │   ├── BytesConverter.java
│   │   │               │   │   │   ├── Converters.java
│   │   │               │   │   │   ├── DateTimeConverter.java
│   │   │               │   │   │   ├── NumberConverter.java
│   │   │               │   │   │   └── StringConverter.java
│   │   │               │   │   ├── minicore/
│   │   │               │   │   │   ├── Minicore.java
│   │   │               │   │   │   ├── MinicoreLibrary.java
│   │   │               │   │   │   ├── MinicoreLoadError.java
│   │   │               │   │   │   ├── MinicoreLoadLogger.java
│   │   │               │   │   │   ├── MinicoreLoadResult.java
│   │   │               │   │   │   ├── MinicoreLoader.java
│   │   │               │   │   │   ├── MinicorePlatform.java
│   │   │               │   │   │   └── MinicoreTelemetry.java
│   │   │               │   │   └── structs/
│   │   │               │   │       ├── SQLDataCreationHelper.java
│   │   │               │   │       └── SnowflakeObjectTypeFactories.java
│   │   │               │   ├── driver/
│   │   │               │   │   ├── AutoConfigurationHelper.java
│   │   │               │   │   ├── ConnectionFactory.java
│   │   │               │   │   ├── DriverInitializer.java
│   │   │               │   │   ├── DriverVersion.java
│   │   │               │   │   └── DriverVersionProperties.java
│   │   │               │   ├── exception/
│   │   │               │   │   └── SnowflakeSQLLoggedException.java
│   │   │               │   ├── jdbc/
│   │   │               │   │   ├── ArrowResultChunk.java
│   │   │               │   │   ├── BindingParameterMetadata.java
│   │   │               │   │   ├── ChunkDownloadContext.java
│   │   │               │   │   ├── ColumnTypeInfo.java
│   │   │               │   │   ├── CompressedStreamFactory.java
│   │   │               │   │   ├── DBMetadataResultSetMetadata.java
│   │   │               │   │   ├── DefaultResultStreamProvider.java
│   │   │               │   │   ├── DefaultSFConnectionHandler.java
│   │   │               │   │   ├── EnvironmentVariables.java
│   │   │               │   │   ├── FileBackedOutputStream.java
│   │   │               │   │   ├── JsonResultChunk.java
│   │   │               │   │   ├── MatDesc.java
│   │   │               │   │   ├── OCSPErrorCode.java
│   │   │               │   │   ├── QueryIdValidator.java
│   │   │               │   │   ├── RestRequest.java
│   │   │               │   │   ├── ResultJsonParserV2.java
│   │   │               │   │   ├── ResultStreamProvider.java
│   │   │               │   │   ├── RetryContext.java
│   │   │               │   │   ├── RetryContextManager.java
│   │   │               │   │   ├── SFAsyncResultSet.java
│   │   │               │   │   ├── SFBaseFileTransferAgent.java
│   │   │               │   │   ├── SFConnectionHandler.java
│   │   │               │   │   ├── SnowflakeChunkDownloader.java
│   │   │               │   │   ├── SnowflakeClob.java
│   │   │               │   │   ├── SnowflakeColumn.java
│   │   │               │   │   ├── SnowflakeColumnMetadata.java
│   │   │               │   │   ├── SnowflakeConnectString.java
│   │   │               │   │   ├── SnowflakeDatabaseMetaDataQueryResultSet.java
│   │   │               │   │   ├── SnowflakeDatabaseMetaDataResultSet.java
│   │   │               │   │   ├── SnowflakeDateWithTimezone.java
│   │   │               │   │   ├── SnowflakeFileTransferAgent.java
│   │   │               │   │   ├── SnowflakeFileTransferConfig.java
│   │   │               │   │   ├── SnowflakeFileTransferMetadata.java
│   │   │               │   │   ├── SnowflakeFileTransferMetadataV1.java
│   │   │               │   │   ├── SnowflakeFixedView.java
│   │   │               │   │   ├── SnowflakeLoggedFeatureNotSupportedException.java
│   │   │               │   │   ├── SnowflakeParameterMetadata.java
│   │   │               │   │   ├── SnowflakeReauthenticationRequest.java
│   │   │               │   │   ├── SnowflakeResultChunk.java
│   │   │               │   │   ├── SnowflakeResultSetMetaDataV1.java
│   │   │               │   │   ├── SnowflakeResultSetSerializableV1.java
│   │   │               │   │   ├── SnowflakeResultSetV1.java
│   │   │               │   │   ├── SnowflakeRichResultSetSerializableV1.java
│   │   │               │   │   ├── SnowflakeSQLExceptionWithRetryContext.java
│   │   │               │   │   ├── SnowflakeSimulatedUploadFailure.java
│   │   │               │   │   ├── SnowflakeTimeWithTimezone.java
│   │   │               │   │   ├── SnowflakeTimestampWithTimezone.java
│   │   │               │   │   ├── SnowflakeUseDPoPNonceException.java
│   │   │               │   │   ├── SnowflakeUtil.java
│   │   │               │   │   ├── cloud/
│   │   │               │   │   │   └── storage/
│   │   │               │   │   │       ├── AwsSdkGCPSigner.java
│   │   │               │   │   │       ├── AzureObjectSummariesIterator.java
│   │   │               │   │   │       ├── CloudStorageProxyFactory.java
│   │   │               │   │   │       ├── CommonObjectMetadata.java
│   │   │               │   │   │       ├── EncryptionProvider.java
│   │   │               │   │   │       ├── GCSAccessStrategy.java
│   │   │               │   │   │       ├── GCSAccessStrategyAwsSdk.java
│   │   │               │   │   │       ├── GCSDefaultAccessStrategy.java
│   │   │               │   │   │       ├── GcmEncryptionProvider.java
│   │   │               │   │   │       ├── GcsObjectSummariesIterator.java
│   │   │               │   │   │       ├── ProxySettings.java
│   │   │               │   │   │       ├── QueryIdHelper.java
│   │   │               │   │   │       ├── S3ErrorHandler.java
│   │   │               │   │   │       ├── S3ObjectMetadata.java
│   │   │               │   │   │       ├── S3ObjectSummariesIterator.java
│   │   │               │   │   │       ├── SnowflakeAzureClient.java
│   │   │               │   │   │       ├── SnowflakeGCSClient.java
│   │   │               │   │   │       ├── SnowflakeS3Client.java
│   │   │               │   │   │       ├── SnowflakeStorageClient.java
│   │   │               │   │   │       ├── StageInfo.java
│   │   │               │   │   │       ├── StorageClientFactory.java
│   │   │               │   │   │       ├── StorageHelper.java
│   │   │               │   │   │       ├── StorageObjectMetadata.java
│   │   │               │   │   │       ├── StorageObjectSummary.java
│   │   │               │   │   │       ├── StorageObjectSummaryCollection.java
│   │   │               │   │   │       └── StorageProviderException.java
│   │   │               │   │   ├── diagnostic/
│   │   │               │   │   │   ├── CertificateDiagnosticCheck.java
│   │   │               │   │   │   ├── DiagnosticCheck.java
│   │   │               │   │   │   ├── DiagnosticContext.java
│   │   │               │   │   │   ├── DiagnosticTrustManager.java
│   │   │               │   │   │   ├── DnsDiagnosticCheck.java
│   │   │               │   │   │   ├── HttpAndHttpsDiagnosticCheck.java
│   │   │               │   │   │   ├── ProxyConfig.java
│   │   │               │   │   │   ├── SnowflakeEndpoint.java
│   │   │               │   │   │   └── TcpDiagnosticCheck.java
│   │   │               │   │   ├── telemetry/
│   │   │               │   │   │   ├── CSVMetricsExporter.java
│   │   │               │   │   │   ├── ExecTimeTelemetryData.java
│   │   │               │   │   │   ├── InternalApiTelemetryTracker.java
│   │   │               │   │   │   ├── NoOpTelemetryClient.java
│   │   │               │   │   │   ├── PreSessionTelemetryClient.java
│   │   │               │   │   │   ├── RevocationCheckTelemetryData.java
│   │   │               │   │   │   ├── SqlExceptionTelemetryHandler.java
│   │   │               │   │   │   ├── Telemetry.java
│   │   │               │   │   │   ├── TelemetryClient.java
│   │   │               │   │   │   ├── TelemetryData.java
│   │   │               │   │   │   ├── TelemetryField.java
│   │   │               │   │   │   └── TelemetryUtil.java
│   │   │               │   │   ├── telemetryOOB/
│   │   │               │   │   │   ├── TelemetryEvent.java
│   │   │               │   │   │   ├── TelemetryService.java
│   │   │               │   │   │   └── TelemetryThreadPool.java
│   │   │               │   │   └── util/
│   │   │               │   │       ├── DriverUtil.java
│   │   │               │   │       ├── SnowflakeTypeHelper.java
│   │   │               │   │       └── SnowflakeTypeUtil.java
│   │   │               │   ├── loader/
│   │   │               │   │   ├── BufferStage.java
│   │   │               │   │   ├── FileUploader.java
│   │   │               │   │   ├── OnError.java
│   │   │               │   │   ├── ProcessQueue.java
│   │   │               │   │   ├── PutQueue.java
│   │   │               │   │   ├── StreamLoader.java
│   │   │               │   │   └── Utils.java
│   │   │               │   ├── log/
│   │   │               │   │   ├── ArgSupplier.java
│   │   │               │   │   ├── CommonsLoggingWrapper.java
│   │   │               │   │   ├── CommonsLoggingWrapperMode.java
│   │   │               │   │   ├── JDK14JCLWrapper.java
│   │   │               │   │   ├── JDK14Logger.java
│   │   │               │   │   ├── SFFormatter.java
│   │   │               │   │   ├── SFLogLevel.java
│   │   │               │   │   ├── SFLogger.java
│   │   │               │   │   ├── SFLoggerFactory.java
│   │   │               │   │   ├── SFLoggerUtil.java
│   │   │               │   │   ├── SFToJavaLogMapper.java
│   │   │               │   │   ├── SLF4JJCLWrapper.java
│   │   │               │   │   ├── SLF4JLogger.java
│   │   │               │   │   ├── StdErrOutThresholdAwareConsoleHandler.java
│   │   │               │   │   ├── StdOutConsoleHandler.java
│   │   │               │   │   └── UnknownJavaUtilLoggingLevelException.java
│   │   │               │   └── util/
│   │   │               │       ├── Converter.java
│   │   │               │       ├── DecorrelatedJitterBackoff.java
│   │   │               │       ├── EnvironmentProvider.java
│   │   │               │       ├── LibcDetails.java
│   │   │               │       ├── LibcInfo.java
│   │   │               │       ├── MaskedException.java
│   │   │               │       ├── OsReleaseDetails.java
│   │   │               │       ├── Platform.java
│   │   │               │       ├── PlatformDetector.java
│   │   │               │       ├── SFPair.java
│   │   │               │       ├── SFTimestamp.java
│   │   │               │       ├── SecretDetector.java
│   │   │               │       ├── SnowflakeEnvironmentProvider.java
│   │   │               │       ├── Stopwatch.java
│   │   │               │       ├── ThrowingBiCallable.java
│   │   │               │       ├── ThrowingBiFunction.java
│   │   │               │       ├── ThrowingCallable.java
│   │   │               │       ├── ThrowingFunction.java
│   │   │               │       ├── ThrowingTriCallable.java
│   │   │               │       ├── ThrowingTriFunction.java
│   │   │               │       ├── TimeMeasurement.java
│   │   │               │       └── VariableTypeArray.java
│   │   │               └── jdbc/
│   │   │                   └── SnowflakeDriver.java
│   │   ├── java-fat-jar/
│   │   │   └── net/
│   │   │       └── snowflake/
│   │   │           └── client/
│   │   │               └── internal/
│   │   │                   └── log/
│   │   │                       ├── SFBridgeLogger.java
│   │   │                       ├── SFBridgeLoggerFactory.java
│   │   │                       └── SFBridgeServiceProvider.java
│   │   ├── javadoc/
│   │   │   ├── licenses.html
│   │   │   └── overview.html
│   │   ├── resources/
│   │   │   ├── META-INF/
│   │   │   │   ├── com.boomi.Dependencies
│   │   │   │   └── services/
│   │   │   │       ├── java.nio.file.spi.FileTypeDetector
│   │   │   │       └── java.sql.Driver
│   │   │   └── net/
│   │   │       └── snowflake/
│   │   │           └── client/
│   │   │               └── jdbc/
│   │   │                   ├── jdbc_error_messages.properties
│   │   │                   ├── jdbc_error_messages_fr.properties
│   │   │                   └── version.properties
│   │   └── resources-fat-jar/
│   │       └── META-INF/
│   │           └── services/
│   │               └── org.slf4j.spi.SLF4JServiceProvider
│   └── test/
│       ├── java/
│       │   ├── com/
│       │   │   └── snowflake/
│       │   │       └── client/
│       │   │           └── jdbc/
│       │   │               └── SnowflakeDriverIT.java
│       │   └── net/
│       │       └── snowflake/
│       │           └── client/
│       │               ├── .gitignore
│       │               ├── AbstractDriverIT.java
│       │               ├── AssumptionUtils.java
│       │               ├── SystemPropertyOverrider.java
│       │               ├── TestUtil.java
│       │               ├── ThrowingConsumer.java
│       │               ├── ThrowingRunnable.java
│       │               ├── annotations/
│       │               │   ├── DontRunOnGithubActions.java
│       │               │   ├── DontRunOnJava21.java
│       │               │   ├── DontRunOnJava8.java
│       │               │   ├── DontRunOnJenkins.java
│       │               │   ├── DontRunOnTestaccount.java
│       │               │   ├── DontRunOnThinJar.java
│       │               │   ├── DontRunOnWindows.java
│       │               │   ├── RunOnAWS.java
│       │               │   ├── RunOnAzure.java
│       │               │   ├── RunOnGCP.java
│       │               │   ├── RunOnGithubActionsNotMac.java
│       │               │   ├── RunOnLinux.java
│       │               │   ├── RunOnLinuxOrMac.java
│       │               │   ├── RunOnMac.java
│       │               │   ├── RunOnTestaccountNotOnGithubActions.java
│       │               │   ├── RunOnWindows.java
│       │               │   └── RunOnWindowsOrMac.java
│       │               ├── api/
│       │               │   ├── driver/
│       │               │   │   └── SnowflakeDriverTest.java
│       │               │   ├── exception/
│       │               │   │   └── SqlFeatureNotSupportedTelemetryTest.java
│       │               │   └── pooling/
│       │               │       ├── LogicalConnectionAlreadyClosedLatestIT.java
│       │               │       └── LogicalConnectionFeatureNotSupportedLatestIT.java
│       │               ├── authentication/
│       │               │   ├── AuthConnectionParameters.java
│       │               │   ├── AuthTestHelper.java
│       │               │   ├── ExternalBrowserLatestIT.java
│       │               │   ├── IdTokenLatestIT.java
│       │               │   ├── MFALatestIT.java
│       │               │   ├── OauthLatestIT.java
│       │               │   ├── OauthOktaAuthorizationCodeLatestIT.java
│       │               │   ├── OauthOktaClientCredentialsLatestIT.java
│       │               │   ├── OauthSnowflakeAuthorizationCodeLatestIT.java
│       │               │   ├── OauthSnowflakeAuthorizationCodeWildcardsLatestIT.java
│       │               │   ├── OktaAuthLatestIT.java
│       │               │   └── PATLatestIT.java
│       │               ├── category/
│       │               │   └── TestTags.java
│       │               ├── internal/
│       │               │   ├── api/
│       │               │   │   └── implementation/
│       │               │   │       ├── metadata/
│       │               │   │       │   └── SnowflakeDatabaseMetaDataImplColumnSizeTest.java
│       │               │   │       ├── pooling/
│       │               │   │       │   ├── ConnectionPoolingDataSourceIT.java
│       │               │   │       │   └── LogicalConnectionLatestIT.java
│       │               │   │       └── statement/
│       │               │   │           └── SnowflakeStatementImplCopyResultSetTest.java
│       │               │   ├── config/
│       │               │   │   ├── ConnectionAutoUrlParserTest.java
│       │               │   │   ├── SFClientConfigParserTest.java
│       │               │   │   ├── SFConnectionConfigParserPermissionTest.java
│       │               │   │   ├── SFConnectionConfigParserTest.java
│       │               │   │   └── SFPermissionsTest.java
│       │               │   ├── core/
│       │               │   │   ├── AttributeEnhancingHttpRequestRetryHandlerTest.java
│       │               │   │   ├── CertificateChainTrustValidationTestLatestIT.java
│       │               │   │   ├── CoreUtilsMiscellaneousTest.java
│       │               │   │   ├── CredentialManagerTest.java
│       │               │   │   ├── EventHandlerTest.java
│       │               │   │   ├── EventTest.java
│       │               │   │   ├── FileCacheManagerDefaultDirTest.java
│       │               │   │   ├── FileCacheManagerTest.java
│       │               │   │   ├── HeaderCustomizerHttpRequestInterceptorTest.java
│       │               │   │   ├── HeartbeatIntervalSelectorTest.java
│       │               │   │   ├── HeartbeatRegistryTest.java
│       │               │   │   ├── HeartbeatThreadTest.java
│       │               │   │   ├── HttpUtilLatestIT.java
│       │               │   │   ├── HttpUtilTest.java
│       │               │   │   ├── HttpUtilWiremockLatestIT.java
│       │               │   │   ├── MinicoreTelemetryWiremockIT.java
│       │               │   │   ├── OAuthAuthorizationCodeFlowLatestIT.java
│       │               │   │   ├── OAuthClientCredentialsFlowLatestIT.java
│       │               │   │   ├── OAuthLegacyFlowLatestIT.java
│       │               │   │   ├── OAuthTokenCacheLatestIT.java
│       │               │   │   ├── OCSPCacheServerTest.java
│       │               │   │   ├── ObjectMapperTest.java
│       │               │   │   ├── PrivateLinkDetectorTest.java
│       │               │   │   ├── ProgrammaticAccessTokenAuthFlowLatestIT.java
│       │               │   │   ├── QueryContextCacheTest.java
│       │               │   │   ├── QueryContextEntryDTOTest.java
│       │               │   │   ├── SFArrowResultSetIT.java
│       │               │   │   ├── SFCrlTrustManagerDelegationTest.java
│       │               │   │   ├── SFCrlTrustManagerFactoryTest.java
│       │               │   │   ├── SFCrlTrustManagerLatestIT.java
│       │               │   │   ├── SFExtendedCrlTrustManagerDelegationTest.java
│       │               │   │   ├── SFLoginInputTest.java
│       │               │   │   ├── SFSSLConnectionSocketFactoryTest.java
│       │               │   │   ├── SFSessionPropertyTest.java
│       │               │   │   ├── SFStatementTest.java
│       │               │   │   ├── SFTrustManagerIT.java
│       │               │   │   ├── SFTrustManagerMockitoMockLatestIT.java
│       │               │   │   ├── SFTrustManagerOcspCachePoisoningTest.java
│       │               │   │   ├── SFTrustManagerProxyWiremockIT.java
│       │               │   │   ├── SFTrustManagerTest.java
│       │               │   │   ├── SQLInputOutputTest.java
│       │               │   │   ├── SecureStorageManagerTest.java
│       │               │   │   ├── SessionUtilExternalBrowserTest.java
│       │               │   │   ├── SessionUtilKeyPairTest.java
│       │               │   │   ├── SessionUtilLatestIT.java
│       │               │   │   ├── SessionUtilTest.java
│       │               │   │   ├── SessionUtilWiremockIT.java
│       │               │   │   ├── SnowflakeMFACacheTest.java
│       │               │   │   ├── SpcsTokenReaderTest.java
│       │               │   │   ├── SqlInputTimestampUtilTest.java
│       │               │   │   ├── StmtUtilTest.java
│       │               │   │   ├── URLUtilTest.java
│       │               │   │   ├── arrow/
│       │               │   │   │   ├── ArrowResultUtilTest.java
│       │               │   │   │   ├── BaseConverterTest.java
│       │               │   │   │   ├── BigIntToFixedConverterTest.java
│       │               │   │   │   ├── BigIntToTimeConverterTest.java
│       │               │   │   │   ├── BigIntToTimestampLTZConverterTest.java
│       │               │   │   │   ├── BigIntToTimestampNTZConverterTest.java
│       │               │   │   │   ├── BitToBooleanConverterTest.java
│       │               │   │   │   ├── DateConverterTest.java
│       │               │   │   │   ├── DoubleToRealConverterTest.java
│       │               │   │   │   ├── IntToFixedConverterTest.java
│       │               │   │   │   ├── IntToTimeConverterTest.java
│       │               │   │   │   ├── SmallIntToFixedConverterTest.java
│       │               │   │   │   ├── ThreeFieldStructToTimestampTZConverterTest.java
│       │               │   │   │   ├── TinyIntToFixedConverterTest.java
│       │               │   │   │   ├── TwoFieldStructToTimestampLTZConverterTest.java
│       │               │   │   │   ├── TwoFieldStructToTimestampNTZConverterTest.java
│       │               │   │   │   ├── TwoFieldStructToTimestampTZConverterTest.java
│       │               │   │   │   ├── VarBinaryToBinaryConverterTest.java
│       │               │   │   │   └── VarCharConverterTest.java
│       │               │   │   ├── auth/
│       │               │   │   │   ├── oauth/
│       │               │   │   │   │   ├── AuthorizationCodeRedirectRequestHandlerTest.java
│       │               │   │   │   │   ├── OAuthAccessTokenProviderFactoryTest.java
│       │               │   │   │   │   ├── OAuthUtilTest.java
│       │               │   │   │   │   ├── RandomStateProviderTest.java
│       │               │   │   │   │   └── TokenResponseDTOTest.java
│       │               │   │   │   └── wif/
│       │               │   │   │       ├── AwsIdentityAttestationCreatorTest.java
│       │               │   │   │       ├── AzureIdentityAttestationCreatorLatestIT.java
│       │               │   │   │       ├── GcpIdentityAttestationCreatorLatestIT.java
│       │               │   │   │       ├── OidcIdentityAttestationCreatorTest.java
│       │               │   │   │       ├── PlatformDetectionUtilTest.java
│       │               │   │   │       └── WorkloadIdentityAttestationProviderTest.java
│       │               │   │   ├── bind/
│       │               │   │   │   └── BindExceptionTest.java
│       │               │   │   ├── crl/
│       │               │   │   │   ├── CRLCacheManagerLatestIT.java
│       │               │   │   │   ├── CRLCacheManagerTest.java
│       │               │   │   │   ├── CRLFileCacheTest.java
│       │               │   │   │   ├── CRLInMemoryCacheTest.java
│       │               │   │   │   ├── CRLValidationUtilsTest.java
│       │               │   │   │   ├── CRLValidatorTest.java
│       │               │   │   │   ├── CRLValidatorWiremockIT.java
│       │               │   │   │   ├── CertificateGeneratorUtil.java
│       │               │   │   │   └── VerifiedCertPathBuilderTest.java
│       │               │   │   ├── json/
│       │               │   │   │   ├── BooleanConverterTest.java
│       │               │   │   │   ├── BytesConverterTest.java
│       │               │   │   │   ├── DateTimeConverterTest.java
│       │               │   │   │   ├── NumberConverterTest.java
│       │               │   │   │   └── StringConverterTest.java
│       │               │   │   └── minicore/
│       │               │   │       ├── MinicoreLoaderTest.java
│       │               │   │       ├── MinicorePlatformTest.java
│       │               │   │       ├── MinicoreTelemetryTest.java
│       │               │   │       ├── MinicoreTest.java
│       │               │   │       └── MinicoreTestLatestIT.java
│       │               │   ├── driver/
│       │               │   │   └── DriverInitializerTest.java
│       │               │   ├── jdbc/
│       │               │   │   ├── ArrowResultChunkTest.java
│       │               │   │   ├── AuthenticatedProxyLatestIT.java
│       │               │   │   ├── AutoConnectionConfigurationLatestIT.java
│       │               │   │   ├── BaseJDBCTest.java
│       │               │   │   ├── BaseJDBCWithSharedConnectionIT.java
│       │               │   │   ├── BaseWiremockTest.java
│       │               │   │   ├── BatchExecutionIT.java
│       │               │   │   ├── BatchExecutionLatestIT.java
│       │               │   │   ├── BindUploaderIT.java
│       │               │   │   ├── BindUploaderLatestIT.java
│       │               │   │   ├── BindingAndInsertingStructuredTypesLatestIT.java
│       │               │   │   ├── BindingDataIT.java
│       │               │   │   ├── BindingDataLatestIT.java
│       │               │   │   ├── CallableStatementIT.java
│       │               │   │   ├── CallableStatementITBase.java
│       │               │   │   ├── CallableStatementLatestIT.java
│       │               │   │   ├── ChunkDownloaderS3RetryUrlLatestIT.java
│       │               │   │   ├── ClientMemoryLimitParallelIT.java
│       │               │   │   ├── CompressedStreamFactoryTest.java
│       │               │   │   ├── ConnectStringParseTest.java
│       │               │   │   ├── ConnectionAlreadyClosedIT.java
│       │               │   │   ├── ConnectionFeatureNotSupportedIT.java
│       │               │   │   ├── ConnectionIT.java
│       │               │   │   ├── ConnectionLatestIT.java
│       │               │   │   ├── ConnectionManual.java
│       │               │   │   ├── ConnectionPoolingIT.java
│       │               │   │   ├── ConnectionWithDisableOCSPModeLatestIT.java
│       │               │   │   ├── ConnectionWithOCSPModeIT.java
│       │               │   │   ├── CustomProxyLatestIT.java
│       │               │   │   ├── DatabaseMetaDataIT.java
│       │               │   │   ├── DatabaseMetaDataInternalIT.java
│       │               │   │   ├── DatabaseMetaDataInternalLatestIT.java
│       │               │   │   ├── DatabaseMetaDataLatestIT.java
│       │               │   │   ├── DatabaseMetaDataResultSetLatestIT.java
│       │               │   │   ├── DatabaseMetaDataResultsetIT.java
│       │               │   │   ├── DecfloatTypeLatestIT.java
│       │               │   │   ├── DefaultSFConnectionHandlerTest.java
│       │               │   │   ├── DellBoomiCloudIT.java
│       │               │   │   ├── FileConnectionConfigurationLatestIT.java
│       │               │   │   ├── FileUploaderExpandFileNamesTest.java
│       │               │   │   ├── FileUploaderLatestIT.java
│       │               │   │   ├── FileUploaderMimeTypeToCompressionTypeTest.java
│       │               │   │   ├── FileUploaderPrep.java
│       │               │   │   ├── FileUploaderSessionlessTest.java
│       │               │   │   ├── GCPLargeResult.java
│       │               │   │   ├── GitRepositoryDownloadLatestIT.java
│       │               │   │   ├── HeartbeatAsyncLatestIT.java
│       │               │   │   ├── HeartbeatIT.java
│       │               │   │   ├── HeartbeatMultiSessionIT.java
│       │               │   │   ├── IntervalDayTimeTypeLatestIT.java
│       │               │   │   ├── IntervalYearMonthTypeLatestIT.java
│       │               │   │   ├── LobSizeLatestIT.java
│       │               │   │   ├── MaxLobSizeLatestIT.java
│       │               │   │   ├── MockConnectionTest.java
│       │               │   │   ├── MultiStatementArrowIT.java
│       │               │   │   ├── MultiStatementIT.java
│       │               │   │   ├── MultiStatementLatestIT.java
│       │               │   │   ├── OpenGroupCLIFuncIT.java
│       │               │   │   ├── OpenGroupCLIFuncLatestIT.java
│       │               │   │   ├── PreparedMultiStmtIT.java
│       │               │   │   ├── PreparedStatement0IT.java
│       │               │   │   ├── PreparedStatement1IT.java
│       │               │   │   ├── PreparedStatement1LatestIT.java
│       │               │   │   ├── PreparedStatement2IT.java
│       │               │   │   ├── PreparedStatement2LatestIT.java
│       │               │   │   ├── PreparedStatementFeatureNotSupportedIT.java
│       │               │   │   ├── PreparedStatementLargeUpdateLatestIT.java
│       │               │   │   ├── PrivateKeyAuthenticationExceptionHandlingLatestIT.java
│       │               │   │   ├── ProxyLatestIT.java
│       │               │   │   ├── PutFileWithSpaceIncludedIT.java
│       │               │   │   ├── PutUnescapeBackslashIT.java
│       │               │   │   ├── QueryContextWiremockIT.java
│       │               │   │   ├── RestRequestTest.java
│       │               │   │   ├── RestRequestTestRetriesWiremockIT.java
│       │               │   │   ├── RestRequestWiremockLatestIT.java
│       │               │   │   ├── ResultJsonParserV2Test.java
│       │               │   │   ├── ResultSet0IT.java
│       │               │   │   ├── ResultSetAlreadyClosedIT.java
│       │               │   │   ├── ResultSetArrowForce0MultiTimeZone.java
│       │               │   │   ├── ResultSetArrowForceLTZMultiTimeZoneIT.java
│       │               │   │   ├── ResultSetArrowForceTZMultiTimeZoneIT.java
│       │               │   │   ├── ResultSetAsyncIT.java
│       │               │   │   ├── ResultSetAsyncLatestIT.java
│       │               │   │   ├── ResultSetFeatureNotSupportedIT.java
│       │               │   │   ├── ResultSetFormatType.java
│       │               │   │   ├── ResultSetIT.java
│       │               │   │   ├── ResultSetJsonVsArrowIT.java
│       │               │   │   ├── ResultSetJsonVsArrowMultiTZIT.java
│       │               │   │   ├── ResultSetLatestIT.java
│       │               │   │   ├── ResultSetMultiTimeZoneIT.java
│       │               │   │   ├── ResultSetMultiTimeZoneLatestIT.java
│       │               │   │   ├── ResultSetVectorLatestIT.java
│       │               │   │   ├── SSOConnectionTest.java
│       │               │   │   ├── ServiceNameTest.java
│       │               │   │   ├── SessionContextWiremockLatestIT.java
│       │               │   │   ├── SessionVariablesIT.java
│       │               │   │   ├── SnowflakeAzureClientHandleExceptionLatestIT.java
│       │               │   │   ├── SnowflakeBasicDataSourceTest.java
│       │               │   │   ├── SnowflakeChunkDownloaderLatestIT.java
│       │               │   │   ├── SnowflakeClobTest.java
│       │               │   │   ├── SnowflakeConnectionImplTest.java
│       │               │   │   ├── SnowflakeDriverConnectionStressTest.java
│       │               │   │   ├── SnowflakeDriverIT.java
│       │               │   │   ├── SnowflakeDriverLatestIT.java
│       │               │   │   ├── SnowflakeDriverTest.java
│       │               │   │   ├── SnowflakeFileTransferAgentExtractSafeDestFileNameTest.java
│       │               │   │   ├── SnowflakeFileTransferConfigTest.java
│       │               │   │   ├── SnowflakeGcsClientHandleExceptionLatestIT.java
│       │               │   │   ├── SnowflakeResultSetSerializableIT.java
│       │               │   │   ├── SnowflakeS3ClientHandleExceptionLatestIT.java
│       │               │   │   ├── SnowflakeSerializableTest.java
│       │               │   │   ├── SnowflakeTimestampWithTimezoneTest.java
│       │               │   │   ├── SnowflakeTypeTest.java
│       │               │   │   ├── SnowflakeUtilTest.java
│       │               │   │   ├── StatementAlreadyClosedIT.java
│       │               │   │   ├── StatementArrowIT.java
│       │               │   │   ├── StatementFeatureNotSupportedIT.java
│       │               │   │   ├── StatementIT.java
│       │               │   │   ├── StatementLargeUpdateIT.java
│       │               │   │   ├── StatementLatestIT.java
│       │               │   │   ├── StatementNoOpLatestIT.java
│       │               │   │   ├── StreamIT.java
│       │               │   │   ├── StreamLatestIT.java
│       │               │   │   ├── cloud/
│       │               │   │   │   └── storage/
│       │               │   │   │       ├── AwsSdkGCPSignerTest.java
│       │               │   │   │       ├── CloudStorageClientLatestIT.java
│       │               │   │   │       ├── CloudStorageProxyFactoryTest.java
│       │               │   │   │       ├── EncryptionProviderTest.java
│       │               │   │   │       ├── GcmEncryptionProviderTest.java
│       │               │   │   │       ├── SnowflakeAzureClientLatestIT.java
│       │               │   │   │       ├── SnowflakeAzureClientTest.java
│       │               │   │   │       ├── SnowflakeS3ClientLatestIT.java
│       │               │   │   │       ├── SnowflakeS3ClientTest.java
│       │               │   │   │       ├── SnowflakeStorageClientTest.java
│       │               │   │   │       ├── StageInfoGcsCustomEndpointTest.java
│       │               │   │   │       └── StorageProviderExceptionTest.java
│       │               │   │   ├── diagnostic/
│       │               │   │   │   ├── DiagnosticContextLatestIT.java
│       │               │   │   │   └── SnowflakeEndpointTest.java
│       │               │   │   ├── structuredtypes/
│       │               │   │   │   ├── ResultSetStructuredTypesLatestIT.java
│       │               │   │   │   ├── StructuredTypesArrowJsonCompatibilityLatestIT.java
│       │               │   │   │   ├── StructuredTypesGetStringBaseIT.java
│       │               │   │   │   └── sqldata/
│       │               │   │   │       ├── AllTypesClass.java
│       │               │   │   │       ├── NestedStructSqlData.java
│       │               │   │   │       ├── NullableFieldsSqlData.java
│       │               │   │   │       ├── SimpleClass.java
│       │               │   │   │       └── StringClass.java
│       │               │   │   ├── telemetry/
│       │               │   │   │   ├── CSVMetricsExporterTest.java
│       │               │   │   │   ├── ExecTimeTelemetryDataTest.java
│       │               │   │   │   ├── InternalApiMarkerUsageArchTest.java
│       │               │   │   │   ├── InternalApiTelemetryTrackerTest.java
│       │               │   │   │   ├── NoOpTelemetryClientTest.java
│       │               │   │   │   ├── PreSessionTelemetryClientTest.java
│       │               │   │   │   ├── TelemetryIT.java
│       │               │   │   │   ├── TelemetryTest.java
│       │               │   │   │   └── TelemetryUtilTest.java
│       │               │   │   └── telemetryOOB/
│       │               │   │       ├── TelemetryServiceIT.java
│       │               │   │       ├── TelemetryServiceTest.java
│       │               │   │       └── TelemetryThreadPoolTest.java
│       │               │   ├── loader/
│       │               │   │   ├── FlatfileReadMultithreadIT.java
│       │               │   │   ├── LoaderBase.java
│       │               │   │   ├── LoaderIT.java
│       │               │   │   ├── LoaderLatestIT.java
│       │               │   │   ├── LoaderMultipleBatchIT.java
│       │               │   │   ├── LoaderTimestampIT.java
│       │               │   │   ├── OnErrorTest.java
│       │               │   │   └── TestDataConfigBuilder.java
│       │               │   ├── log/
│       │               │   │   ├── AbstractLoggerIT.java
│       │               │   │   ├── CommonsLoggingWrapperModeTest.java
│       │               │   │   ├── CommonsLoggingWrapperTest.java
│       │               │   │   ├── JDK14JCLWrapperLatestIT.java
│       │               │   │   ├── JDK14LoggerConsoleHandlerOverrideLatestIT.java
│       │               │   │   ├── JDK14LoggerLatestIT.java
│       │               │   │   ├── JDK14LoggerTest.java
│       │               │   │   ├── JDK14LoggerWithClientLatestIT.java
│       │               │   │   ├── MaskedExceptionLoggerIntegrationTest.java
│       │               │   │   ├── SFFormatterTest.java
│       │               │   │   ├── SFLogLevelTest.java
│       │               │   │   ├── SFLoggerFactoryTest.java
│       │               │   │   ├── SFToJavaLogMapperTest.java
│       │               │   │   ├── SLF4JJJCLWrapperLatestIT.java
│       │               │   │   └── SLF4JLoggerLatestIT.java
│       │               │   └── util/
│       │               │       ├── DecorrelatedJitterBackoffTest.java
│       │               │       ├── LibcDetailsTest.java
│       │               │       ├── MaskedExceptionTest.java
│       │               │       ├── OsReleaseDetailsTest.java
│       │               │       ├── PlatformDetectorLatestIT.java
│       │               │       ├── SFPairTest.java
│       │               │       ├── SecretDetectorTest.java
│       │               │       └── StopwatchTest.java
│       │               ├── providers/
│       │               │   ├── BooleanProvider.java
│       │               │   ├── ProvidersUtil.java
│       │               │   ├── ResultFormatProvider.java
│       │               │   ├── ScaleProvider.java
│       │               │   ├── SimpleResultFormatProvider.java
│       │               │   ├── SnowflakeArgumentsProvider.java
│       │               │   └── TimezoneProvider.java
│       │               ├── suites/
│       │               │   ├── ArrowTestSuite.java
│       │               │   ├── AuthenticationTestSuite.java
│       │               │   ├── BaseTestSuite.java
│       │               │   ├── ConnectionOldDriverTestSuite.java
│       │               │   ├── ConnectionTestSuite.java
│       │               │   ├── CoreOldDriverTestSuite.java
│       │               │   ├── CoreTestSuite.java
│       │               │   ├── DatabaseMetaDataTestSuite.java
│       │               │   ├── DiagnosticOldDriverTestSuite.java
│       │               │   ├── DiagnosticTestSuite.java
│       │               │   ├── LoaderOldDriverTestSuite.java
│       │               │   ├── LoaderTestSuite.java
│       │               │   ├── OldDriverTestSuite.java
│       │               │   ├── OnlyTestingTestSuite.java
│       │               │   ├── OthersOldDriverTestSuite.java
│       │               │   ├── OthersTestSuite.java
│       │               │   ├── ResultSetOldDriverTestSuite.java
│       │               │   ├── ResultSetTestSuite.java
│       │               │   ├── StatementOldDriverTestSuite.java
│       │               │   ├── StatementTestSuite.java
│       │               │   ├── UnitOldDriverTestSuite.java
│       │               │   ├── UnitTestSuite.java
│       │               │   └── WIFTestSuite.java
│       │               └── wif/
│       │                   └── WIFLatestIT.java
│       └── resources/
│           ├── .gitignore
│           ├── FileUploaderPrep/
│           │   ├── exampleAzure.json
│           │   ├── exampleGCS.json
│           │   ├── exampleGCSWithEndpoint.json
│           │   ├── exampleGCSWithUseRegionalUrl.json
│           │   ├── exampleS3.json
│           │   └── exampleS3WithStageEndpoint.json
│           ├── allowlist.json
│           ├── encrypted_rsa_key.p8
│           ├── encrypted_rsa_key.pub
│           ├── invalid_private_key.pem
│           ├── logback-test.xml
│           ├── logging.properties
│           ├── net/
│           │   └── snowflake/
│           │       └── client/
│           │           ├── .gitignore
│           │           ├── internal/
│           │           │   └── jdbc/
│           │           │       ├── boomi.policy
│           │           │       └── test_copy.csv
│           │           ├── jenkins_it_logging.properties
│           │           └── travis_it_logging.properties
│           ├── orders_100.csv
│           ├── orders_101.csv
│           ├── os-release-test
│           ├── revoked_certs.pem
│           ├── rsa_key.p8
│           ├── rsa_key.pem
│           ├── rsa_key.pub
│           ├── ssl-tests/
│           │   ├── certs/
│           │   │   ├── amz_root_ca1_chain.crt
│           │   │   ├── amz_root_ca1_chain.csr
│           │   │   ├── amz_root_ca1_chain.srl
│           │   │   ├── amz_root_ca1_common.key
│           │   │   ├── amz_root_ca1_trust_store.crt
│           │   │   ├── amz_root_ca1_trust_store.csr
│           │   │   ├── amz_rsa_m02_intermediate.crt
│           │   │   ├── amz_rsa_m02_intermediate.csr
│           │   │   ├── amz_rsa_m02_intermediate.key
│           │   │   ├── amz_rsa_m02_intermediate.srl
│           │   │   ├── client_keystore.p12
│           │   │   ├── leaf.crt
│           │   │   ├── leaf.csr
│           │   │   ├── leaf.key
│           │   │   ├── st_class2_root.crt
│           │   │   ├── st_class2_root.csr
│           │   │   ├── st_class2_root.key
│           │   │   ├── st_class2_root.srl
│           │   │   ├── st_g2_root.crt
│           │   │   ├── st_g2_root.csr
│           │   │   ├── st_g2_root.key
│           │   │   ├── st_g2_root.srl
│           │   │   └── truststore.jks
│           │   └── generate_certs.sh
│           ├── test_encryption_256.csv
│           ├── test_file
│           ├── test_file.csv
│           └── wiremock/
│               ├── ca-cert.jks
│               └── mappings/
│                   ├── connection/
│                   │   └── session_context_switches.json
│                   ├── minicore/
│                   │   └── minicore_telemetry.json
│                   ├── oauth/
│                   │   ├── authorization_code/
│                   │   │   ├── browser_timeout_authorization_error.json
│                   │   │   ├── dpop_nonce_error_flow.json
│                   │   │   ├── external_idp_custom_urls.json
│                   │   │   ├── invalid_scope_error.json
│                   │   │   ├── invalid_state_error.json
│                   │   │   ├── successful_dpop_flow.json
│                   │   │   ├── successful_flow.json
│                   │   │   ├── successful_flow_with_single_use_refresh_tokens.json
│                   │   │   └── token_request_error.json
│                   │   ├── client_credentials/
│                   │   │   ├── dpop_nonce_error_flow.json
│                   │   │   ├── successful_dpop_flow.json
│                   │   │   ├── successful_flow.json
│                   │   │   └── token_request_error.json
│                   │   ├── legacy_oauth/
│                   │   │   └── token_expired.json
│                   │   └── token_caching/
│                   │       ├── caching_refreshed_access_token_and_new_refresh_token.json
│                   │       ├── caching_tokens_after_connecting.json
│                   │       ├── caching_tokens_and_dpop_key_after_connecting.json
│                   │       ├── not_caching_after_client_credentials_flow.json
│                   │       ├── refreshing_expired_access_token.json
│                   │       ├── refreshing_expired_access_token_dpop.json
│                   │       ├── refreshing_expired_access_token_dpop_nonce_error.json
│                   │       ├── restarting_full_flow_on_expiration_and_no_refresh_token.json
│                   │       ├── restarting_full_flow_on_refresh_token_error.json
│                   │       └── reusing_cached_access_token_to_authenticate.json
│                   ├── pat/
│                   │   ├── invalid_pat_token.json
│                   │   └── successful_flow.json
│                   ├── platform-detection/
│                   │   ├── aws_ec2_instance_successful.json
│                   │   ├── aws_ec2_token_successful.json
│                   │   ├── azure_managed_identity_successful.json
│                   │   ├── azure_metadata_unavailable.json
│                   │   ├── azure_vm_successful.json
│                   │   ├── ec2_successful_imdsv1.json
│                   │   ├── ec2_successful_imdsv2.json
│                   │   ├── gcp_identity_successful.json
│                   │   ├── gcp_metadata_unavailable.json
│                   │   ├── gcp_vm_slow_response.json
│                   │   ├── gcp_vm_successful.json
│                   │   ├── slow_response_timeout.json
│                   │   └── timeout_scenarios.json
│                   ├── querycontext/
│                   │   └── qcc-merge-on-failed-query.json
│                   ├── restrequest/
│                   │   ├── certificate_revoked.json
│                   │   ├── correct_response.json
│                   │   ├── http_307_retry.json
│                   │   ├── http_308_retry.json
│                   │   ├── response503.json
│                   │   ├── six_malformed_and_correct.json
│                   │   ├── sticky_header_from_first_query.json
│                   │   ├── sticky_header_from_login.json
│                   │   └── sticky_header_updated.json
│                   ├── session/
│                   │   ├── session-util-wiremock-it-always-429-in-federated-step-3.json
│                   │   ├── session-util-wiremock-it-always-429-in-federated-step-4.json
│                   │   ├── session-util-wiremock-it-libc-details-in-login-request.json
│                   │   ├── session-util-wiremock-it-multiple-429-from-okta-in-login-request-to-sf.json
│                   │   ├── session-util-wiremock-it-multiple-429-in-federated-step-3.json
│                   │   ├── session-util-wiremock-it-multiple-429-in-federated-step-4.json
│                   │   ├── session-util-wiremock-it-os-details-in-login-request.json
│                   │   ├── session-util-wiremock-it-spcs-token-in-login-request.json
│                   │   └── session-util-wiremock-it-unsupported-mfa-in-federated-step-3.json
│                   └── wif/
│                       ├── azure/
│                       │   ├── http_error.json
│                       │   ├── invalid_issuer_flow.json
│                       │   ├── missing_issuer_claim.json
│                       │   ├── missing_sub_claim.json
│                       │   ├── non_json_response.json
│                       │   ├── successful_flow_azure_functions.json
│                       │   ├── successful_flow_azure_functions_custom_entra_resource.json
│                       │   ├── successful_flow_azure_functions_no_client_id.json
│                       │   ├── successful_flow_azure_functions_v2_issuer.json
│                       │   ├── successful_flow_basic.json
│                       │   ├── successful_flow_v2_issuer.json
│                       │   └── unparsable_token.json
│                       └── gcp/
│                           ├── http_error.json
│                           ├── invalid_issuer_claim.json
│                           ├── missing_issuer_claim.json
│                           ├── missing_sub_claim.json
│                           ├── successful_flow.json
│                           ├── successful_impersonation_flow.json
│                           └── unparsable_token.json
└── thin_public_pom.xml

================================================
FILE CONTENTS
================================================

================================================
FILE: .cursor/skills/graphite-pr-workflow/SKILL.md
================================================
---
name: graphite-pr-workflow
description: Create branches, commits, and pull requests using Graphite CLI (gt) for the snowflake-jdbc repository. Use when the user asks to create a PR, submit a PR, commit changes, or push a branch. Covers Graphite commands, SNOW-ticket commit message conventions, PR description templates, and snowflake-jdbc-specific pre-commit formatting/checkstyle requirements.
---

# Graphite PR Workflow (snowflake-jdbc)

## CRITICAL: Do Not Commit or Submit Without Explicit Instruction

**NEVER run `gt commit create`, `git commit`, `gt submit`, or open a PR unless the user has explicitly asked you to.** Completing a feature is NOT permission to commit. Passing tests is NOT permission to commit. Pre-commit checks succeeding is NOT permission to commit.

When you have finished implementing a feature or change, you MAY ask the user whether they want you to proceed with creating a commit and PR. Phrase it as a question and wait for explicit confirmation before doing anything that mutates git history or the remote.

Examples of acceptable prompts after finishing work:
- "The change is implemented and tests pass. Would you like me to format, run checkstyle, and create a commit + PR?"
- "Should I proceed with `gt commit create` and `gt submit`?"

Do NOT interpret ambiguous responses ("looks good", "great", "thanks") as approval to commit. Wait for an explicit "yes, commit" / "create the PR" / "go ahead and submit".

## Required Pre-Commit Checks (snowflake-jdbc)

Before running ANY commit command (`gt commit create`, `git commit`, `gt commit amend`), you MUST run the following two Maven commands in order from the repo root and confirm they succeed:

1. **Format the code** with the Spotify fmt plugin:

   ```bash
   mvn com.spotify.fmt:fmt-maven-plugin:format
   ```

2. **Validate checkstyle** passes cleanly:

   ```bash
   mvn clean validate --batch-mode --show-version -P check-style
   ```

If either command fails, fix the reported issues (re-running the formatter for any new files, or addressing checkstyle violations manually) and re-run both commands until both succeed. Only then may you proceed with committing — and only if the user has explicitly asked you to commit (see section above).

## Commit Message Convention

Prefix with Jira ticket: `SNOW-{ticket}: {description}`

```
SNOW-3254915: Add QueryStatus enum and is_still_running/is_an_error static methods
```

Use `NO-SNOW:` for changes without a ticket.

## Creating a PR (only after explicit user approval)

```bash
# 1. Create a tracked branch
gt branch create {user}/{branch-name}

# 2. Format and validate (REQUIRED before staging/committing — see Pre-Commit Checks above)
mvn com.spotify.fmt:fmt-maven-plugin:format
mvn clean validate --batch-mode --show-version -P check-style

# 3. Stage files
git add <files>

# 4. Commit (runs pre-commit hooks)
gt commit create -m "SNOW-{ticket}: {description}"

# 5. Push and create PR (draft mode in non-interactive)
gt submit --no-edit
```

Then update title/description via `gh pr edit` or the Graphite web UI.

## PR Description Template

```markdown
## Summary
- Bullet points describing what changed and why

## Context
Brief explanation of how this fits into the larger effort (e.g., "first of two PRs for...")

## Test plan
Explain how the change was tested: what commands were run, what was
verified, and the results. Be specific to this PR.
```

## Key Commands

| Command | Purpose |
|---------|---------|
| `mvn com.spotify.fmt:fmt-maven-plugin:format` | Auto-format Java sources (REQUIRED before commit) |
| `mvn clean validate --batch-mode --show-version -P check-style` | Run checkstyle validation (REQUIRED before commit) |
| `gt branch create {user}/{branch-name}` | Create branch tracked by Graphite |
| `gt commit create -m "..."` | Commit with message |
| `gt commit amend` | Amend current commit |
| `gt submit --no-edit` | Push and create/update PR |
| `gt submit --stack` | Submit entire stack of PRs |
| `gt restack` | Rebase stack after upstream changes |

## Before Creating a PR: Required Checks

Before proceeding with branch creation or committing, you MUST:

1. **Confirm the user has explicitly requested a commit/PR.** See the top of this file. Do not commit proactively.

2. **Run the formatter and checkstyle commands** described in the Required Pre-Commit Checks section above and confirm both pass.

3. **Ask for SNOW ticket number** if the user hasn't provided one. Use AskQuestion:
   - Prompt: "What is the SNOW Jira ticket number for this change?"
   - Options: a text-free response, or "NO-SNOW (no ticket)"
   Do NOT proceed with a commit until the ticket number is confirmed.

4. **Detect stacked PR situation.** Run `git log --oneline main..HEAD` or check `git branch --show-current` and its parent. If the current branch is NOT based directly off `main` (i.e., there are intermediate branches), ask:
   - "This branch is based off `{parent_branch}`, not `main`. Should this be a stacked PR?"
   - If yes: use `gt submit --stack` to submit the full stack
   - If no: use `gt submit --no-edit` for just this branch

## Notes

- `gt submit --no-edit` creates PRs in **draft mode** when non-interactive
- Pre-commit hooks run automatically on `gt commit create`, but they are NOT a substitute for running the formatter + checkstyle commands manually beforehand


================================================
FILE: .github/CODEOWNERS
================================================
* @snowflakedb/Client
/src/main/java/net/snowflake/client/core/crl/** @snowflakedb/pki-oversight @snowflakedb/Client
/src/main/java/net/snowflake/client/core/*TrustManager* @snowflakedb/pki-oversight @snowflakedb/Client


================================================
FILE: .github/ISSUE_TEMPLATE/BUG_REPORT.md
================================================
---
name: Bug Report 🐞
about: Something isn't working as expected? Here is the right place to report.
labels: bug
---

:exclamation: If you need **urgent assistance** then [file a case with Snowflake Support](https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge).
Otherwise continue here.


Please answer these questions before submitting your issue. 
In order to accurately debug the issue this information is required. Thanks!

1. What version of JDBC driver are you using?

   
2. What operating system and processor architecture are you using?

   
3. What version of Java are you using?

   
4. What did you do?

   If possible, provide a recipe for reproducing the error.
   A complete runnable program is good.

5. What did you expect to see?

   What should have happened and what happened instead?

6. Can you set logging to DEBUG and collect the logs?

   https://community.snowflake.com/s/article/How-to-generate-log-file-on-Snowflake-connectors
   
   Before sharing any information, please be sure to review the log and remove any sensitive
   information. 


================================================
FILE: .github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
================================================
---
name: Feature Request 💡
about: Suggest a new idea for the project.
labels: feature
---

<!--
If you need urgent assistance then file the feature request using the support process:
https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge
otherwise continue here.
-->

## What is the current behavior?

## What is the desired behavior?

## How would this improve `snowflake-jdbc`?

## References, Other Background
 


================================================
FILE: .github/pull_request_template.md
================================================
# Overview

SNOW-XXXXX

## Pre-review self checklist
- [ ] PR branch is updated with all the changes from `master` branch
- [ ] The code is correctly formatted (run `mvn -P check-style validate`)
- [ ] New public API is not unnecessary exposed (run `mvn verify` and inspect `target/japicmp/japicmp.html`)
- [ ] The pull request name is prefixed with `SNOW-XXXX: `
- [ ] Code is in compliance with internal logging requirements

## External contributors - please answer these questions before submitting a pull request. Thanks!

1. What GitHub issue is this PR addressing? Make sure that there is an accompanying issue to your PR.

   Issue: #NNNN


2. Fill out the following pre-review checklist:

   - [ ] I am adding a new automated test(s) to verify correctness of my new code
   - [ ] I am adding new logging messages
   - [ ] I am modifying authorization mechanisms
   - [ ] I am adding new credentials
   - [ ] I am modifying OCSP code
   - [ ] I am adding a new dependency or upgrading an existing one
   - [ ] I am adding new public/protected component not marked with `@SnowflakeJdbcInternalApi` (note that public/protected methods/fields in classes marked with this annotation are already internal)

3. Please describe how your code solves the related issue.

   Please write a short description of how your code change solves the related issue.


================================================
FILE: .github/repo_meta.yaml
================================================

# point_of_contact: the owner of this repository, can be a GitHub user or GitHub team
point_of_contact: @snowflakedb/client 

# production: whether this repository meets the criteria for being "production", see https://snowflakecomputing.atlassian.net/wiki/spaces/CLO/pages/2239988967/Production+Repository+Criteria for criteria
production: true

# distributed: whether any source code in this repository is distributed directly to customers (e.g. driver and frontend software)
distributed: true

# modified: whether any open source dependencies in this repository have been modified 
modified: true

# release_branches: list of release branch patterns, exact matches or regex is acceptable
release_branches: 
  - master
  - release.*


# code_owners_file_present: whether there is a CODEOWNERS file in this repository
code_owners_file_present: true

# jira_project_issue_type: the jira issuetype used to raise issues related to this repository in the SNOW Jira project
jira_project_issue_type: Bug



# jira_area: the jira area that raised issues should use
jira_area: Developer Platform


================================================
FILE: .github/workflows/build-test.yml
================================================
name: Build and Test

on:
    push:
        branches:
            - master
        tags:
            - v*
    pull_request:
        branches:
            - master
            - SNOW-**
            - NO-SNOW-**
        types: [opened, synchronize, reopened, labeled, unlabeled]
    workflow_dispatch:
        inputs:
          logLevel:
            default: warning
            description: "Log level"
            required: true
          tags:
            description: "Test scenario tags"

permissions:
  contents: read

concurrency:
  # older builds for the same pull request numer or branch should be cancelled
  cancel-in-progress: true
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}

jobs:
    check-no-raw-system-calls:
        name: Check No Raw System.getProperty/getenv/setProperty
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v5
            - name: Check for raw System.getProperty/getenv/setProperty calls
              shell: bash
              run: ./ci/scripts/check_no_raw_system_calls.sh

    build:
        name: Build
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v5
            - name: Build
              shell: bash
              env:
                WHITESOURCE_API_KEY: ${{ secrets.WHITESOURCE_API_KEY }}
              run: ./ci/build.sh

    unit-test-linux:
        name: Unit Tests Linux java 8
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: '8'
                distribution: 'temurin'
                cache: maven
            - name: Unit Tests
              shell: bash
              env:
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx2g"
              run: ./mvnw -B -DjenkinsIT -Dskip.unitTests=false -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn test --batch-mode --show-version

    unit-test-windows:
        name: Unit Tests Windows java 8
        runs-on: windows-latest
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: '8'
                distribution: 'temurin'
                cache: maven
            - name: Unit Tests
              shell: cmd
              env:
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx2g"
              run: .\mvnw.cmd -B -DjenkinsIT -Dskip.unitTests=false -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn test --batch-mode --show-version

    unit-test-mac:
        name: Unit Tests Mac java 8
        runs-on: macos-latest
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: '8'
                distribution: 'zulu'
                cache: maven
            - name: Unit Tests
              shell: bash
              env:
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx2g"
              run: ./mvnw -B -DjenkinsIT -Dskip.unitTests=false -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn test --batch-mode --show-version

    test-windows:
        needs: [build, unit-test-linux, unit-test-windows, unit-test-mac]
        name: ${{ matrix.runConfig.cloud }} Windows java ${{ matrix.runConfig.javaVersion }} JDBC${{ matrix.additionalMavenProfile }} ${{ matrix.category.name }}
        runs-on: windows-latest
        strategy:
            fail-fast: false
            matrix:
                runConfig: >-
                    ${{
                        fromJSON(
                            (
                                github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'FULL-TEST-MATRIX') &&
                                '[
                                    {"cloud":"AWS","javaVersion":"8"},
                                    {"cloud":"GCP","javaVersion":"17"},
                                    {"cloud":"AZURE","javaVersion":"21"}
                                  ]'
                            ) ||
                            '[
                                {"cloud":"AWS","javaVersion":"8"},
                                {"cloud":"GCP","javaVersion":"11"},
                                {"cloud":"AZURE","javaVersion":"17"},
                                {"cloud":"AWS","javaVersion":"21"}
                              ]'
                        )
                    }}
                category: [{suites: 'ResultSetTestSuite', name: 'TestCategoryResultSet'},
                           {suites: 'StatementTestSuite,LoaderTestSuite', name: 'TestCategoryStatement,TestCategoryLoader'},
                           {suites: 'OthersTestSuite', name: 'TestCategoryOthers'},
                           {suites: 'DatabaseMetaDataTestSuite', name: 'TestCategoryDatabaseMetaData'},
                           {suites: 'ArrowTestSuite,ConnectionTestSuite,CoreTestSuite,DiagnosticTestSuite', name: 'TestCategoryArrow,TestCategoryConnection,TestCategoryCore,TestCategoryDiagnostic'},
                           {suites: 'FipsTestSuite', name: "TestCategoryFips"}]
                additionalMavenProfile: ['']
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: ${{ matrix.runConfig.javaVersion }}
                distribution: 'temurin'
                cache: maven
            - uses: actions/setup-python@v5
              with:
                python-version: '3.12'
                architecture: 'x64'
            - name: Tests
              shell: cmd
              env:
                PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
                JDBC_PRIVATE_KEY_SECRET: ${{ secrets.JDBC_PRIVATE_KEY_SECRET }}
                CLOUD_PROVIDER: ${{ matrix.runConfig.cloud }}
                JDBC_TEST_SUITES: ${{ matrix.category.suites }}
                ADDITIONAL_MAVEN_PROFILE: ${{ matrix.additionalMavenProfile }}
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx4g"
              run: ci\\test_windows.bat

    test-mac:
        needs: [build, unit-test-linux, unit-test-windows, unit-test-mac]
        name: ${{ matrix.runConfig.cloud }} Mac java ${{ matrix.runConfig.javaVersion }} JDBC${{ matrix.additionalMavenProfile }} ${{ matrix.category.name }}
        runs-on: macos-latest
        strategy:
            fail-fast: false
            matrix:
                runConfig: >-
                    ${{
                        fromJSON(
                            (
                                github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'FULL-TEST-MATRIX') &&
                                '[
                                    {"cloud":"AWS","javaVersion":"8"},
                                    {"cloud":"GCP","javaVersion":"17"},
                                    {"cloud":"AZURE","javaVersion":"21"}
                                  ]'
                            ) ||
                            '[
                                {"cloud":"AWS","javaVersion":"8"},
                                {"cloud":"AWS","javaVersion":"21"},
                                {"cloud":"GCP","javaVersion":"11"},
                                {"cloud":"AZURE","javaVersion":"17"},
                                {"cloud":"AWS","javaVersion":"21"}
                              ]'
                        )
                    }}
                category: [{suites: 'ResultSetTestSuite', name: 'TestCategoryResultSet'},
                           {suites: 'StatementTestSuite,LoaderTestSuite', name: 'TestCategoryStatement,TestCategoryLoader'},
                           {suites: 'OthersTestSuite', name: 'TestCategoryOthers'},
                           {suites: 'DatabaseMetaDataTestSuite', name: 'TestCategoryDatabaseMetaData'},
                           {suites: 'ArrowTestSuite,ConnectionTestSuite,CoreTestSuite,DiagnosticTestSuite', name: 'TestCategoryArrow,TestCategoryConnection,TestCategoryCore,TestCategoryDiagnostic'},
                           {suites: 'FipsTestSuite', name: "TestCategoryFips"}]
                additionalMavenProfile: ['']
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: ${{ matrix.runConfig.javaVersion }}
                distribution: 'zulu'
                cache: maven
            - uses: actions/setup-python@v5
              with:
                python-version: '3.12'
            - name: Install Homebrew Bash
              shell: bash
              run: brew install bash
            - name: Tests
              shell: bash
              env:
                PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
                JDBC_PRIVATE_KEY_SECRET: ${{ secrets.JDBC_PRIVATE_KEY_SECRET }}
                CLOUD_PROVIDER: ${{ matrix.runConfig.cloud }}
                JDBC_TEST_SUITES: ${{ matrix.category.suites }}
                ADDITIONAL_MAVEN_PROFILE: ${{ matrix.additionalMavenProfile }}
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx4g" # Increase surefire memory because arm64 macOS machines have not enough memory by default
              run: /opt/homebrew/bin/bash ./ci/test_mac.sh

    test-rocky:
        needs: [build, unit-test-linux, unit-test-windows, unit-test-mac]
        name: ${{ matrix.runConfig.cloud }} Rocky9 java ${{ matrix.runConfig.javaVersion }} JDBC${{ matrix.additionalMavenProfile }} ${{ matrix.category.name }}
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                runConfig: >-
                    ${{
                        fromJSON(
                            (
                                github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'FULL-TEST-MATRIX') &&
                                '[
                                    {"cloud":"AWS","javaVersion":"17","image":"jdbc-rockylinux9-openjdk17"}
                                  ]'
                            ) ||
                            '[
                                {"cloud":"AWS","javaVersion":"8","image":"jdbc-rockylinux9-openjdk8"},
                                {"cloud":"GCP","javaVersion":"11","image":"jdbc-rockylinux9-openjdk11"},
                                {"cloud":"AZURE","javaVersion":"17","image":"jdbc-rockylinux9-openjdk17"},
                                {"cloud":"AWS","javaVersion":"21","image":"jdbc-rockylinux9-openjdk21"}
                              ]'
                        )
                    }}
                category: [{suites: 'ResultSetTestSuite', name: 'TestCategoryResultSet'},
                           {suites: 'StatementTestSuite,LoaderTestSuite', name: 'TestCategoryStatement,TestCategoryLoader'},
                           {suites: 'OthersTestSuite', name: 'TestCategoryOthers'},
                           {suites: 'DatabaseMetaDataTestSuite', name: 'TestCategoryDatabaseMetaData'},
                           {suites: 'ArrowTestSuite,ConnectionTestSuite,CoreTestSuite,DiagnosticTestSuite', name: 'TestCategoryArrow,TestCategoryConnection,TestCategoryCore,TestCategoryDiagnostic'},
                           {suites: 'FipsTestSuite', name: "TestCategoryFips"}]
                additionalMavenProfile: ['']
        steps:
            - uses: actions/checkout@v5
            - name: Tests
              shell: bash
              env:
                PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
                JDBC_PRIVATE_KEY_SECRET: ${{ secrets.JDBC_PRIVATE_KEY_SECRET }}
                CLOUD_PROVIDER: ${{ matrix.runConfig.cloud }}
                TARGET_DOCKER_TEST_IMAGE: ${{ matrix.runConfig.image }}
                JDBC_TEST_SUITES: ${{ matrix.category.suites }}
                ADDITIONAL_MAVEN_PROFILE: ${{ matrix.additionalMavenProfile }}
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx4g"
              run: ./ci/test.sh

    test-linux:
        needs: [build, unit-test-linux, unit-test-windows, unit-test-mac]
        name: ${{ matrix.runConfig.cloud }} Linux java on ${{ matrix.runConfig.image }} JDBC${{ matrix.runConfig.additionalMavenProfile }} ${{ matrix.category.name }}
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                runConfig: >-
                    ${{
                        fromJSON(
                            (
                                github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'FULL-TEST-MATRIX') &&
                                '[
                                    {"image":"jdbc-rockylinux8-openjdk8","cloud":"AWS","additionalMavenProfile":""},
                                    {"image":"jdbc-rockylinux8-openjdk11","cloud":"AWS","additionalMavenProfile":""},
                                    {"image":"jdbc-rockylinux8-openjdk17","cloud":"AWS","additionalMavenProfile":""},
                                    {"image":"jdbc-rockylinux8-openjdk21","cloud":"AWS","additionalMavenProfile":""},
                                    {"image":"jdbc-rockylinux8-openjdk17","cloud":"AZURE","additionalMavenProfile":""},
                                    {"image":"jdbc-rockylinux8-openjdk17","cloud":"GCP","additionalMavenProfile":""},
                                    {"image":"jdbc-rockylinux8-openjdk8","cloud":"AWS","additionalMavenProfile":"-Dthin-jar"},
                                    {"image":"jdbc-rockylinux8-openjdk21","cloud":"AWS","additionalMavenProfile":"-Dthin-jar"}
                                  ]'
                            ) ||
                            '[
                                {"image":"jdbc-rockylinux8-openjdk8","cloud":"AWS","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk11","cloud":"AWS","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk17","cloud":"AWS","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk21","cloud":"AWS","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk8","cloud":"AZURE","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk11","cloud":"AZURE","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk17","cloud":"AZURE","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk21","cloud":"AZURE","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk8","cloud":"GCP","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk11","cloud":"GCP","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk17","cloud":"GCP","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk21","cloud":"GCP","additionalMavenProfile":""},
                                {"image":"jdbc-rockylinux8-openjdk8","cloud":"AWS","additionalMavenProfile":"-Dthin-jar"},
                                {"image":"jdbc-rockylinux8-openjdk21","cloud":"AWS","additionalMavenProfile":"-Dthin-jar"},
                                {"image":"jdbc-rockylinux8-openjdk17","cloud":"AZURE","additionalMavenProfile":"-Dthin-jar"},
                                {"image":"jdbc-rockylinux8-openjdk17","cloud":"GCP","additionalMavenProfile":"-Dthin-jar"},
                              ]'
                        )
                    }}
                category: [{suites: 'ResultSetTestSuite', name: 'TestCategoryResultSet'},
                           {suites: 'StatementTestSuite,LoaderTestSuite', name: 'TestCategoryStatement,TestCategoryLoader'},
                           {suites: 'OthersTestSuite', name: 'TestCategoryOthers'},
                           {suites: 'DatabaseMetaDataTestSuite', name: 'TestCategoryDatabaseMetaData'},
                           {suites: 'ArrowTestSuite,ConnectionTestSuite,CoreTestSuite,DiagnosticTestSuite', name: 'TestCategoryArrow,TestCategoryConnection,TestCategoryCore,TestCategoryDiagnostic'},
                           {suites: 'FipsTestSuite', name: "TestCategoryFips"}]
        steps:
            - uses: actions/checkout@v5
            - name: Tests
              shell: bash
              env:
                PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
                JDBC_PRIVATE_KEY_SECRET: ${{ secrets.JDBC_PRIVATE_KEY_SECRET }}
                CLOUD_PROVIDER: ${{ matrix.runConfig.cloud }}
                TARGET_DOCKER_TEST_IMAGE: ${{ matrix.runConfig.image }}
                JDBC_TEST_SUITES: ${{ matrix.category.suites }}
                ADDITIONAL_MAVEN_PROFILE: ${{ matrix.runConfig.additionalMavenProfile }}
                JAVA_TOOL_OPTIONS: "-Xms1g -Xmx4g"
              run: ./ci/test.sh

    test-fat-jar-slf4j:
        name: ${{ matrix.cloud }} Fat Jar SLF4J (${{ matrix.variant }}) Test App
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                cloud: [ 'AWS', 'GCP', 'AZURE' ]
                variant: [ 'default', 'fips']
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: '11'
                distribution: 'temurin'
                cache: maven
            - name: Test Fat Jar App (SLF4J)
              shell: bash
              env:
                PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
                JDBC_PRIVATE_KEY_SECRET: ${{ secrets.JDBC_PRIVATE_KEY_SECRET }}
                CLOUD_PROVIDER: ${{ matrix.cloud }}
              run: ./fat-jar-test-app/run.sh ${{ matrix.variant }} slf4j

    test-fat-jar-jul:
        name: AWS Fat Jar JUL (${{ matrix.variant }}) Test App
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                variant: ['default', 'fips']
        steps:
            - uses: actions/checkout@v5
            - uses: actions/setup-java@v5
              with:
                java-version: '11'
                distribution: 'temurin'
                cache: maven
            - name: Test Fat Jar App (JUL)
              shell: bash
              env:
                PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
                JDBC_PRIVATE_KEY_SECRET: ${{ secrets.JDBC_PRIVATE_KEY_SECRET }}
                CLOUD_PROVIDER: AWS
              run: ./fat-jar-test-app/run.sh ${{ matrix.variant }} jul


================================================
FILE: .github/workflows/changelog.yml
================================================
name: Changelog Check
permissions:
  contents: read

on:
  pull_request:
    types: [opened, synchronize, labeled, unlabeled]
    branches:
      - master

jobs:
  check_change_log:
    runs-on: ubuntu-latest
    if: ${{!contains(github.event.pull_request.labels.*.name, 'NO-CHANGELOG-UPDATES')}}
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Ensure CHANGELOG.md is updated
        run: git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep -wq "CHANGELOG.md"

================================================
FILE: .github/workflows/check-style.yml
================================================
name: Check Style

on:
    pull_request:
        branches:
            - master
jobs:
    check-style:
        name: Check Style
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - name: Check Style
              shell: bash
              run: mvn clean validate --batch-mode --show-version -P check-style


================================================
FILE: .github/workflows/cla_bot.yml
================================================
name: "CLA Assistant"
on:
  issue_comment:
    types: [created]
  pull_request_target:
    types: [opened,closed,synchronize]

jobs:
  CLAAssistant:
    runs-on: ubuntu-latest
    permissions:
      actions: write
      contents: write
      pull-requests: write
      statuses: write
    steps:
      - name: "CLA Assistant"
        if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
        uses: contributor-assistant/github-action/@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOT_TOKEN }}
        with:
          path-to-signatures: 'signatures/version1.json'
          path-to-document: 'https://github.com/snowflakedb/CLA/blob/main/README.md'
          branch: 'main'
          allowlist: 'dependabot[bot],github-actions,Jenkins User,_jenkins,sfc-gh-snyk-sca-sa,snyk-bot'
          remote-organization-name: 'snowflake-eng'
          remote-repository-name: 'cla-db'


================================================
FILE: .github/workflows/jira_close.yml
================================================
name: Jira closure

on:
  issues:
    types: [closed, deleted]

jobs:
  close-issue:
    runs-on: ubuntu-latest
    steps:
      - name: Extract issue from title
        id: extract
        env:
          TITLE: '${{ github.event.issue.title }}'
        run: |
          jira=$(echo -n $TITLE | awk '{print $1}' | sed -e 's/://')
          echo ::set-output name=jira::$jira

      - name: Close Jira Issue
        if: startsWith(steps.extract.outputs.jira, 'SNOW-')
        env:
          ISSUE_KEY: ${{ steps.extract.outputs.jira }}
          JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
          JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
          JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
        run: |
          JIRA_API_URL="${JIRA_BASE_URL}/rest/api/2/issue/${ISSUE_KEY}/transitions"

          curl -X POST \
            --url "$JIRA_API_URL" \
            --user "${JIRA_USER_EMAIL}:${JIRA_API_TOKEN}" \
            --header "Content-Type: application/json" \
            --data "{
              \"update\": {
                \"comment\": [
                  { \"add\": { \"body\": \"Closed on GitHub\" } }
                ]
              },
              \"fields\": {
                \"customfield_12860\": { \"id\": \"11506\" },
                \"customfield_10800\": { \"id\": \"-1\" },
                \"customfield_12500\": { \"id\": \"11302\" },
                \"customfield_12400\": { \"id\": \"-1\" },
                \"resolution\": { \"name\": \"Done\" }
              },
              \"transition\": { \"id\": \"71\" }
            }"


================================================
FILE: .github/workflows/jira_comment.yml
================================================
name: Jira comment

on:
  issue_comment:
    types: [created]

jobs:
  comment-issue:
    runs-on: ubuntu-latest
    steps:
      - name: Jira login
        uses: atlassian/gajira-login@master
        env:
          JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
          JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
          JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
      - name: Extract issue from title
        id: extract
        env:
          TITLE: "${{ github.event.issue.title }}"
        run: |
          jira=$(echo -n $TITLE | awk '{print $1}' | sed -e 's/://')
          echo ::set-output name=jira::$jira
      - name: Comment on issue
        uses: atlassian/gajira-comment@master
        if: startsWith(steps.extract.outputs.jira, 'SNOW-')
        with:
          issue: "${{ steps.extract.outputs.jira }}"
          comment: "${{ github.event.comment.user.login }} commented:\n\n${{ github.event.comment.body }}\n\n${{ github.event.comment.html_url }}"


================================================
FILE: .github/workflows/jira_issue.yml
================================================
name: Jira creation

on:
  issues:
    types: [opened]
  issue_comment:
    types: [created]

jobs:
  create-issue:
    runs-on: ubuntu-latest
    permissions:
      issues: write
    if: ((github.event_name == 'issue_comment' && github.event.comment.body == 'recreate jira' && github.event.comment.user.login == 'sfc-gh-mkeller') || (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]'))
    steps:
      - name: Create JIRA Ticket
        id: create
        env:
          JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
          JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
          JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
          ISSUE_TITLE: ${{ github.event.issue.title }}
          ISSUE_BODY: ${{ github.event.issue.body }}
          ISSUE_URL: ${{ github.event.issue.html_url }}
        run: |
          # debug
          #set -x
          TMP_BODY=$(mktemp)
          trap "rm -f $TMP_BODY" EXIT

          # Escape special characters in title and body
          TITLE=$(echo "${ISSUE_TITLE//`/\\`}" | sed 's/"/\\"/g' | sed "s/'/\\\'/g")
          echo "${ISSUE_BODY//`/\\`}" | sed 's/"/\\"/g' | sed "s/'/\\\'/g" > $TMP_BODY
          echo -e "\n\n_Created from GitHub Action_ for $ISSUE_URL" >> $TMP_BODY
          BODY=$(cat "$TMP_BODY")

          PAYLOAD=$(jq -n \
          --arg issuetitle "$TITLE" \
          --arg issuebody "$BODY" \
          '{
            fields: {
              project: { key: "SNOW" },
              issuetype: { name: "Bug" },
              summary: $issuetitle,
              description: $issuebody,
              customfield_11401: { id: "14723" },
              assignee: { id: "712020:e527ae71-55cc-4e02-9217-1ca4ca8028a2" },
              components: [{ id: "19281" }],
              labels: ["oss"],
              priority: { id: "10001" }
            }
          }')

          # Create JIRA issue using REST API
          RESPONSE=$(curl -s -X POST \
            -H "Content-Type: application/json" \
            -H "Accept: application/json" \
            -u "$JIRA_USER_EMAIL:$JIRA_API_TOKEN" \
            "$JIRA_BASE_URL/rest/api/2/issue" \
            -d "$PAYLOAD")

          # Extract JIRA issue key from response
          JIRA_KEY=$(echo "$RESPONSE" | jq -r '.key')

          if [ "$JIRA_KEY" = "null" ] || [ -z "$JIRA_KEY" ]; then
            echo "Failed to create JIRA issue"
            echo "Response: $RESPONSE"
            echo "Request payload: $PAYLOAD"
            exit 1
          fi

          echo "Created JIRA issue: $JIRA_KEY"
          echo "jira_key=$JIRA_KEY" >> $GITHUB_OUTPUT

      - name: Update GitHub Issue
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          REPOSITORY: ${{ github.repository }}
          ISSUE_NUMBER: ${{ github.event.issue.number }}
          JIRA_KEY: ${{ steps.create.outputs.jira_key }}
          ISSUE_TITLE: ${{ github.event.issue.title }}
        run: |
          TITLE=$(echo "${ISSUE_TITLE//`/\\`}" | sed 's/"/\\"/g' | sed "s/'/\\\'/g")
          PAYLOAD=$(jq -n \
          --arg issuetitle "$TITLE" \
          --arg jirakey "$JIRA_KEY" \
          '{
            title: ($jirakey + ": " + $issuetitle)
          }')

          # Update Github issue title with jira id
          curl -s \
            -X PATCH \
            -H "Authorization: Bearer $GITHUB_TOKEN" \
            -H "Accept: application/vnd.github+json" \
            -H "X-GitHub-Api-Version: 2022-11-28" \
            "https://api.github.com/repos/$REPOSITORY/issues/$ISSUE_NUMBER" \
            -d "$PAYLOAD"

          if [ "$?" != 0 ]; then
            echo "Failed to update GH issue. Payload was:"
            echo "$PAYLOAD"
            exit 1
          fi


================================================
FILE: .github/workflows/semgrep.yml
================================================
---
name: Run semgrep checks

on:
  pull_request:
    branches: [master]

permissions:
  contents: read

jobs:
  run-semgrep-reusable-workflow:
    uses: snowflakedb/reusable-workflows/.github/workflows/semgrep-v2.yml@main
    secrets:
      token: ${{ secrets.SEMGREP_APP_TOKEN }}



================================================
FILE: .github/workflows/snyk-issue.yml
================================================
name: Snyk Issue

on:
  schedule:
    - cron: '* */12 * * *'
  workflow_dispatch:

permissions:
  contents: read
  issues: write
  pull-requests: write

concurrency: snyk-issue

jobs:
  snyk:
    runs-on: ubuntu-latest
    steps:
    - name: checkout action
      uses: actions/checkout@v4
      with:
        repository: snowflakedb/whitesource-actions
        token: ${{ secrets.WHITESOURCE_ACTION_TOKEN }}
        path: whitesource-actions
    - name: set-env
      run: echo "REPO=$(basename $GITHUB_REPOSITORY)" >> $GITHUB_ENV
    - name: Jira Creation
      uses: ./whitesource-actions/snyk-issue
      with:
        snyk_org: ${{ secrets.SNYK_ORG_ID_PUBLIC_REPO }}
        snyk_token:  ${{ secrets.SNYK_GITHUB_INTEGRATION_TOKEN_PUBLIC_REPO }}
        jira_token: ${{ secrets.JIRA_TOKEN_PUBLIC_REPO }}
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/snyk-pr.yml
================================================
name: snyk-pr
on:
  pull_request:
    branches:
      - master

permissions:
  contents: read
  issues: write
  pull-requests: write

jobs:
  snyk:
    runs-on: ubuntu-latest
    if: ${{ github.event.pull_request.user.login == 'sfc-gh-snyk-sca-sa' }}
    steps:
    - name: checkout
      uses: actions/checkout@v4
      with:
        ref: ${{ github.event.pull_request.head.ref }}
        fetch-depth: 0

    - name: checkout action
      uses: actions/checkout@v4
      with:
        repository: snowflakedb/whitesource-actions
        token: ${{ secrets.WHITESOURCE_ACTION_TOKEN }}
        path: whitesource-actions

    - name: PR
      uses: ./whitesource-actions/snyk-pr
      env:
        PR_TITLE: ${{ github.event.pull_request.title }}
      with:
        jira_token: ${{ secrets.JIRA_TOKEN_PUBLIC_REPO }}
        gh_token: ${{ secrets.GITHUB_TOKEN }}
        amend: false # true if you want the commit to be amended with the JIRA number


================================================
FILE: .github/workflows/snyk-scan.yml
================================================
name: Snyk Scan

on:
  pull_request:
    branches:
      - master
  schedule:
    - cron: '0 6 * * 1'
  workflow_dispatch:

permissions:
  contents: read
  pull-requests: read

jobs:
  detect-changes:
    name: Detect Changed Files
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    outputs:
      any-pom: ${{ steps.changes.outputs.any-pom }}
      parent-pom: ${{ steps.changes.outputs.parent-pom }}
      public-pom: ${{ steps.changes.outputs.public-pom }}
      thin-public-pom: ${{ steps.changes.outputs.thin-public-pom }}
      fips-public-pom: ${{ steps.changes.outputs.fips-public-pom }}
    steps:
      - uses: dorny/paths-filter@v3
        id: changes
        with:
          filters: |
            any-pom:
              - '**/pom.xml'
            parent-pom:
              - 'parent-pom.xml'
            public-pom:
              - 'public_pom.xml'
            thin-public-pom:
              - 'thin_public_pom.xml'
            fips-public-pom:
              - 'FIPS/public_pom.xml'

  snyk-aggregate-test:
    name: Snyk Aggregate Project Test
    needs: detect-changes
    if: needs.detect-changes.outputs.any-pom == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Snyk aggregate project test
        uses: snyk/actions/maven@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          SNYK_CFG_ORG: ${{ secrets.SNYK_ORG_ID }}
          MAVEN_OPTS: -DskipTests -Dmaven.test.skip=true -Dmaven.main.skip=true
        with:
          args: --maven-aggregate-project --all-projects --policy-path=.snyk
          command: test

  snyk-parent-pom-test:
    name: Snyk Parent POM Test
    needs: detect-changes
    if: needs.detect-changes.outputs.parent-pom == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Snyk parent-pom test
        uses: snyk/actions/maven@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          SNYK_CFG_ORG: ${{ secrets.SNYK_ORG_ID }}
          MAVEN_OPTS: -DskipTests -Dmaven.test.skip=true -Dmaven.main.skip=true
        with:
          args: --file=parent-pom.xml --package-manager=maven
          command: test

  snyk-public-pom-test:
    name: Snyk Public POM Test
    needs: detect-changes
    if: needs.detect-changes.outputs.public-pom == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Snyk public-pom test
        uses: snyk/actions/maven@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          SNYK_CFG_ORG: ${{ secrets.SNYK_ORG_ID }}
          MAVEN_OPTS: -DskipTests -Dmaven.test.skip=true -Dmaven.main.skip=true
        with:
          args: --file=public_pom.xml --package-manager=maven
          command: test

  snyk-thin-public-pom-test:
    name: Snyk Thin Public POM Test
    needs: detect-changes
    if: needs.detect-changes.outputs.thin-public-pom == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Snyk thin-public-pom test
        uses: snyk/actions/maven@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          SNYK_CFG_ORG: ${{ secrets.SNYK_ORG_ID }}
          MAVEN_OPTS: -DskipTests -Dmaven.test.skip=true -Dmaven.main.skip=true
        with:
          args: --file=thin_public_pom.xml --package-manager=maven
          command: test

  snyk-fips-public-pom-test:
    name: Snyk FIPS Public POM Test
    needs: detect-changes
    if: needs.detect-changes.outputs.fips-public-pom == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Snyk FIPS public-pom test
        uses: snyk/actions/maven@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          SNYK_CFG_ORG: ${{ secrets.SNYK_ORG_ID }}
          MAVEN_OPTS: -DskipTests -Dmaven.test.skip=true -Dmaven.main.skip=true
        with:
          args: --file=FIPS/public_pom.xml --package-manager=maven
          command: test

  snyk-monitor:
    name: Snyk Monitor (${{ matrix.pom }})
    if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        pom:
          - pom.xml
          - parent-pom.xml
          - public_pom.xml
          - thin_public_pom.xml
          - FIPS/pom.xml
          - FIPS/public_pom.xml
          - fat-jar-test-app/pom.xml
          - ci/wif/aws-lambda/pom.xml
          - ci/wif/azure-function/pom.xml
          - ci/wif/gcp-function/pom.xml
    steps:
      - uses: actions/checkout@v4

      - name: Snyk monitor ${{ matrix.pom }}
        uses: snyk/actions/maven@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          SNYK_CFG_ORG: ${{ secrets.SNYK_ORG_ID }}
          MAVEN_OPTS: -DskipTests -Dmaven.test.skip=true -Dmaven.main.skip=true
        with:
          args: --file=${{ matrix.pom }} --package-manager=maven --policy-path=.snyk --project-name=${{ matrix.pom }} --remote-repo-url=https://github.com/snowflakedb/snowflake-jdbc
          command: monitor


================================================
FILE: .gitignore
================================================
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Exception: Keep minicore native libraries
!src/main/resources/minicore/**/*.dll
!src/main/resources/minicore/**/*.so
!src/main/resources/minicore/**/*.dylib
!src/main/resources/minicore/**/*.a

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

target/*

# IDE Specific files #
######################
.idea/*
*.iml
nb-configuration.xml
nbactions.xml

# For snowfalke internal use #
##############################
dependency-reduced-pom.xml
henplus/*
login.defaults
rt_build.sh
sfsql
sfsql.cmd
snowflake.jceks
thin/*
.svnignore
mvn_settings.xml
deploy.sh
*-maven-metadata.xml
Dockerfile.build
parameters*.json
snowflake-whitelist
Golang
ClientTelemetryFramework
lib/*
.wiremock/**

# WhiteSource Scan
wss*.config
wss-unified-agent.jar
whitesource/
*.swp

#created in some tests
placeholder

#vs code
.vscode/

# SSH private key for WIF tests
ci/wif/parameters/rsa_wif_aws_azure
ci/wif/parameters/rsa_wif_gcp
ci/wif/parameters/rsa_gcp_function

# WIF function builds
ci/wif/*/target/


================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# 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
#
#   http://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.

# NOTE: Maven 3.9 is incompatible with the linkage checker rules
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.8/apache-maven-3.8.8-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar


================================================
FILE: .pre-commit-config.yaml
================================================
repos:
- repo: git@github.com:snowflakedb/casec_precommit.git
  rev: v1.35.5
  hooks:
  - id: secret-scanner


================================================
FILE: CHANGELOG.md
================================================
#### For all official JDBC Release Notes please refer to https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc

# Changelog
- v4.2.1-SNAPSHOT
    - Fixed path traversal via server-controlled filenames in `SnowflakeFileTransferAgent` GET destination filename derivation; backslash separators are now stripped and traversal/absolute basenames are rejected (snowflakedb/snowflake-jdbc#2622).

- v4.2.0
    - Extended the `SKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION` environment variable to also bypass permission verification on the `connections.toml` config file and on the credential cache file (`credential_cache_v1.json`), unblocking driver use in SPCS environments where strict 0600/0700 ownership cannot be guaranteed (snowflakedb/snowflake-jdbc#2614)
    - Fixed NPE in `RestRequest.sendIBHttpErrorEvent` when `SFSession.getTelemetryClient()` returns null because the session URL is not yet set; a `NoOpTelemetryClient` is now returned instead, allowing the original HTTP error to be surfaced to the caller (snowflakedb/snowflake-jdbc#2610)
    - Added support for attaching the SPCS service-identifier token (`SPCS_TOKEN`) to login requests when the driver is running inside an SPCS container (gated on the `SNOWFLAKE_RUNNING_INSIDE_SPCS` environment variable; token read from `/snowflake/session/spcs_token`) (snowflakedb/snowflake-jdbc#2603)
    - Added libc family and version detection (`LIBC_FAMILY`, `LIBC_VERSION`) to the `CLIENT_ENVIRONMENT` section of the login request on Linux (snowflakedb/snowflake-jdbc#2596)
    - Fixed NPE in `SFTrustManager.validateRevocationStatusMain` when the OCSP cache contains a non-SUCCESSFUL response (e.g. `unauthorized(6)`); the response is now surfaced as an `SFOCSPException` so cache eviction and fail-open run normally (snowflakedb/snowflake-jdbc#2597)
    - Added IPv6 support for cloud metadata services so Workload Identity Federation and platform detection work on IPv6-only instances (snowflakedb/snowflake-jdbc#2586):
      - GCP WIF attestation now uses hostname `metadata.google.internal` instead of the IPv4 link-local address.
      - EC2 instance detection probes the IPv4 and IPv6 IMDS endpoints (`[fd00:ec2::254]`) in parallel so detection succeeds on IPv6-only instances without doubling the detection budget on dual-stack hosts.
    - Added `enableCopyResultSet` connection property (default `false`): when `true`, `Statement.execute()` exposes the COPY INTO per-file metadata result set via `getResultSet()` instead of consuming it internally (snowflakedb/snowflake-jdbc#2592)
    - Migrated CI test images from CentOS 7 (EOL) to Rocky Linux 8 (snowflakedb/snowflake-jdbc#2578)
    - Fixed NPE "The URI scheme of endpointOverride must not be null" happening during file transfer (e.g. PUT) in some use-cases (snowflakedb/snowflake-jdbc#2572)
    - Fixed connections.toml auto-configuration behaviour (snowflakedb/snowflake-jdbc#2591):
      - now defaulting to port 443 instead of 80 when neither port nor protocol is specified
      - config coming from the JDBC connection string are no longer ignored when auto-configuration sourced items also present (when both present, direct connection config takes precedence)
    - Fixed protocol field in connections.toml being ignored, causing connections to always use HTTPS (snowflakedb/snowflake-jdbc#2585)
    - Fixed SecurityException on credential cache file ownership check in containers where JVM returns '?' for user.name (snowflakedb/snowflake-jdbc#2600).
    - Fixed credential cache delete operations ignoring clientStoreTemporaryCredential=false setting (snowflakedb/snowflake-jdbc#2600).
    - Fixed S3 transfer thread pool leak during repeated PUT/GET operations causing possible OOM (snowflakedb/snowflake-jdbc#2602).
    - Bumped BouncyCastle to 1.84 to address CVE-2026-0636, CVE-2026-5588, and CVE-2026-5598 (snowflakedb/snowflake-jdbc#2593).
    - Added `workloadIdentityAwsExternalId` connection property to support AWS STS external ID in Workload Identity Federation role-chaining flows (snowflakedb/snowflake-jdbc#2565).
    - Bumped grpc-java to 1.81.1 now that they also upgraded to netty 4.1.132.Final as the second part of PR 2561, and also netty itself to 4.1.133.Final to address several CVE (snowflakedb/snowflake-jdbc#2611).

- v4.1.0
    - Added warning about using plain HTTP OAuth endpoints (snowflakedb/snowflake-jdbc#2556).
    - Fix initializing ObjectMapper when DATE_OUTPUT_FORMAT is specified (snowflakedb/snowflake-jdbc#2545).
    - Fix Netty native library conflict in thin JAR (snowflakedb/snowflake-jdbc#2559)
    - Bumped netty to 4.1.132.Final to address CVE-2026-33870 (High) and CVE-2026-33871 (High) (snowflakedb/snowflake-jdbc#2561)
    - Added getRole, getWarehouse and getDatabase API extension methods (snowflakedb/snowflake-jdbc#2564)
    - Fix driver failure when security manager prohibits access to system properties, environment variables and modifying security providers (snowflakedb/snowflake-jdbc#2563)
    - Removed the io.netty.tryReflectionSetAccessible system property setting as it's no longer needed with modern Arrow/Netty versions (snowflakedb/snowflake-jdbc#2563)
    - Fixed crash in getColumns operation when table contained unrecognised column type (snowflakedb/snowflake-jdbc#2568).
    - Fixed session expiration when multiple sessions have different heartbeat intervals (snowflakedb/snowflake-jdbc#2566).
    - Merge QueryContext from failed query responses (snowflakedb/snowflake-jdbc#2570)

- v4.0.2
    - Fix expired session token renewal when polling results (snowflakedb/snowflake-jdbc#2489)   
    - Fix missing minicore async initialization that was dropped during public API restructuring in v4.0.0 (snowflakedb/snowflake-jdbc#2501)
    - Adjust level of logging during Driver initialization (snowflakedb/snowflake-jdbc#2504)
    - Add sanitization for nonProxyHosts RegEx patterns (snowflakedb/snowflake-jdbc#2506)
    - Fix bug with malformed file during S3 upload (snowflakedb/snowflake-jdbc#2502)
    - Added periodic closure of sockets closed by the remote end (snowflakedb/snowflake-jdbc#2481).
    - Add internal API usage telemetry tracker (snowflakedb/snowflake-jdbc#2509)
    - Change S3 Client's multipart threshold to 16MB (snowflakedb/snowflake-jdbc#2526)
    - Fixed fat jar with S3 iteration, the problem of not finding class `software.amazon.awssdk.transfer.s3.internal.ApplyUserAgentInterceptor` (snowflakedb/snowflake-jdbc#2519).
    - Removed Conscrypt from shading to prevent `failed to find class org/conscrypt/CryptoUpcalls` native error (snowflakedb/snowflake-jdbc#2519).
    - Add logging implementation to CLIENT_ENVIRONMENT telemetry (snowflakedb/snowflake-jdbc#2527)
    - Fix NPE when HOME directory cache is not available (snowflakedb/snowflake-jdbc#2534)
    - Bumped `commons-compress` dependency to latest (1.28.0) to address CVE-2024-25710 and CVE-2024-26308 (snowflakedb/snowflake-jdbc#2538)
    - Add SLF4J bridge from shaded dependencies to `SFLogger` (snowflakedb/snowflake-jdbc#2543)
    - Fixed proxy authentication when connecting to GCP (snowflakedb/snowflake-jdbc#2540)
    - Fixed bug where called-provided schema was ignored in getStreams() (snowflakedb/snowflake-jdbc#2546)
    - Fixed S3 error handling manifested with `NullPointerException` (snowflakedb/snowflake-jdbc#2550)

- v4.0.1
    - Add /etc/os-release data to Minicore telemetry (snowflakedb/snowflake-jdbc#2470)
    - Fix incorrect encryption algorithm chosen when a file was put to S3 with client_encryption_key_size account parameter set to 256 (snowflakedb/snowflake-jdbc#2472) 
    - Fixed fat jar with S3 iteration, the problem of not finding class `software.amazon.awssdk.transfer.s3.internal.ApplyUserAgentInterceptor` (snowflakedb/snowflake-jdbc#2474).
    - Removed Conscrypt from shading to prevent `failed to find class org/conscrypt/CryptoUpcalls` native error (snowflakedb/snowflake-jdbc#2474).
    - Update BouncyCastle dependencies to fix CVE-2025-8916 CVE-2025-8885 (snowflakedb/snowflake-jdbc#2479)
    - Fix external browser authentication after changing enum name. Manifested with `Invalid connection URL: Invalid SSOUrl found` error (snowflakedb/snowflake-jdbc#2475).
    - Rolled back external browser authenticator name to `externalbrowser` (snowflakedb/snowflake-jdbc#2475).

__Due to some underlying issues, Snowflake recommends that AWS and Azure customers do not upgrade to this version if you use PUT or GET queries. Instead, Snowflake recommends that you upgrade directly to version 4.0.1. If you have already upgraded to this version, please upgrade to version 4.0.1 as soon as possible.__
- v4.0.0
    - Bumped netty to 4.1.130.Final to address CVE-2025-67735 (snowflakedb/snowflake-jdbc#2447)
    - Fix OCSP HTTP client cache to honor per-connection proxy settings (snowflakedb/snowflake-jdbc#2449)
    - Mask secrets in exception logging (snowflakedb/snowflake-jdbc#2457)
    - Fix NPE when sending in-band telemetry without HTTP response (snowflakedb/snowflake-jdbc#2460)
    - Migrate from AWS SDK v1 to AWS SDK v2 (snowflakedb/snowflake-jdbc#2385 snowflakedb/snowflake-jdbc#2393)
    - Return column_size value in database metadata commands as in JDBC spec (snowflakedb/snowflake-jdbc#2418)
    - Migrate Azure storage from v5 to v12 (snowflakedb/snowflake-jdbc#2417)
    - Enable bundled BouncyCastle for private key decryption by default (snowflakedb/snowflake-jdbc#2452)
    - Rename BouncyCastle JVM property from net.snowflake.jdbc.enableBouncyCastle to net.snowflake.jdbc.useBundledBouncyCastleForPrivateKeyDecryption (snowflakedb/snowflake-jdbc#2452).
    - Major public API restructuring: move all public APIs to net.snowflake.client.api.* package hierarchy (snowflakedb/snowflake-jdbc#2403):
      - Add new unified QueryStatus class in public API that replaces the deprecated QueryStatus enum and QueryStatusV2 class.
      - Add new public API interfaces for stream upload/download configuration (DownloadStreamConfig, UploadStreamConfig).
      - Add SnowflakeDatabaseMetaData interface to public API for database metadata operations.
      - Add SnowflakeAsyncResultSet interface to public API for async query operations.
      - Add SnowflakeResultSetSerializable interface to public API.
      - Deprecate net.snowflake.client.jdbc.SnowflakeDriver in favor of new net.snowflake.client.api.driver.SnowflakeDriver.
      - Move internal classes to net.snowflake.client.internal.* package hierarchy.
      - Removed deprecated com.snowflake.client.jdbc.SnowflakeDriver class.
      - Removed deprecated QueryStatus enum from net.snowflake.client.core package.
      - Removed deprecated QueryStatusV2 class from net.snowflake.client.jdbc package.
      - Removed deprecated SnowflakeType enum from net.snowflake.client.jdbc package.

- v3.28.0
    - Ability to choose connection configuration in auto configuration file by a parameter in JDBC url. (snowflakedb/snowflake-jdbc#2369)
    - Bumped grpc-java to 1.77.0 to address CVE-2025-58057 from transient dep (snowflakedb/snowflake-jdbc#2415)
    - Fix Connection and socket timeout are now propagated to HTTP client (snowflakedb/snowflake-jdbc#2394).
    - Fix Azure 503 retries and configure it with the putGetMaxRetries parameter (snowflakedb/snowflake-jdbc#2422).
    - Improved retries for SSLHandshakeException errors caused by transient EOFException (snowflakedb/snowflake-jdbc#2423)
    - Introduced shared library([source code](https://github.com/snowflakedb/universal-driver/tree/main/sf_mini_core)) for extended telemetry to identify and prepare testing platform for native rust extensions (snowflakedb/snowflake-jdbc#2430)
    - Bumped netty to 4.1.128.Final to address CVE-2025-59419 (snowflakedb/snowflake-jdbc#2389)

- v3.27.1
    - Added platform detection on login to set PLATFORM metric in CLIENT_ENVIRONMENT (snowflakedb/snowflake-jdbc#2351)
    - Disable DatabaseMetaDataLatestIT::testUseConnectionCtx test (snowflakedb/snowflake-jdbc#2367)
    - Fix IT tests to construct OAuth scopes correctly (snowflakedb/snowflake-jdbc#2366)
    - Fix exponential backoff retry time for non-auth requests (snowflakedb/snowflake-jdbc#2370)
    - Upgrade aws-sdk to 1.12.792 and add STS dependency (snowflakedb/snowflake-jdbc#2361)
    - Add rockylinux9 CI tests as part of RHEL 9 support (snowflakedb/snowflake-jdbc#2368)
    - Bumped grpc-java to 1.76.0 to address CVE-2025-58056 from transient dep (snowflakedb/snowflake-jdbc#2371)
    - Added `workloadIdentityImpersonationPath` config option for `authenticator=WORKLOAD_IDENTITY` allowing workloads to authenticate as a different identity through transitive service account impersonation (snowflakedb/snowflake-jdbc#2348)
    - Added support for authentication as a different identity through transitive IAM role impersonation for AWS (snowflakedb/snowflake-jdbc#2364)
    - Add AWS identity detection with ARN validation (snowflakedb/snowflake-jdbc#2379)
  
- v3.27.0
    - Added the `changelog.yml` GitHub workflow to ensure changelog is updated on release PRs (snowflakedb/snowflake-jdbc#2340).
    - Added HTTP 307 & 308 retries in case of internal IP redirects (snowflakedb/snowflake-jdbc#2344)
    - Make PAT creation return `ResultSet` when using `execute` method (snowflakedb/snowflake-jdbc#2343)
    - Renamed CRL_REVOCATION_CHECK_MODE to CERT_REVOCATION_CHECK_MODE in CLIENT_ENVIRONMENT metrics (snowflakedb/snowflake-jdbc#2349)
    - Test coverage for multistatement jdbc (snowflakedb/snowflake-jdbc#2318).
    - Fixed permission check for .toml config file (snowflakedb/snowflake-jdbc#2270).
    - Bumped netty to 4.1.127.Final to address CVE-2025-58056 and  CVE-2025-58057 (snowflakedb/snowflake-jdbc#2354)
    - Add support for x-snowflake-session sticky HTTP session header returned by Snowflake (snowflakedb/snowflake-jdbc#2357)
    - Added support for Interval Year-Month and Day-Time types in JDBC (snowflakedb/snowflake-jdbc#2345).
    - Added support for Decfloat types in JDBC (snowflakedb/snowflake-jdbc#2329, snowflakedb/snowflake-jdbc#2332).
    - Fixed pattern search for file when QUOTED_IDENTIFIERS_IGNORE_CASE enabled (snowflakedb/snowflake-jdbc#2333)
    - Added support for CRL (certificate revocation list) (snowflakedb/snowflake-jdbc#2287).


================================================
FILE: FIPS/.gitignore
================================================
.idea/
lib/
target/
dependency-reduced-pom.xml
generated_public_pom.xml


================================================
FILE: FIPS/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>net.snowflake</groupId>
    <artifactId>snowflake-jdbc-parent</artifactId>
    <version>4.2.1-SNAPSHOT</version>
    <relativePath>../parent-pom.xml</relativePath>
  </parent>

  <artifactId>snowflake-jdbc-fips</artifactId>
  <version>4.2.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>snowflake-jdbc-fips</name>
  <url>http://maven.apache.org</url>

  <prerequisites>
    <maven>3.3.9</maven>
  </prerequisites>

  <!-- dummy scm connection required to get the buildnumber plugin working -->
  <scm>
    <connection>scm:svn:http://127.0.0.1/svn/dummy</connection>
    <developerConnection>scm:svn:https://127.0.0.1/svn/dummy</developerConnection>
    <tag>HEAD</tag>
    <url>http://127.0.0.1/websvn/dummy</url>
  </scm>

  <dependencies>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bc-fips</artifactId>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-fips</artifactId>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>${basedir}/../src/main/java</sourceDirectory>
    <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
    <resources>
      <resource>
        <directory>${basedir}/../src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
          <exclude>**/*.dylib</exclude>
          <exclude>**/*.so</exclude>
          <exclude>**/*.dll</exclude>
          <exclude>**/*.a</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>${basedir}/../src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
          <include>**/*.dylib</include>
          <include>**/*.so</include>
          <include>**/*.dll</include>
          <include>**/*.a</include>
        </includes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>${basedir}/../src/test/resources</directory>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>${version.plugin.install}</version>
        <executions>
          <execution>
            <id>install-tika-core</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/tika-core-${tika.version}.jar</file>
              <groupId>org.apache.tika</groupId>
              <artifactId>tika-core</artifactId>
              <version>${tika.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-pom</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/arrow-memory-${arrow.version}.pom</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory</artifactId>
              <version>${arrow.version}</version>
              <packaging>pom</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-core</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/arrow-memory-core-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory-core</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-unsafe</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/arrow-memory-unsafe-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory-unsafe</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-netty-buffer-patch</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/arrow-memory-netty-buffer-patch-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory-netty-buffer-patch</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-format</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/arrow-format-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-format</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-vector</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${basedir}/../dependencies/arrow-vector-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-vector</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>${version.plugin.clean}</version>
        <configuration>
          <excludeDefaultDirectories/>
          <filesets>
            <fileset>
              <directory>lib</directory>
              <includes>
                <include>*.jar</include>
              </includes>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${version.plugin.compiler}</version>
        <configuration>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
          <executable>javac</executable>
          <fork>true</fork>
          <source>8</source>
          <target>8</target>
          <compilerArgs>
            <arg>-Xlint:all,-path</arg>
          </compilerArgs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${version.plugin.surefire}</version>
        <configuration>
          <excludes>
            <exclude>**/*SFTrustManagerTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${version.plugin.jacoco}</version>
        <executions>
          <execution>
            <id>pre-unit-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <destFile>target/jacoco-ut.exec</destFile>
            </configuration>
          </execution>
          <execution>
            <id>post-unit-test</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
            <configuration>
              <dataFile>target/jacoco-ut.exec</dataFile>
              <outputDirectory>target/jacoco-ut</outputDirectory>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <skip>${jacoco.skip.instrument}</skip>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>${version.plugin.jar}</version>
        <configuration>
          <archive>
            <manifest>
              <mainClass>net.snowflake.client.api.driver.SnowflakeDriver</mainClass>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${version.plugin.dependency}</version>
        <executions>
          <execution>
            <id>install-jar</id>
            <phase>install</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>${project.artifactId}</artifactId>
                  <version>${project.version}</version>
                </artifactItem>
              </artifactItems>
              <outputDirectory>lib</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${version.plugin.source}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${version.plugin.javadoc}</version>
        <configuration>
          <source>8</source>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>${version.plugin.projectinforeports}</version>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>self-contained-jar</id>
      <activation>
        <property>
          <name>!not-self-contained-jar</name>
        </property>
      </activation>
      <build>
        <resources>
          <resource>
            <directory>${basedir}/../src/main/resources-fat-jar</directory>
          </resource>
        </resources>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-fat-jar-sources</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${basedir}/../src/main/java-fat-jar</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>${version.plugin.buildnumber}</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>create-timestamp</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <timestampFormat>yyyyMMddHHmmss</timestampFormat>
              <timestampPropertyName>buildNumber.timestamp</timestampPropertyName>
              <doCheck>false</doCheck>
              <revisionOnScmFailure/>
              <doUpdate>false</doUpdate>
              <!--- Note for those who come later.  If you specify "buildNumber" in the items field, it becomes an incrementing buildNumber
                 AFAIK (and I spent a lot of time on this) it is impossible to get the SCM rev number and incrementing build number at the same time -->
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>${version.plugin.shade}</version>
            <configuration>
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <relocations>
                    <relocation>
                      <pattern>net.snowflake.common</pattern>
                      <shadedPattern>${shadeBase}.snowflake.common</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.apache</pattern>
                      <shadedPattern>${shadeBase}.apache</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.slf4j</pattern>
                      <shadedPattern>${shadeBase}.org.slf4j</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>software.amazon.awssdk</pattern>
                      <shadedPattern>${shadeBase}.software.amazon.awssdk</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>software.amazon.encryption.s3</pattern>
                      <shadedPattern>${shadeBase}.software.amazon.encryption.s3</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>software.amazon.eventstream</pattern>
                      <shadedPattern>${shadeBase}.software.amazon.eventstream</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>software.amazon.ion</pattern>
                      <shadedPattern>${shadeBase}.software.amazon.ion</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.reactivestreams</pattern>
                      <shadedPattern>${shadeBase}.reactivestreams</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.jvnet.staxex</pattern>
                      <shadedPattern>${shadeBase}.jvnet.staxex</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>jakarta.xml.soap</pattern>
                      <shadedPattern>${shadeBase}.jakarta.xml.soap</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>jakarta.activation</pattern>
                      <shadedPattern>${shadeBase}.jakarta.activation</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>com.azure</pattern>
                      <shadedPattern>${shadeBase}.azure</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>com.fasterxml</pattern>
                      <shadedPattern>${shadeBase}.fasterxml</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>com.google</pattern>
                      <shadedPattern>${shadeBase}.google</shadedPattern>
                    </relocation>
                    <!-- google packages should be relocated explicitly to avoid problems with properties files renaming -->
                    <relocation>
                      <pattern>google.api</pattern>
                      <shadedPattern>${shadeBase}.google.api</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.apps</pattern>
                      <shadedPattern>${shadeBase}.google.apps</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.cloud</pattern>
                      <shadedPattern>${shadeBase}.google.cloud</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.geo</pattern>
                      <shadedPattern>${shadeBase}.google.geo</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.iam</pattern>
                      <shadedPattern>${shadeBase}.google.iam</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.logging</pattern>
                      <shadedPattern>${shadeBase}.google.logging</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.longrunning</pattern>
                      <shadedPattern>${shadeBase}.google.longrunning</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.monitoring</pattern>
                      <shadedPattern>${shadeBase}.google.monitoring</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.protobuf</pattern>
                      <shadedPattern>${shadeBase}.google.protobuf</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.rpc</pattern>
                      <shadedPattern>${shadeBase}.google.rpc</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.shopping</pattern>
                      <shadedPattern>${shadeBase}.google.shopping</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.storage</pattern>
                      <shadedPattern>${shadeBase}.google.storage</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>google.type</pattern>
                      <shadedPattern>${shadeBase}.google.type</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.joda</pattern>
                      <shadedPattern>${shadeBase}.joda</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>javax.servlet</pattern>
                      <shadedPattern>${shadeBase}.javax.servlet</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.jsoup</pattern>
                      <shadedPattern>${shadeBase}.org.jsoup</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>com.nimbusds</pattern>
                      <shadedPattern>${shadeBase}.com.nimbusds</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>javax.annotation</pattern>
                      <shadedPattern>${shadeBase}.javax.annotation</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>net.jcip</pattern>
                      <shadedPattern>${shadeBase}.net.jcip</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>net.minidev</pattern>
                      <shadedPattern>${shadeBase}.net.minidev</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.objectweb</pattern>
                      <shadedPattern>${shadeBase}.org.objectweb</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>io.netty</pattern>
                      <shadedPattern>${shadeBase}.io.netty</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>com.carrotsearch</pattern>
                      <shadedPattern>${shadeBase}.com.carrotsearch</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>io.opencensus</pattern>
                      <shadedPattern>${shadeBase}.opencensus</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>io.opentelemetry</pattern>
                      <shadedPattern>${shadeBase}.opentelemetry</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.threeten</pattern>
                      <shadedPattern>${shadeBase}.threeten</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>io.grpc</pattern>
                      <shadedPattern>${shadeBase}.grpc</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>META-INF.native.io_grpc_netty_shaded_netty_tcnative</pattern>
                      <shadedPattern>META-INF.native.${shadeNativeBase}_grpc_netty_shaded_netty_tcnative</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>META-INF.native.libio_grpc_netty_shaded_netty_tcnative</pattern>
                      <shadedPattern>META-INF.native.lib${shadeNativeBase}_grpc_netty_shaded_netty_tcnative</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>META-INF.native.io_grpc_netty_shaded_netty_transport_native_epoll</pattern>
                      <shadedPattern>META-INF.native.${shadeNativeBase}_grpc_netty_shaded_netty_transport_native_epoll</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>META-INF.native.libio_grpc_netty_shaded_netty_transport_native_epoll</pattern>
                      <shadedPattern>META-INF.native.lib${shadeNativeBase}_grpc_netty_shaded_netty_transport_native_epoll</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.checkerframework</pattern>
                      <shadedPattern>${shadeBase}.org.checkerframework</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.codehaus</pattern>
                      <shadedPattern>${shadeBase}.org.codehaus</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>io.perfmark</pattern>
                      <shadedPattern>${shadeBase}.io.perfmark</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>opencensus</pattern>
                      <shadedPattern>${shadeBase}.opencensus</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>grpc</pattern>
                      <shadedPattern>${shadeBase}.grpc</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>android.annotation</pattern>
                      <shadedPattern>${shadeBase}.android.annotation</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>reactor</pattern>
                      <shadedPattern>${shadeBase}.reactor</shadedPattern>
                    </relocation>
                    <relocation>
                      <pattern>org.reactivestreams</pattern>
                      <shadedPattern>${shadeBase}.org.reactivestreams</shadedPattern>
                    </relocation>
                  </relocations>
                  <filters>
                    <filter>
                      <artifact>*:*</artifact>
                      <excludes>
                        <exclude>META-INF/LICENSE*</exclude>
                        <exclude>META-INF/NOTICE*</exclude>
                        <exclude>META-INF/DEPENDENCIES</exclude>
                        <exclude>META-INF/maven/**</exclude>
                        <exclude>META-INF/services/com.fasterxml.*</exclude>
                        <exclude>META-INF/versions/9/module-info.*</exclude>
                        <exclude>META-INF/versions/11/module-info.*</exclude>
                        <exclude>META-INF/*.xml</exclude>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                        <exclude>.netbeans_automatic_build</exclude>
                        <exclude>git.properties</exclude>
                        <exclude>arrow-git.properties</exclude>
                        <exclude>google-http-client.properties</exclude>
                        <exclude>pipes-fork-server-default-log4j2.xml</exclude>
                        <exclude>dependencies.properties</exclude>
                        <exclude>azure-*.properties</exclude>
                        <exclude>VersionInfo.java</exclude>
                        <exclude>project.properties</exclude>
                      </excludes>
                    </filter>
                    <filter>
                      <artifact>org.apache.arrow:arrow-vector</artifact>
                      <excludes>
                        <!-- codegen directory is used to generate java code for arrow vector package. Excludes them since we only need class file -->
                        <exclude>codegen/**</exclude>
                      </excludes>
                    </filter>
                    <filter>
                      <artifact>com.google.guava:guava</artifact>
                      <includes>
                        <include>com/google/common/io/**</include>
                        <include>com/google/common/base/**</include>
                        <include>com/google/common/hash/**</include>
                        <include>com/google/common/collect/**</include>
                        <include>com/google/common/graph/**</include>
                        <include>com/google/common/math/**</include>
                        <include>com/google/common/util/concurrent/**</include>
                      </includes>
                    </filter>
                    <filter>
                      <artifact>commons-logging:commons-logging</artifact>
                      <excludes>
                        <exclude>org/apache/commons/logging/impl/AvalonLogger.class</exclude>
                      </excludes>
                    </filter>
                  </filters>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"/>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                      <resource>META-INF/io.netty.versions.properties</resource>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <!-- relocate the META-INF/versions files manually due to the maven bug -->
            <!-- https://issues.apache.org/jira/browse/MSHADE-406 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>${version.plugin.antrun}</version>
            <executions>
              <execution>
                <id>repack</id>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <target>
                    <unzip dest="${project.build.directory}/relocate" src="${project.build.directory}/${project.build.finalName}.jar"/>
                    <mkdir dir="${project.build.directory}/relocate/META-INF/versions/9/${relocationBase}"/>
                    <mkdir dir="${project.build.directory}/relocate/META-INF/versions/11/${relocationBase}"/>
                    <mkdir dir="${project.build.directory}/relocate/META-INF/versions/17/${relocationBase}"/>
                    <mkdir dir="${project.build.directory}/relocate/META-INF/versions/21/${relocationBase}"/>
                    <mkdir dir="${project.build.directory}/relocate/META-INF/versions/22/${relocationBase}"/>
                    <!-- com.fasterxml.* packages are relocated to ${relocationBase}.fasterxml.* -->
                    <move file="${project.build.directory}/relocate/META-INF/versions/11/com/fasterxml" todir="${project.build.directory}/relocate/META-INF/versions/11/${relocationBase}"/>
                    <move file="${project.build.directory}/relocate/META-INF/versions/17/com/fasterxml" todir="${project.build.directory}/relocate/META-INF/versions/17/${relocationBase}"/>
                    <move file="${project.build.directory}/relocate/META-INF/versions/21/com/fasterxml" todir="${project.build.directory}/relocate/META-INF/versions/21/${relocationBase}"/>
                    <!-- io.opentelemetry.* packages are relocated to ${relocationBase}.io.opentelemetry.* -->
                    <move file="${project.build.directory}/relocate/META-INF/versions/9/io" todir="${project.build.directory}/relocate/META-INF/versions/9/${relocationBase}"/>
                    <!-- reactor.* packages are relocated to ${relocationBase}.reactor.* -->
                    <move file="${project.build.directory}/relocate/META-INF/versions/11/reactor/core" todir="${project.build.directory}/relocate/META-INF/versions/11/${relocationBase}"/>
                    <move file="${project.build.directory}/relocate/META-INF/versions/17/reactor/netty" todir="${project.build.directory}/relocate/META-INF/versions/17/${relocationBase}"/>
                    <move file="${project.build.directory}/relocate/META-INF/versions/21/reactor/core" todir="${project.build.directory}/relocate/META-INF/versions/21/${relocationBase}"/>
                    <!-- contains class name from before shading, loaded with Class.forName -->
                    <replace file="${project.build.directory}/relocate/net/snowflake/client/jdbc/internal/software/amazon/awssdk/services/s3/execution.interceptors"
                             token="software.amazon.awssdk"
                             value="net.snowflake.client.jdbc.internal.software.amazon.awssdk"/>
                    <!-- Overwrite shaded SLF4JLogger with unshaded version.
                         The shade plugin rewrites org.slf4j references to the shaded namespace,
                         but SLF4JLogger must reference the user's real org.slf4j for SLF4J opt-in.
                         SLF4JJCLWrapper is left shaded since it also implements the shaded
                         org.apache.commons.logging.Log interface. -->
                    <copy file="${project.build.outputDirectory}/net/snowflake/client/internal/log/SLF4JLogger.class"
                          todir="${project.build.directory}/relocate/net/snowflake/client/internal/log"
                          overwrite="true"/>
                    <zip basedir="${project.build.directory}/relocate" destfile="${project.build.directory}/${project.build.finalName}.jar"/>
                    <delete dir="${project.build.directory}/relocate/META-INF/versions/9/${relocationBase}"/>
                    <delete dir="${project.build.directory}/relocate/META-INF/versions/11/${relocationBase}"/>
                    <delete dir="${project.build.directory}/relocate/META-INF/versions/17/${relocationBase}"/>
                    <delete dir="${project.build.directory}/relocate/META-INF/versions/21/${relocationBase}"/>
                    <delete dir="${project.build.directory}/relocate/META-INF/versions/22/${relocationBase}"/>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Run mvn -P check-style verify -->
    <profile>
      <id>check-style</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.coveo</groupId>
            <artifactId>fmt-maven-plugin</artifactId>
            <version>${version.plugin.fmt}</version>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>check-content</id>
      <activation>
        <os>
          <family>!windows</family>
        </os>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>${version.plugin.exec}</version>
            <executions>
              <execution>
                <id>check-shaded-content</id>
                <phase>verify</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>${basedir}/scripts/check_content.sh</executable>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>java-9</id>
      <activation>
        <jdk>(9,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit-platform</artifactId>
                <version>${version.plugin.surefire}</version>
              </dependency>
            </dependencies>
            <version>${version.plugin.failsafe}</version>
            <configuration>
              <argLine>
                --add-opens=java.base/java.io=ALL-UNNAMED
                --add-opens=java.base/java.nio=ALL-UNNAMED
                --add-opens=java.base/java.lang=ALL-UNNAMED
                --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
                --add-opens=java.base/java.util=ALL-UNNAMED
                --add-exports=java.base/sun.nio.ch=ALL-UNNAMED
                --add-exports=java.base/sun.security.internal.spec=ALL-UNNAMED
                --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
              </argLine>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <argLine>
                --add-opens=java.base/java.io=ALL-UNNAMED
                --add-opens=java.base/java.nio=ALL-UNNAMED
                --add-opens=java.base/java.lang=ALL-UNNAMED
                --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
                --add-opens=java.base/java.util=ALL-UNNAMED
                --add-exports=java.base/sun.nio.ch=ALL-UNNAMED
                --add-exports=java.base/sun.security.internal.spec=ALL-UNNAMED
                --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
              </argLine>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>jenkinsIT</id>
      <activation>
        <property>
          <name>jenkinsIT</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit-platform</artifactId>
                <version>${version.plugin.surefire}</version>
              </dependency>
            </dependencies>
            <version>${version.plugin.failsafe}</version>
            <executions>
              <execution>
                <id>DefaultIT</id>
                <goals>
                  <goal>integration-test</goal>
                </goals>
                <configuration>
                  <includes>
                    <include>**/ConnectionFipsIT.java</include>
                  </includes>
                  <systemPropertyVariables>
                    <net.snowflake.jdbc.loggerImpl>
                      net.snowflake.client.internal.log.JDK14Logger
                    </net.snowflake.jdbc.loggerImpl>
                    <java.util.logging.config.file>
                      ${basedir}/../src/test/resources/logging.properties
                    </java.util.logging.config.file>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <goals>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- profiles deployed into ossrh stage area -->
    <profile>
      <id>ossrh-deploy</id>
      <activation>
        <property>
          <name>ossrhDeploy</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>${version.plugin.gpg}</version>
            <executions>
              <execution>
                <phase>deploy</phase>
                <goals>
                  <goal>sign-and-deploy-file</goal>
                </goals>
                <configuration>
                  <file>target/${project.artifactId}.jar</file>
                  <repositoryId>ossrh</repositoryId>
                  <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
                  <pomFile>generated_public_pom.xml</pomFile>
                  <javadoc>target/${project.artifactId}-javadoc.jar</javadoc>
                  <sources>target/${project.artifactId}-sources.jar</sources>
                  <keyname>${env.GPG_KEY_ID}</keyname>
                  <passphrase>${env.GPG_KEY_PASSPHRASE}</passphrase>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- skip default deploy plugin if we use gpg plugin to deploy -->
          <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>central-deploy</id>
      <activation>
        <property>
          <name>central-deploy</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>${version.plugin.buildhelper}</version>
            <executions>
              <execution>
                <id>attach-public-pom</id>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>generated_public_pom.xml</file>
                      <type>pom</type>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <configuration>
              <keyname>${env.GPG_KEY_ID}</keyname>
              <passphrase>${env.GPG_KEY_PASSPHRASE}</passphrase>
            </configuration>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
            <version>${version.plugin.publishing}</version>
            <extensions>true</extensions>
            <configuration>
              <publishingServerId>ossrh</publishingServerId>
              <autoPublish>true</autoPublish>
              <waitUntil>published</waitUntil>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>


================================================
FILE: FIPS/public_pom.xml
================================================
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.snowflake</groupId>
    <artifactId>snowflake-jdbc-fips</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>Snowflake JDBC Driver</name>
    <description>Snowflake JDBC Driver</description>
    <url>https://www.snowflake.net/</url>

    <licenses>
      <license>
        <name>The Apache Software License, Version 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      </license>
    </licenses>

    <developers>
      <developer>
        <name>Snowflake Support Team</name>
        <email>snowflake-java@snowflake.net</email>
        <organization>Snowflake Computing</organization>
        <organizationUrl>https://www.snowflake.net</organizationUrl>
      </developer>
    </developers>

    <scm>
      <connection>scm:git:git://github.com/snowflakedb/snowflake-jdbc</connection>
      <url>http://github.com/snowflakedb/snowflake-jdbc/tree/master</url>
    </scm>

    <properties>
      <bouncycastle.bcfips.version>1.0.2.6</bouncycastle.bcfips.version>
      <bouncycastle.bcpkixfips.version>1.0.8</bouncycastle.bcpkixfips.version>
      <jna.version>5.13.0</jna.version>
    </properties>

    <dependencies>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bc-fips</artifactId>
        <version>${bouncycastle.bcfips.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-fips</artifactId>
        <version>${bouncycastle.bcpkixfips.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>${jna.version}</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna-platform</artifactId>
        <version>${jna.version}</version>
        <optional>true</optional>
      </dependency>
    </dependencies>
</project>


================================================
FILE: FIPS/scripts/check_content.sh
================================================
#!/bin/bash -e

# scripts used to check if all dependencies are shaded into snowflake internal path

set -o pipefail

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"

if jar tvf $DIR/../target/snowflake-jdbc-fips.jar  | awk '{print $8}' | grep -v -E "/$" | grep -v -E "^(net|com)/snowflake" | grep -v -E "(com|net)/\$" | grep -v -E "^META-INF" | grep -v -E "^iso3166_" | grep -v -E "^mozilla" | grep -v -E "^com/sun/jna" | grep -v com/sun/ | grep -v mime.types | grep -v -E "^com/github/luben/zstd/" | grep -v -E "^aix/" | grep -v -E "^darwin/" | grep -v -E "^freebsd/" | grep -v -E "^linux/" | grep -v -E "^win/" | grep -v -E "^minicore/" | grep -v -E "^org/conscrypt/"; then
  echo "[ERROR] JDBC jar includes class not under the snowflake namespace"
  exit 1
fi


================================================
FILE: FIPS/src/test/java/net/snowflake/client/AbstractDriverIT.java
================================================
package net.snowflake.client;

import com.google.common.base.Strings;

import java.net.URL;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;

import static org.hamcrest.MatcherAssert.assertThat;

/** Base test class with common constants, data structures and methods */
public class AbstractDriverIT {
  // This is required to use ConditionalIgnore annotation.

  public static final String DRIVER_CLASS = "net.snowflake.client.api.driver.SnowflakeDriver";
  public static final String DRIVER_CLASS_COM = "com.snowflake.client.jdbc.SnowflakeDriver";
  public static final int DONT_INJECT_SOCKET_TIMEOUT = 0;

  // data files
  protected static final String TEST_DATA_FILE = "orders_100.csv";
  protected static final String TEST_DATA_FILE_2 = "orders_101.csv";

  protected static final String[] fileNames = {TEST_DATA_FILE, TEST_DATA_FILE_2};

  private static Logger logger = Logger.getLogger(AbstractDriverIT.class.getName());

  protected final int ERROR_CODE_BIND_VARIABLE_NOT_ALLOWED_IN_VIEW_OR_UDF_DEF = 2210;

  protected final int ERROR_CODE_DOMAIN_OBJECT_DOES_NOT_EXIST = 2003;

  public static Map<String, String> getConnectionParameters(String accountName) {
    Map<String, String> params = new HashMap<>();
    String account;
    String host;
    if (accountName == null) {
      account = TestUtil.systemGetEnv("SNOWFLAKE_TEST_ACCOUNT");
      host = TestUtil.systemGetEnv("SNOWFLAKE_TEST_HOST");
    } else {
      account = accountName;
      // By default, the test will run against reg deployment.
      // If developer needs to run in IntelliJ, you can set this env as ".dev.local"
      String deployment = TestUtil.systemGetEnv("SNOWFLAKE_TEST_DEPLOYMENT");
      if (Strings.isNullOrEmpty(deployment)) {
        deployment = ".reg.local";
      }
      host = accountName.trim() + deployment;
    }
    assertThat(
        "set SNOWFLAKE_TEST_ACCOUNT environment variable to the account name.",
        !Strings.isNullOrEmpty(account));
    params.put("account", account);

    if (Strings.isNullOrEmpty(host)) {
      host = account + ".snowflakecomputing.com";
    }

    assertThat(
        "set SNOWFLAKE_TEST_HOST environment variable to the host name.",
        !Strings.isNullOrEmpty(host));
    params.put("host", host);

    String protocol = TestUtil.systemGetEnv("SNOWFLAKE_TEST_PROTOCOL");
    String ssl;
    if ("http".equals(protocol)) {
      ssl = "off";
    } else {
      ssl = "on";
    }
    params.put("ssl", ssl);

    String user = TestUtil.systemGetEnv("SNOWFLAKE_TEST_USER");
    assertThat("set SNOWFLAKE_TEST_USER environment variable.", !Strings.isNullOrEmpty(user));
    params.put("user", user);

    String privateKeyFile = TestUtil.systemGetEnv("SNOWFLAKE_TEST_PRIVATE_KEY_FILE");
    if (!Strings.isNullOrEmpty(privateKeyFile)) {
      String workspace = System.getenv("WORKSPACE");
      if (workspace != null) {
        params.put("private_key_file", java.nio.file.Paths.get(workspace, privateKeyFile).toString());
      } else {
        params.put("private_key_file", privateKeyFile);
      }
      params.put("authenticator", "SNOWFLAKE_JWT");

      String privateKeyPwd = TestUtil.systemGetEnv("SNOWFLAKE_TEST_PRIVATE_KEY_PWD");
      if (!Strings.isNullOrEmpty(privateKeyPwd)) {
        params.put("private_key_pwd", privateKeyPwd);
      }

    } else {
      String password = TestUtil.systemGetEnv("SNOWFLAKE_TEST_PASSWORD");
      if (!Strings.isNullOrEmpty(password)) {
        params.put("password", password);
      } else {
        throw new IllegalStateException("Neither SNOWFLAKE_TEST_PRIVATE_KEY_FILE nor SNOWFLAKE_TEST_PASSWORD environment variable is set. Please configure one of them for authentication.");
      }
    }

    String port = TestUtil.systemGetEnv("SNOWFLAKE_TEST_PORT");
    if (Strings.isNullOrEmpty(port)) {
      if ("on".equals(ssl)) {
        port = "443";
      } else {
        port = "80";
      }
    }
    assertThat("set SNOWFLAKE_TEST_PORT environment variable.", !Strings.isNullOrEmpty(port));
    params.put("port", port);

    String database = TestUtil.systemGetEnv("SNOWFLAKE_TEST_DATABASE");
    assertThat(
        "set SNOWFLAKE_TEST_DATABASE environment variable.", !Strings.isNullOrEmpty(database));
    params.put("database", database);

    String schema = TestUtil.systemGetEnv("SNOWFLAKE_TEST_SCHEMA");
    assertThat("set SNOWFLAKE_TEST_SCHEMA environment variable.", !Strings.isNullOrEmpty(schema));
    params.put("schema", schema);

    String role = TestUtil.systemGetEnv("SNOWFLAKE_TEST_ROLE");
    assertThat("set SNOWFLAKE_TEST_ROLE environment variable.", !Strings.isNullOrEmpty(role));
    params.put("role", role);

    String warehouse = TestUtil.systemGetEnv("SNOWFLAKE_TEST_WAREHOUSE");
    assertThat(
        "set SNOWFLAKE_TEST_WAREHOUSE environment variable.", !Strings.isNullOrEmpty(warehouse));
    params.put("warehouse", warehouse);

    params.put("uri", String.format("jdbc:snowflake://%s:%s", host, port));

    String adminUser = TestUtil.systemGetEnv("SNOWFLAKE_TEST_ADMIN_USER");
    params.put("adminUser", adminUser);

    String adminPassword = TestUtil.systemGetEnv("SNOWFLAKE_TEST_ADMIN_PASSWORD");
    params.put("adminPassword", adminPassword);

    String ssoUser = TestUtil.systemGetEnv("SNOWFLAKE_TEST_SSO_USER");
    params.put("ssoUser", ssoUser);

    String ssoPassword = TestUtil.systemGetEnv("SNOWFLAKE_TEST_SSO_PASSWORD");
    params.put("ssoPassword", ssoPassword);

    return params;
  }

  public static Map<String, String> getConnectionParameters() {
    return getConnectionParameters(null);
  }

  /**
   * Gets a connection with default session parameter settings, but tunable query api version and
   * socket timeout setting
   *
   * @param paramProperties connection properties
   * @return Connection a database connection
   * @throws SQLException raised if any error occurs
   */
  public static Connection getConnection(Properties paramProperties) throws SQLException {
    return getConnection(DONT_INJECT_SOCKET_TIMEOUT, paramProperties, false, false);
  }

  /**
   * Gets a connection with custom account name, but otherwise default settings
   *
   * @return Connection a database connection
   * @throws SQLException raised if any error occurs
   */
  public static Connection getConnection(String accountName) throws SQLException {
    return getConnection(DONT_INJECT_SOCKET_TIMEOUT, null, false, false, accountName);
  }

  /**
   * Gets a connection with default settings
   *
   * @return Connection a database connection
   * @throws SQLException raised if any error occurs
   */
  public static Connection getConnection() throws SQLException {
    return getConnection(DONT_INJECT_SOCKET_TIMEOUT, null, false, false);
  }

  /**
   * Gets a connection with default session parameter settings, but tunable query api version and
   * socket timeout setting
   *
   * @param injectSocketTimeout number of seconds to inject in connection
   * @return Connection a database connection
   * @throws SQLException raised if any error occurs
   */
  public static Connection getConnection(int injectSocketTimeout) throws SQLException {
    return getConnection(injectSocketTimeout, null, false, false);
  }

  /**
   * Gets a connection with Snowflake admin
   *
   * @return Connection a database connection
   * @throws SQLException raised if any error occurs
   */
  protected static Connection getSnowflakeAdminConnection() throws SQLException {
    return getConnection(DONT_INJECT_SOCKET_TIMEOUT, null, true, false);
  }

  /**
   * Gets a connection with Snowflake admin
   *
   * @param paramProperties connection properties
   * @return Connection a database connection
   * @throws SQLException raised if any error occurs
   */
  protected static Connection getSnowflakeAdminConnection(Properties paramProperties)
      throws SQLException {
    return getConnection(DONT_INJECT_SOCKET_TIMEOUT, paramProperties, true, false);
  }

  /**
   * Gets a connection in same way as function below but with default account (gotten from
   * environment variables)
   *
   * @param injectSocketTimeout
   * @param paramProperties
   * @param isAdmin
   * @param usesCom
   * @return
   * @throws SQLException
   */
  public static Connection getConnection(
      int injectSocketTimeout, Properties paramProperties, boolean isAdmin, boolean usesCom)
      throws SQLException {
    return getConnection(injectSocketTimeout, paramProperties, isAdmin, usesCom, null);
  }

  /**
   * Gets a connection for the custom session parameter settings and tunable query api version and
   * socket timeout setting
   *
   * @param injectSocketTimeout number of seconds to inject in connection
   * @param paramProperties connection properties
   * @param isAdmin is Snowflake admin user?
   * @param usesCom uses com.snowflake instead of net.snowflake?
   * @return Connection database connection
   * @throws SQLException raised if any error occurs
   */
  public static Connection getConnection(
      int injectSocketTimeout,
      Properties paramProperties,
      boolean isAdmin,
      boolean usesCom,
      String accountName)
      throws SQLException {
    // Load Snowflake JDBC class
    String driverClass = DRIVER_CLASS;
    if (usesCom) {
      driverClass = DRIVER_CLASS_COM;
    }
    try {
      Class.forName(driverClass);
    } catch (Exception e) {
      logger.log(Level.SEVERE, "Cannot find Driver", e);
      throw new RuntimeException(e.getCause());
    }
    Map<String, String> params = getConnectionParameters(accountName);

    // build connection properties
    Properties properties = new Properties();
    if (isAdmin) {
      assertThat(
          "set SNOWFLAKE_TEST_ADMIN_USER environment variable.",
          !Strings.isNullOrEmpty(params.get("adminUser")));
      assertThat(
          "set SNOWFLAKE_TEST_ADMIN_PASSWORD environment variable.",
          !Strings.isNullOrEmpty(params.get("adminPassword")));

      properties.put("user", params.get("adminUser"));
      properties.put("password", params.get("adminPassword"));
      properties.put("role", "accountadmin");
      properties.put("account", "snowflake");
    } else {
      properties.put("user", params.get("user"));
      properties.put("role", params.get("role"));
      properties.put("account", params.get("account"));

      if (!Strings.isNullOrEmpty(params.get("private_key_file"))) {
        properties.put("private_key_file", params.get("private_key_file"));
        if (params.get("authenticator") != null) {
          properties.put("authenticator", params.get("authenticator"));
        }
        if (!Strings.isNullOrEmpty(params.get("private_key_pwd"))) {
          properties.put("private_key_pwd", params.get("private_key_pwd"));
        }
      } else if (!Strings.isNullOrEmpty(params.get("password"))) {
        properties.put("password", params.get("password"));
      }
    }
    
    properties.put("db", params.get("database"));
    properties.put("schema", params.get("schema"));
    properties.put("warehouse", params.get("warehouse"));
    properties.put("ssl", params.get("ssl"));

    properties.put("internal", Boolean.TRUE.toString()); // TODO: do we need this?

    properties.put("insecureMode", false); // use OCSP for all tests.

    if (injectSocketTimeout > 0) {
      properties.put("injectSocketTimeout", String.valueOf(injectSocketTimeout));
    }

    // Set the session parameter properties
    if (paramProperties != null) {
      for (Map.Entry<?, ?> entry : paramProperties.entrySet()) {
        properties.put(entry.getKey(), entry.getValue());
      }
    }
    return DriverManager.getConnection(params.get("uri"), properties);
  }

  /**
   * Close SQL Objects
   *
   * @param resultSet a result set object
   * @param statement a statement object
   * @param connection a connection
   * @throws SQLException raised if any error occurs
   */
  public void closeSQLObjects(ResultSet resultSet, Statement statement, Connection connection)
      throws SQLException {
    if (resultSet != null) {
      resultSet.close();
    }
    if (statement != null) {
      statement.close();
    }
    if (connection != null) {
      connection.close();
    }
  }

  /**
   * Close SQL Objects
   *
   * @param statement a statement object
   * @param connection a connection
   * @throws SQLException raised if any error occurs
   */
  public void closeSQLObjects(Statement statement, Connection connection) throws SQLException {
    if (statement != null) {
      statement.close();
    }
    if (connection != null) {
      connection.close();
    }
  }

  /**
   * Get a full path of the file in Resource
   *
   * @param fileName a file name
   * @return a full path name of the file
   */
  public static String getFullPathFileInResource(String fileName) {
    ClassLoader classLoader = AbstractDriverIT.class.getClassLoader();
    URL url = classLoader.getResource(fileName);
    if (url != null) {
      return url.getFile();
    } else {
      throw new RuntimeException("No file is found: " + fileName);
    }
  }

  protected static Timestamp buildTimestamp(
      int year, int month, int day, int hour, int minute, int second, int fractionInNanoseconds) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day, hour, minute, second);
    Timestamp ts = new Timestamp(cal.getTime().getTime());
    ts.setNanos(fractionInNanoseconds);
    return ts;
  }

  protected static Date buildDate(int year, int month, int day) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day, 0, 0, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return new Date(cal.getTime().getTime());
  }

  protected static Date buildDateWithTZ(int year, int month, int day, TimeZone tz) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeZone(tz);
    cal.set(year, month, day, 0, 0, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return new Date(cal.getTime().getTime());
  }
}


================================================
FILE: FIPS/src/test/java/net/snowflake/client/DontRunOnGCP.java
================================================
package net.snowflake.client;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@DisabledIfEnvironmentVariable(named = "CLOUD_PROVIDER", matches = "(?i)GCP(?-i)")
public @interface DontRunOnGCP {}

================================================
FILE: FIPS/src/test/java/net/snowflake/client/DontRunOnGithubActions.java
================================================
package net.snowflake.client;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@DisabledIfEnvironmentVariable(named = "GITHUB_ACTIONS", matches = ".*")
public @interface DontRunOnGithubActions {}


================================================
FILE: FIPS/src/test/java/net/snowflake/client/TestUtil.java
================================================
package net.snowflake.client;

import net.snowflake.client.internal.core.SFException;
import net.snowflake.client.internal.log.SFLogger;
import net.snowflake.client.internal.log.SFLoggerFactory;
import org.junit.jupiter.api.Assertions;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

public class TestUtil {
  private static final SFLogger logger = SFLoggerFactory.getLogger(TestUtil.class);
  /**
   * Util function to assert a piece will throw exception and assert on the error code
   *
   * @param errorCode expected error code
   * @param testCode the code that will run and throws exception
   */
  public static void assertSFException(int errorCode, TestRunInterface testCode) {
    try {
      testCode.run();
      Assertions.fail();
    } catch (SFException e) {
      assertThat(e.getVendorCode(), is(errorCode));
    }
  }

  /** Functional interface used to run a piece of code which throws SFException */
  @FunctionalInterface
  public interface TestRunInterface {
    void run() throws SFException;
  }

  /**
   * System.getenv wrapper. If System.getenv raises a SecurityException, it is ignored and returns
   * null.
   * @deprecated This method should be replaced by SnowflakeUtil.systemGetEnv.
   * <p>This is replicated from SnowflakeUtil.systemGetEnv, because the old driver doesn't have that
   * function for the tests to use it. Replace this function call with SnowflakeUtil.systemGetEnv
   * when it is available.
   *
   * @param env the environment variable name.
   * @return the environment variable value if set, otherwise null.
   */
  @Deprecated
  public static String systemGetEnv(String env) {
    try {
      return System.getenv(env);
    } catch (SecurityException ex) {
      logger.debug(
          "Failed to get environment variable {}. Security exception raised: {}",
          env,
          ex.getMessage());
    }
    return null;
  }
}


================================================
FILE: FIPS/src/test/java/net/snowflake/client/category/FipsTestSuite.java
================================================
package net.snowflake.client.category;

import org.junit.platform.suite.api.IncludeTags;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.platform.suite.api.ExcludePackages;
import org.junit.platform.suite.api.IncludeClassNamePatterns;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;

@Suite
@SelectPackages("net.snowflake.client")
@ExcludePackages("net.snowflake.client.suites")
@IncludeClassNamePatterns(".+")
public class FipsTestSuite {
}


================================================
FILE: FIPS/src/test/java/net/snowflake/client/jdbc/ConnectionFipsIT.java
================================================
package net.snowflake.client.jdbc;

import static org.junit.jupiter.api.Assertions.*;

import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.net.ssl.HttpsURLConnection;
import net.snowflake.client.AbstractDriverIT;
import net.snowflake.client.DontRunOnGCP;
import net.snowflake.client.DontRunOnGithubActions;
import net.snowflake.client.internal.core.SecurityUtil;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.crypto.CryptoServicesRegistrar;
import org.bouncycastle.crypto.fips.FipsStatus;
import org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;


@Tag("fips")
public class ConnectionFipsIT extends AbstractDriverIT {
  private static final String JCE_PROVIDER_BOUNCY_CASTLE_FIPS = "BCFIPS";
  private static final String JCE_PROVIDER_SUN_JCE = "SunJCE";
  private static final String JCE_PROVIDER_SUN_RSA_SIGN = "SunRsaSign";
  private static final String JCE_KEYSTORE_BOUNCY_CASTLE = "BCFKS";
  private static final String JCE_KEYSTORE_JKS = "JKS";
  private static final String BOUNCY_CASTLE_RNG_HYBRID_MODE = "C:HYBRID;ENABLE{All};";

  private static final String SSL_ENABLED_PROTOCOLS = "TLSv1.2,TLSv1.1,TLSv1";
  private static final String SSL_ENABLED_CIPHERSUITES =
      "TLS_AES_128_GCM_SHA256,"
          + "TLS_AES_256_GCM_SHA384,"
          + "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,"
          + "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,"
          + "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,"
          + "TLS_RSA_WITH_AES_256_GCM_SHA384,"
          + "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,"
          + "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,"
          + "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,"
          + "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384(,"
          + "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,"
          + "TLS_RSA_WITH_AES_128_GCM_SHA256,"
          + "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,"
          + "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,"
          + "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,"
          + "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,"
          + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,"
          + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,"
          + "TLS_RSA_WITH_AES_256_CBC_SHA256,"
          + "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,"
          + "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,"
          + "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,"
          + "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,"
          + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,"
          + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,"
          + "TLS_RSA_WITH_AES_256_CBC_SHA,"
          + "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,"
          + "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,"
          + "TLS_DHE_RSA_WITH_AES_256_CBC_SHA,"
          + "TLS_DHE_DSS_WITH_AES_256_CBC_SHA,"
          + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,"
          + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,"
          + "TLS_RSA_WITH_AES_128_CBC_SHA256,"
          + "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,"
          + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,"
          + "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,"
          + "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,"
          + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,"
          + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,"
          + "TLS_RSA_WITH_AES_128_CBC_SHA,"
          + "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,"
          + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,"
          + "TLS_DHE_RSA_WITH_AES_128_CBC_SHA,"
          + "TLS_DHE_DSS_WITH_AES_128_CBC_SHA";

  private static final String JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE = "javax.net.ssl.keyStoreType";
  private static final String JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE =
      "javax.net.ssl.trustStoreType";
  private static final String JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS = "jdk.tls.client.protocols";
  private static final String JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES = "jdk.tls.client.cipherSuites";
  private static final String JAVA_SYSTEM_PROPERTY_SSL_NAMEDGROUPS = "jdk.tls.namedGroups";

  private static String JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE_ORIGINAL_VALUE;
  private static String JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE_ORIGINAL_VALUE;
  private static String JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS_ORIGINAL_VALUE;
  private static String JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES_ORIGINAL_VALUE;

  private static Provider JCE_PROVIDER_SUN_JCE_PROVIDER_VALUE;
  private static Provider JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_VALUE;
  private static int JCE_PROVIDER_SUN_JCE_PROVIDER_POSITION;
  private static int JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_POSITION;

  @BeforeAll
  public static void setup() throws Exception {
    System.setProperty("javax.net.debug", "ssl");
    // Setting up the named group to avoid test failure on GCP environment.
    System.setProperty(JAVA_SYSTEM_PROPERTY_SSL_NAMEDGROUPS, "secp256r1, secp384r1, ffdhe2048, ffdhe3072");
    // get keystore types for BouncyCastle libraries
    JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE_ORIGINAL_VALUE =
        System.getProperty(JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE);
    JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE_ORIGINAL_VALUE =
        System.getProperty(JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE);

    // set keystore types for BouncyCastle libraries
    System.setProperty(JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE, JCE_KEYSTORE_BOUNCY_CASTLE);
    System.setProperty(JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE, JCE_KEYSTORE_JKS);
    // remove Java's standard encryption and SSL providers
    List<Provider> providers = Arrays.asList(Security.getProviders());
    JCE_PROVIDER_SUN_JCE_PROVIDER_VALUE = Security.getProvider(JCE_PROVIDER_SUN_JCE);
    JCE_PROVIDER_SUN_JCE_PROVIDER_POSITION = providers.indexOf(JCE_PROVIDER_SUN_JCE_PROVIDER_VALUE);
    JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_VALUE = Security.getProvider(JCE_PROVIDER_SUN_RSA_SIGN);
    JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_POSITION =
        providers.indexOf(JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_VALUE);
    Security.removeProvider(JCE_PROVIDER_SUN_JCE);
    Security.removeProvider(JCE_PROVIDER_SUN_RSA_SIGN);

    // workaround to connect to accounts.google.com over HTTPS, which consists
    // of disabling TLS 1.3 and disabling default SSL cipher suites that are
    // using CHACHA20_POLY1305 algorithms
    JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS_ORIGINAL_VALUE =
        System.getProperty(JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS);
    JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES_ORIGINAL_VALUE =
        System.getProperty(JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES);
    System.setProperty(JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS, SSL_ENABLED_PROTOCOLS);
    System.setProperty(JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES, SSL_ENABLED_CIPHERSUITES);
    /*
     * Insert BouncyCastle's FIPS-compliant encryption and SSL providers.
     */
    BouncyCastleFipsProvider bcFipsProvider =
        new BouncyCastleFipsProvider(BOUNCY_CASTLE_RNG_HYBRID_MODE);

    /*
     * We remove BCFIPS provider pessimistically. This is a no-op if provider
     * does not exist. This is necessary to always add it to the first
     * position when calling insertProviderAt.
     *
     * JavaDoc for insertProviderAt states:
     *   "A provider cannot be added if it is already installed."
     */
    Security.removeProvider(JCE_PROVIDER_BOUNCY_CASTLE_FIPS);
    Security.insertProviderAt(bcFipsProvider, 1);
    if (!CryptoServicesRegistrar.isInApprovedOnlyMode()) {
      if (FipsStatus.isReady()) {
        CryptoServicesRegistrar.setApprovedOnlyMode(true);
      } else {
        throw new RuntimeException(
            "FIPS is not ready to be enabled and FIPS " + "mode is required for this test to run");
      }
    }

    // attempts an SSL connection to Google
    // connectToGoogle();
  }

  @AfterAll
  public static void teardown() throws Exception {
    // Remove BouncyCastle FIPS Provider
    Security.removeProvider(JCE_PROVIDER_BOUNCY_CASTLE_FIPS);

    // Restore ciphers removed to connect to accounts.google.com
    if (JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS_ORIGINAL_VALUE == null) {
      System.clearProperty(JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS);
    } else {
      System.setProperty(
          JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS, JAVA_SYSTEM_PROPERTY_SSL_PROTOCOLS_ORIGINAL_VALUE);
    }
    if (JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES_ORIGINAL_VALUE == null) {
      System.clearProperty(JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE);
    } else {
      System.setProperty(
          JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES,
          JAVA_SYSTEM_PROPERTY_SSL_CIPHERSUITES_ORIGINAL_VALUE);
    }

    // remove Java's standard encryption and SSL providers
    Security.insertProviderAt(
        JCE_PROVIDER_SUN_JCE_PROVIDER_VALUE, JCE_PROVIDER_SUN_JCE_PROVIDER_POSITION);
    Security.insertProviderAt(
        JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_VALUE, JCE_PROVIDER_SUN_RSA_SIGN_PROVIDER_POSITION);

    // Restore previous keystore values
    if (JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE_ORIGINAL_VALUE == null) {
      System.clearProperty(JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE);
    } else {
      System.setProperty(
          JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE,
          JAVA_SYSTEM_PROPERTY_SSL_KEYSTORE_TYPE_ORIGINAL_VALUE);
    }
    if (JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE_ORIGINAL_VALUE == null) {
      System.clearProperty(JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE);
    } else {
      System.setProperty(
          JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE,
          JAVA_SYSTEM_PROPERTY_SSL_TRUSTSTORE_TYPE_ORIGINAL_VALUE);
    }
    System.clearProperty(SecurityUtil.USE_BUNDLED_BOUNCY_CASTLE_FOR_PRIVATE_KEY_DECRYPTION_JVM);
    // clear the named group.
    System.clearProperty(JAVA_SYSTEM_PROPERTY_SSL_NAMEDGROUPS);
    // attempts an SSL connection to Google
    // connectToGoogle();
  }

  @Test
  public void connectWithFips() throws SQLException {
    Connection con = getConnection();
    Statement statement = con.createStatement();
    ResultSet resultSet = statement.executeQuery("show parameters");
    assertTrue(resultSet.next());
    assertFalse(con.isClosed());
    statement.close();
    con.close();
    assertTrue(con.isClosed());
    con.close(); // ensure no exception
  }

  @Test
  @DontRunOnGithubActions
  public void connectWithFipsKeyPair() throws Exception {
    Map<String, String> parameters = getConnectionParameters();
    String testUser = parameters.get("user");

    Connection connection = getConnection();
    Statement statement = connection.createStatement();
    statement.execute("use role accountadmin");
    String pathfile = getFullPathFileInResource("rsa_key.pub");
    String pubKey = new String(Files.readAllBytes(Paths.get(pathfile)));
    pubKey = pubKey.replace("-----BEGIN PUBLIC KEY-----", "");
    pubKey = pubKey.replace("-----END PUBLIC KEY-----", "");
    statement.execute(String.format("alter user %s set rsa_public_key='%s'", testUser, pubKey));
    connection.close();

    // PKCS8 private key file. No PKCS1 is supported.
    String privateKeyLocation = getFullPathFileInResource("rsa_key.p8");
    String uri = parameters.get("uri") + "/?private_key_file=" + privateKeyLocation;
    
    // Create Properties with simple null checks to avoid NullPointerException
    Properties properties = new Properties();
    properties.put("user", testUser);
    if (parameters.get("account") != null) {
      properties.put("account", parameters.get("account"));
    }
    if (parameters.get("ssl") != null) {
      properties.put("ssl", parameters.get("ssl"));
    }
    if (parameters.get("port") != null) {
      properties.put("port", parameters.get("port"));
    }
    if (parameters.get("database") != null) {
      properties.put("db", parameters.get("database"));
    }
    if (parameters.get("schema") != null) {
      properties.put("schema", parameters.get("schema"));
    }
    
    connection = DriverManager.getConnection(uri, properties);
    assertNotNull(connection);
    connection.close();
  }

  @Test
  @DontRunOnGithubActions
  public void testConnectUsingKeyPair() throws Exception {
    Map<String, String> parameters = getConnectionParameters();
    String testUser = parameters.get("user");

    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BCFIPS");
    SecureRandom random = SecureRandom.getInstance("DEFAULT", "BCFIPS");
    keyPairGenerator.initialize(2048, random);

    KeyPair keyPair = keyPairGenerator.generateKeyPair();
    PublicKey publicKey = keyPair.getPublic();
    PrivateKey privateKey = keyPair.getPrivate();

    try (Connection connection = getConnection()) {
      Statement statement = connection.createStatement();
      statement.execute("use role accountadmin");
      String encodePublicKey = Base64.encodeBase64String(publicKey.getEncoded());
      statement.execute(
          String.format("alter user %s set rsa_public_key='%s'", testUser, encodePublicKey));
    }

    String uri = parameters.get("uri");

    Properties properties = new Properties();
    properties.put("user", testUser);
    if (parameters.get("account") != null) {
      properties.put("account", parameters.get("account"));
    }
    if (parameters.get("ssl") != null) {
      properties.put("ssl", parameters.get("ssl"));
    }
    if (parameters.get("port") != null) {
      properties.put("port", parameters.get("port"));
    }
    if (parameters.get("database") != null) {
      properties.put("db", parameters.get("database"));
    }
    if (parameters.get("schema") != null) {
      properties.put("schema", parameters.get("schema"));
    }

    // test correct private key one
    properties.put("privateKey", privateKey);
    DriverManager.getConnection(uri, properties).close();
  }

  /**
   * Test case for connecting with FIPS and executing a query.
   */
  @Test
  public void connectWithFipsAndQuery() throws SQLException {
    try (Connection con = getConnection()) {
      Statement statement = con.createStatement();
      ResultSet resultSet =
          statement.executeQuery(
              "select seq8(), randstr(100, random()) from table(generator(rowcount=>10000))");
      int cnt = 0;
      while (resultSet.next()) {
        assertNotNull(resultSet.getInt(1));
        assertNotNull(resultSet.getString(2));
        cnt++;
      }
      assertEquals(cnt, 10000);
    }
  }

  @Test
  public void connectWithFipsAndPut() throws Exception {
    try (Connection con = getConnection()) {
      // put files
      ResultSet resultSet =
          con.createStatement()
              .executeQuery("PUT file://" + getFullPathFileInResource(TEST_DATA_FILE) + " @~");
      int cnt = 0;
      while (resultSet.next()) {
        cnt++;
      }
      assertEquals(cnt, 1);
    }
  }

  /** Added in > 3.15.1 */
  @Test
  @DontRunOnGithubActions
  public void connectWithFipsKeyPairWithBouncyCastle() throws Exception {
    System.setProperty(
        SecurityUtil.USE_BUNDLED_BOUNCY_CASTLE_FOR_PRIVATE_KEY_DECRYPTION_JVM, "true");
    connectWithFipsKeyPair();
  }

  /** Added in > 3.15.1 */
  @Test
  @DontRunOnGithubActions
  public void testConnectUsingKeyPairWithBouncyCastle() throws Exception {
    System.setProperty(
        SecurityUtil.USE_BUNDLED_BOUNCY_CASTLE_FOR_PRIVATE_KEY_DECRYPTION_JVM, "true");
    testConnectUsingKeyPair();
  }

  private static void connectToGoogle() throws Exception {
    URL url = new URL("https://www.google.com/");
    HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
    int code = con.getResponseCode();
    if (code != 200) {
      throw new Exception("Got " + code + " instead of HTTP_OK");
    }

    System.out.println("Connected to Google successfully");
  }
}


================================================
FILE: Jenkinsfile
================================================
@Library('pipeline-utils')
import com.snowflake.DevEnvUtils
import groovy.json.JsonOutput

class JdbcJobDefinition {
  String jdk
  List params
  String jobToRun
  String runName
}

pipeline {
  agent { label 'regular-memory-node-snowos' }
  options { timestamps() }
  environment {
    COMMIT_SHA_LONG = sh(returnStdout: true, script: "echo \$(git rev-parse " + "HEAD)").trim()

    // environment variables for semgrep_agent (for findings / analytics page)
    // remove .git at the end
    // remove SCM URL + .git at the end

    BASELINE_BRANCH = "${env.CHANGE_TARGET}"
  }
  stages {
    stage('Checkout') {
      steps {
        checkout scm
      }
    }
  }
}

timestamps {
  node('regular-memory-node-snowos') {
    stage('checkout') {
      scmInfo = checkout scm
      println("${scmInfo}")
      env.GIT_BRANCH = scmInfo.GIT_BRANCH
    }

    stage('Authenticate Artifactory') {
      script {
        new DevEnvUtils().withSfCli {
          sh "sf artifact oci auth"
        }
      }
    }

    stage('Build') {
      sh '''\
        |export JAVA_HOME=/usr/java/latest
        |export PATH=$JAVA_HOME/bin:$PATH
        |export GIT_BRANCH=${GIT_BRANCH}
        |$WORKSPACE/ci/build.sh
      '''.stripMargin()
    }

    jdkToParams = ['openjdk8': 'jdbc-rockylinux8-openjdk8', 'openjdk11': 'jdbc-rockylinux8-openjdk11', 'openjdk17': 'jdbc-rockylinux8-openjdk17', 'openjdk21': 'jdbc-rockylinux8-openjdk21'].collectEntries { jdk, image ->
      return [(jdk): [
        string(name: 'client_git_branch', value: scmInfo.GIT_BRANCH),
        string(name: 'client_git_commit', value: scmInfo.GIT_COMMIT),
        string(name: 'branch', value: 'main'),
        string(name: 'TARGET_DOCKER_TEST_IMAGE', value: image),
        string(name: 'parent_job', value: env.JOB_NAME),
        string(name: 'parent_build_number', value: env.BUILD_NUMBER),
        string(name: 'timeout_value', value: '420'),
        string(name: 'PR_Key', value: scmInfo.GIT_BRANCH.substring(3)),
        string(name: 'svn_revision', value: 'sut-stable')
      ]]
    }

    jobDefinitions = jdkToParams.collectMany { jdk, params ->
      return [
        'RT-LanguageJDBC1-PC' : "Test JDBC 1 - $jdk",
        'RT-LanguageJDBC2-PC' : "Test JDBC 2 - $jdk",
        'RT-LanguageJDBC3-PC' : "Test JDBC 3 - $jdk",
        'RT-LanguageJDBC4-PC' : "Test JDBC 4 - $jdk",
      ].collect { jobToRun, runName ->
        return new JdbcJobDefinition(
          jdk: jdk,
          params: params,
          jobToRun: jobToRun,
          runName: runName
        )
      }
    }.collectEntries { jobDefinition ->
      return [(jobDefinition.runName): { build job: jobDefinition.jobToRun, parameters: jobDefinition.params }]
    }

    jobDefinitions.put('JDBC-AIX-Unit', { build job: 'JDBC-AIX-UnitTests', parameters: [ string(name: 'BRANCH', value: scmInfo.GIT_BRANCH ) ] } )
    jobDefinitions.put('Test Authentication', {
      withCredentials([
        string(credentialsId: 'sfctest0-parameters-secret', variable: 'PARAMETERS_SECRET'),
      ]) {
        sh '''\
      |#!/bin/bash
      |set -e
      |ci/test_authentication.sh
    '''.stripMargin()
      }
    })

    jobDefinitions.put('Test WIF', {
      withCredentials([
        string(credentialsId: 'sfctest0-parameters-secret', variable: 'PARAMETERS_SECRET'),
      ]) {
        sh '''\
      |#!/bin/bash
      |set -e
      |ci/test_wif.sh
    '''.stripMargin()
      }
    })

    jobDefinitions.put('Test Revocation Validation', {
      withCredentials([
        usernamePassword(credentialsId: 'jenkins-snowflakedb-github-app',
          usernameVariable: 'GITHUB_USER',
          passwordVariable: 'GITHUB_TOKEN')
      ]) {
        try {
          sh '''\
        |#!/bin/bash -e
        |chmod +x $WORKSPACE/ci/test_revocation.sh
        |$WORKSPACE/ci/test_revocation.sh
      '''.stripMargin()
        } finally {
          archiveArtifacts artifacts: 'revocation-results.json,revocation-report.html', allowEmptyArchive: true
          publishHTML(target: [
            allowMissing: true,
            alwaysLinkToLastBuild: true,
            keepAll: true,
            reportDir: '.',
            reportFiles: 'revocation-report.html',
            reportName: 'Revocation Validation Report'
          ])
        }
      }
    })

    stage('Test') {
      parallel (jobDefinitions)
    }
  }
}

def wgetUpdateGithub(String state, String folder, String targetUrl, String seconds) {
    def ghURL = "https://api.github.com/repos/snowflakedb/snowflake-jdbc/statuses/$COMMIT_SHA_LONG"
    def data = JsonOutput.toJson([state: "${state}", context: "jenkins/${folder}",target_url: "${targetUrl}"])
    sh "wget ${ghURL} --spider -q --header='Authorization: token $GIT_PASSWORD' --post-data='${data}'"
}


================================================
FILE: LICENSE.txt
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://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 (c) 2013-2018 Snowflake Computing, Inc.

   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

       http://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.rst
================================================
Snowflake JDBC Driver
*********************

.. image:: https://github.com/snowflakedb/snowflake-jdbc/workflows/Build%20and%20Test/badge.svg?branch=master
      :target: https://github.com/snowflakedb/snowflake-jdbc/actions?query=workflow%3A%22Build+and+Test%22+branch%3Amaster

.. image:: https://codecov.io/gh/snowflakedb/snowflake-jdbc/branch/master/graph/badge.svg?token=Mj6uPxk0pV
     :target: https://codecov.io/gh/snowflakedb/snowflake-jdbc

.. image:: http://img.shields.io/:license-Apache%202-brightgreen.svg
    :target: http://www.apache.org/licenses/LICENSE-2.0.txt

Snowflake provides a JDBC type 4 driver that supports core functionality, allowing Java program to connect to Snowflake.

.. |maven-snowflake-jdbc| image:: https://maven-badges.herokuapp.com/maven-central/net.snowflake/snowflake-jdbc/badge.svg?style=plastic
    :target: https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc/

.. |maven-snowflake-jdbc-fips| image:: https://maven-badges.herokuapp.com/maven-central/net.snowflake/snowflake-jdbc-fips/badge.svg?style=plastic
    :target: https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc-fips/

.. |maven-snowflake-jdbc-thin| image:: https://maven-badges.herokuapp.com/maven-central/net.snowflake/snowflake-jdbc-thin/badge.svg?style=plastic
    :target: https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc-thin/

- snowflake-jdbc (fat-jar): |maven-snowflake-jdbc|
- snowflake-jdbc-fips (FIPS compliant fat-jar): |maven-snowflake-jdbc-fips|
- snowflake-jdbc-thin (thin-jar): |maven-snowflake-jdbc-thin|

Prerequisites
=============

The Snowflake JDBC driver requires Java 1.8 or higher. If the minimum required version of Java is not installed on the client machines where the JDBC driver is installed, you must install either Oracle Java or OpenJDK.

Installation
============

Maven
-----
Add following dependency for fat-jar

.. code-block:: xml

    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc</artifactId>
      <version>{version}</version>
    </dependency>

or for FIPS compliant fat-jar

.. code-block:: xml

    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc-fips</artifactId>
      <version>{version}</version>
    </dependency>

or for thin-jar

.. code-block:: xml

    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc-thin</artifactId>
      <version>{version}</version>
    </dependency>

Build from Source Code 
----------------------
1. Checkout source code from Github by running:

.. code-block:: bash

    git clone https://github.com/snowflakedb/snowflake-jdbc.git

2. Build the fat-jar and install it in local maven repository by running:

.. code-block:: bash

    ./mvnw clean verify
    ./mvnw org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile=target/snowflake-jdbc.jar -DpomFile=./public_pom.xml

3. Build the FIPS compliant fat-jar and install it in local maven repository by running:

.. code-block:: bash

    cd FIPS
    ../mvnw clean verify
    ../mvnw org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile=target/snowflake-jdbc-fips.jar -DpomFile=./public_pom.xml
    cd -

4. Build the thin-jar and install it in local maven repository by running:

.. code-block:: bash

    ./mvnw clean verify -Dnot-self-contained-jar -Dthin-jar
    ./mvnw org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile=target/snowflake-jdbc-thin.jar -DpomFile=./thin_public_pom.xml -Dnot-self-contained-jar -Dthin-jar

- ``thin-jar`` enables thin jar profile
- ``not-self-contained-jar`` turns off fat jar profile (enabled by default)

5. **Note that the built dependencies are installed with version 1.0-SNAPSHOT**

Usage
=====

Load Driver Class
-----------------

.. code-block:: java

    Class.forName("net.snowflake.client.api.driver.SnowflakeDriver")

Note: The legacy driver class ``net.snowflake.client.jdbc.SnowflakeDriver`` is still available for backward compatibility but is deprecated.

Datasource
----------

Use ``SnowflakeDataSourceFactory`` to create DataSource instances:

.. code-block:: java

    import net.snowflake.client.api.datasource.SnowflakeDataSource;
    import net.snowflake.client.api.datasource.SnowflakeDataSourceFactory;

    SnowflakeDataSource ds = SnowflakeDataSourceFactory.createDataSource();
    ds.setAccount("myaccount");
    ds.setUser("myuser");
    ds.setPassword("mypassword");

Connection String
-----------------

US(West) Region:

.. code-block:: bash

    jdbc:snowflake://<account>.snowflakecomputing.com/?<connection_params>


EU(Frankfurt) Region:

.. code-block:: bash

    jdbc:snowflake://<account>.eu-central-1.snowflakecomputing.com/?<connection_params>

Documentation
=============

For detailed documentation, please refer to https://docs.snowflake.net/manuals/user-guide/jdbc.html

Development
=============

Run the maven command to check the coding style.

.. code-block:: bash

    mvn -P check-style validate

Follow the instruction if any error occurs or run this command to fix the formats.

.. code-block:: bash

    mvn com.spotify.fmt:fmt-maven-plugin:format

You may import the coding style from IntelliJ so that the coding style can be applied on IDE:

- In the **File** -> **Settings/Plugins**, and install `google-java-format` plugin.
- Enable `google-java-format` for the JDBC project.
- In the source code window, select **Code** -> **Reformat** to apply the coding style.
- Additionally configure IDE in **File** -> **Editor** -> **Code Style** -> **Java** to
  - not use wildcard imports (tab **Imports**):
    - **Use single class import**
    - **Class count to use import with '*'** to 1000
    - **Names count to use static import with '*'** to 1000
  - always use braces in ``if/while/for/do..while`` in (tab **Wrapping and Braces**)

Tests
=====

Run Tests
---------

Set the environment variables to specify the target database.

.. code-block:: bash

    export SNOWFLAKE_TEST_HOST=<your_host>
    export SNOWFLAKE_TEST_ACCOUNT=<your_account>
    export SNOWFLAKE_TEST_USER=<your_user>
    export SNOWFLAKE_TEST_PASSWORD=<your_password>
    export SNOWFLAKE_TEST_DATABASE=<your_database>
    export SNOWFLAKE_TEST_SCHEMA=<your_schema>
    export SNOWFLAKE_TEST_WAREHOUSE=<your_warehouse>
    export SNOWFLAKE_TEST_ROLE=<your_role>

Run the maven ``verify`` goal.

.. code-block:: bash

    mvn -DjenkinsIT -DtestCategory=net.snowflake.client.category.<category> verify

where ``category`` is the class name under the package ``net.snowflake.client.category``.

Prepare new version
---------------

Run script passing desired version:

.. code-block:: bash

   ./prepareNewVersion.sh 3.100.42

Add SNAPSHOT suffix when necessary:

.. code-block:: bash

   ./prepareNewVersion.sh 3.100.42-SNAPSHOT

Test Class Naming Convention
----------------------------

The test cases are fallen into a couple of criteria:

- The unit test class names end with ``Test``. They run part of the JDBC build jobs.
- The integration test class names end with ``IT``. They run part of the ``verify`` maven goal along with the test category specified by the parameter ``testCategory`` having ``net.snowflake.client.category`` classes.
- The manual test class names end with ``Manual``. They don't run in the CI but you can run them manually.

Aside from the general test criteria, the test case class names ending with ``LatestIT`` run only with the latest JDBC driver.
The main motivation behind is to skip those tests for the old JDBC driver. See ``./TestOnly`` directory for further information.

Support
=============

Feel free to file an issue or submit a PR here for general cases. For official support, contact Snowflake support at:
https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge

Notes
----------

This driver support GCP regional endpoints starting from version 3.21.0. Please ensure that any workloads using through this driver below the version 3.21.0 do not require support for regional endpoints on GCP. If you have questions about this, please contact Snowflake Support.

The driver uses Rust library called sf_mini_core, you can find its source code [here](https://github.com/snowflakedb/universal-driver/tree/main/sf_mini_core)


================================================
FILE: SECURITY.md
================================================
# Security Policy


Please refer to the Snowflake [HackerOne program](https://hackerone.com/snowflake?type=team) for our security policies and for reporting any security vulnerabilities.

For other security related questions and concerns, please contact the Snowflake security team at security@snowflake.com

================================================
FILE: TestOnly/.gitignore
================================================
target/
.idea/


================================================
FILE: TestOnly/README.rst
================================================
Test Only Maven Project
***********************

This directory includes a maven project to run the Snowflake JDBC tests with the specified JDBC version.
The primary goal is to run the tests against the oldest support JDBC driver to ensure no regression.

Run Tests
==========

.. code-block:: bash

    mvn -DjenkinsIT -DtestCategory=net.snowflake.client.category.<category> verify

where ``category`` is the class name under the package ``net.snowflake.client.category``.

Update the JDBC version
=======================

Here are the steps updating the target JDBC driver version.

- Change the project version in ``pom.xml`` to the JDBC version that you want to run the tests.
- Locate ``maven-compiler-plugin`` plugin in ``pom.xml``
- Delete test case class files that should run along with the JDBC version.
- Check ``*LatestIT.java`` and move the test cases that should run along with the JDBC to the base classes.

================================================
FILE: TestOnly/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>net.snowflake</groupId>
  <artifactId>snowflake-jdbc-test</artifactId>
  <version>3.13.21</version>

  <name>snowflake-jdbc-test</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <arrow.version>17.0.0</arrow.version>
    <awaitility.version>4.2.0</awaitility.version>
    <jacksondatabind.version>2.17.2</jacksondatabind.version>
    <jacoco.version>0.8.4</jacoco.version>
    <jacoco.skip.instrument>true</jacoco.skip.instrument>
    <jna.version>5.13.0</jna.version>
    <junit.version>5.11.1</junit.version>
    <surefire.version>3.5.1</surefire.version>
    <mockito.version>3.5.6</mockito.version>
    <netty.version>4.1.133.Final</netty.version>
    <apache.httpclient.version>4.5.14</apache.httpclient.version>
    <bouncycastle.version>1.84</bouncycastle.version>
    <shadeBase>net.snowflake.client.jdbc.internal</shadeBase>
  </properties>

  <dependencies>
    <dependency> <!-- netty is not a direct dependency. It is used by arrow-vector -->
      <groupId>io.netty</groupId>
      <artifactId>netty-common</artifactId>
      <version>${netty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>${apache.httpclient.version}</version>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-buffer</artifactId>
      <version>${netty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>3.0.0-M1</version>

      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-params</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-suite</artifactId>
      <version>1.11.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-engine</artifactId>
      <version>1.11.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-runner</artifactId>
      <version>1.11.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-suite-api</artifactId>
      <version>1.11.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-suite-engine</artifactId>
      <version>1.11.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-launcher</artifactId>
      <version>1.11.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest</artifactId>
      <version>2.1</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-inline</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.awaitility</groupId>
      <artifactId>awaitility</artifactId>
      <version>${awaitility.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.4</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc</artifactId>
      <version>${project.version}</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-common</artifactId>
      <version>4.0.2-SNAPSHOT</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.2</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.10</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-text</artifactId>
      <version>1.10.0</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.2</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.2.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <version>1.28.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.minidev</groupId>
      <artifactId>json-smart-mini</artifactId>
      <version>1.0.6.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jacksondatabind.version}</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.arrow</groupId>
      <artifactId>arrow-vector</artifactId>
      <version>${arrow.version}</version>
      <exclusions>
        <exclusion> <!-- Exclude earlier version to avoid whitesource vulnerability. -->
          <groupId>io.netty</groupId>
          <artifactId>netty-common</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.netty</groupId>
          <artifactId>netty-buffer</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.arrow</groupId>
      <artifactId>arrow-memory-unsafe</artifactId>
      <version>${arrow.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.arrow</groupId>
      <artifactId>arrow-memory-netty-buffer-patch</artifactId>
      <version>${arrow.version}</version>
      <exclusions>
        <exclusion> <!-- Exclude earlier version to avoid whitesource vulnerability. -->
          <groupId>io.netty</groupId>
          <artifactId>netty-common</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.netty</groupId>
          <artifactId>netty-buffer</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
      <version>2.4.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <version>32.0.0-jre</version>
    </dependency>
    <!-- http://mvnrepository.com/artifact/net.java.dev.jna/jna -->
    <dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna</artifactId>
      <version>${jna.version}</version>
    </dependency>
    <!-- http://mvnrepository.com/artifact/net.java.dev.jna/jna-platform -->
    <dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna-platform</artifactId>
      <version>${jna.version}</version>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk18on</artifactId>
      <version>${bouncycastle.version}</version>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>${basedir}/../src/main/java</sourceDirectory>
    <testSourceDirectory>${basedir}/../src/test/java</testSourceDirectory>
    <resources>
      <resource>
        <directory>${basedir}/../src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>${basedir}/../src/test/resources</directory>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <excludeDefaultDirectories/>
          <filesets>
            <fileset>
              <directory>lib</directory>
                <includes>
                  <include>*.jar</include>
                </includes>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>3.0.0-M1</version>
        <executions>
          <execution>
            <id>install-arrow-memory</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${project.basedir}/../dependencies/arrow-memory-${arrow.version}.pom</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory</artifactId>
              <version>${arrow.version}</version>
              <packaging>pom</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-core</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${project.basedir}/../dependencies/arrow-memory-core-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory-core</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-unsafe</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${project.basedir}/../dependencies/arrow-memory-unsafe-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory-unsafe</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-memory-netty-buffer-patch</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${project.basedir}/../dependencies/arrow-memory-netty-buffer-patch-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-memory-netty</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-format</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${project.basedir}/../dependencies/arrow-format-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-format</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
          <execution>
            <id>install-arrow-vector</id>
            <phase>validate</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <file>${project.basedir}/../dependencies/arrow-vector-${arrow.version}.jar</file>
              <groupId>org.apache.arrow</groupId>
              <artifactId>arrow-vector</artifactId>
              <version>${arrow.version}</version>
              <packaging>jar</packaging>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <skipMain>true</skipMain>
          <source>8</source>
          <target>8</target>
          <testExcludes>
            <!-- arrow tests -->
            <exclude>**/net/snowflake/client/core/arrow/*.java</exclude>
            <exclude>**/ResultSetArrow*.java</exclude>
            <exclude>**/PreparedStatementArrow*IT.java</exclude>
            <exclude>**/SFArrowResultSetIT.java</exclude>
            <!-- structured types tests -->
            <exclude>**/structuredtypes/sqldata/*.java</exclude>
            <!-- Latest JDBC driver tests that cannot run with the oldest driver -->
            <exclude>**/*LatestIT.java</exclude>            <!-- Latest JDBC driver tests that cannot run with the oldest driver -->
            <exclude>**/*WiremockIT.java</exclude>
            <!-- Unit Tests -->
            <exclude>**/*Test.java</exclude>
            <!-- Manual Tests -->
            <exclude>**/*Manual.java</exclude>
            <!-- Telemetry API is new -->
            <exclude>**/TelemetryServiceIT.java</exclude>
            <exclude>**/TelemetryIT.java</exclude>
            <!-- OCSP implementation is new -->
            <exclude>**/SFTrustManagerIT.java</exclude>
            <!-- Logger improvement is new -->
            <exclude>**/SLF4JLoggerIT.java</exclude>
            <!-- Async support is new -->
            <exclude>**/ResultSetAsyncIT.java</exclude>
            <!-- ResultSet serialization is new -->
            <exclude>**/SnowflakeResultSetSerializable*IT.java</exclude>
            <!-- AuthTestHelper is a new class for authentication tests -->
            <exclude>**/AuthTestHelper.java</exclude>
          </testExcludes>
          <useIncrementalCompilation>false</useIncrementalCompilation>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit-platform</artifactId>
            <version>${surefire.version}</version>
          </dependency>
        </dependencies>
        <version>${surefire.version}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit-platform</artifactId>
            <version>${surefire.version}</version>
          </dependency>
        </dependencies>
        <version>${surefire.version}</version>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>jenkinsIT</id>
      <activation>
        <property>
          <name>jenkinsIT</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <failIfNoTests>false</failIfNoTests>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>verify</goal>
                </goals>
              </execution>
              <execution>
                <id>DefaultIT</id>
                <goals>
                  <goal>integration-test</goal>
                </goals>
              <configuration>
                <systemPropertyVariables>
                  <net.snowflake.jdbc.loggerImpl>net.snowflake.client.internal.log.JDK14Logger</net.snowflake.jdbc.loggerImpl>
                  <java.util.logging.config.file>${basedir}/src/test/resources/logging.properties</java.util.logging.config.file>
                </systemPropertyVariables>
                  <test>${integrationTestSuites}</test>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- collect code coverage -->
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco.version}</version>
            <executions>
              <execution>
                <id>pre-integration-test</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
                <configuration>
                  <destFile>target/jacoco-it.exec</destFile>
                </configuration>
              </execution>
              <execution>
                <id>post-integration-test</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
                <configuration>
                  <dataFile>target/jacoco-it.exec</dataFile>
                  <outputDirectory>target/jacoco-it</outputDirectory>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>${jacoco.skip.instrument}</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>


================================================
FILE: ci/_init.sh
================================================
#!/usr/local/bin/env bash
set -e

export PLATFORM=$(echo $(uname) | tr '[:upper:]' '[:lower:]')
export INTERNAL_REPO=artifactory.ci1.us-west-2.aws-dev.app.snowflake.com/internal-development-docker-drivers-local
if [[ -z "$GITHUB_ACTIONS" ]]; then
    # Use the internal Docker Registry
    export DOCKER_REGISTRY_NAME=$INTERNAL_REPO/snowflakedb
    export WORKSPACE=${WORKSPACE:-/tmp}
else
    # Use Docker Hub
    export DOCKER_REGISTRY_NAME=snowflakedb
    export WORKSPACE=$GITHUB_WORKSPACE
fi
mkdir -p $WORKSPACE

export DRIVER_NAME=jdbc

# Test Images
TEST_IMAGE_VERSION=1

declare -A TEST_IMAGE_NAMES=(
    [$DRIVER_NAME-rockylinux8-openjdk8]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux8-openjdk8-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux8-openjdk11]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux8-openjdk11-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux8-openjdk17]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux8-openjdk17-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux8-openjdk21]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux8-openjdk21-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux9-openjdk8]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux9-openjdk8-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux9-openjdk11]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux9-openjdk11-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux9-openjdk17]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux9-openjdk17-test:$TEST_IMAGE_VERSION
    [$DRIVER_NAME-rockylinux9-openjdk21]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-rockylinux9-openjdk21-test:$TEST_IMAGE_VERSION
)
export TEST_IMAGE_NAMES

declare -A TEST_IMAGE_DOCKERFILES=(
    [$DRIVER_NAME-rockylinux8-openjdk8]=jdbc-rockylinux8-openjdk-test
    [$DRIVER_NAME-rockylinux8-openjdk11]=jdbc-rockylinux8-openjdk-test
    [$DRIVER_NAME-rockylinux8-openjdk17]=jdbc-rockylinux8-openjdk-test
    [$DRIVER_NAME-rockylinux8-openjdk21]=jdbc-rockylinux8-openjdk-test
    [$DRIVER_NAME-rockylinux9-openjdk8]=jdbc-rockylinux-openjdk-test
    [$DRIVER_NAME-rockylinux9-openjdk11]=jdbc-rockylinux-openjdk-test
    [$DRIVER_NAME-rockylinux9-openjdk17]=jdbc-rockylinux-openjdk-test
    [$DRIVER_NAME-rockylinux9-openjdk21]=jdbc-rockylinux-openjdk-test
)

declare -A TEST_IMAGE_BUILD_ARGS=(
    [$DRIVER_NAME-rockylinux8-openjdk8]="--target jdbc-rockylinux8-openjdk8"
    [$DRIVER_NAME-rockylinux8-openjdk11]="--target jdbc-rockylinux8-openjdk11"
    [$DRIVER_NAME-rockylinux8-openjdk17]="--target jdbc-rockylinux8-openjdk17"
    [$DRIVER_NAME-rockylinux8-openjdk21]="--target jdbc-rockylinux8-openjdk21"
    [$DRIVER_NAME-rockylinux9-openjdk8]="--target jdbc-rockylinux-openjdk8"
    [$DRIVER_NAME-rockylinux9-openjdk11]="--target jdbc-rockylinux-openjdk11"
    [$DRIVER_NAME-rockylinux9-openjdk17]="--target jdbc-rockylinux-openjdk17"
    [$DRIVER_NAME-rockylinux9-openjdk21]="--target jdbc-rockylinux-openjdk21"
)



================================================
FILE: ci/build.sh
================================================
#!/usr/bin/env bash
set -e

#
# Build JDBC driver
#
set -o pipefail
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export WORKSPACE=${WORKSPACE:=/tmp}
$THIS_DIR/container/build_component.sh


================================================
FILE: ci/container/build_component.sh
================================================
#!/bin/bash -e
#
# Build JDBC driver
#
set -o pipefail
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
JDBC_ROOT=$(cd "${THIS_DIR}/../../" && pwd)

cd $JDBC_ROOT
rm -f lib/*.jar
mvn clean install -DskipTests --batch-mode --show-version

cd FIPS
rm -f lib/*.jar
mvn clean install -DskipTests -Dsurefire.argLine="-Djavax.net.debug=ssl:handshake" -Dfailsafe.argLine="-Djavax.net.debug=ssl:handshake" --batch-mode --show-version
$THIS_DIR/upload_artifact.sh


================================================
FILE: ci/container/change_snowflake_test_pwd.py
================================================
#!/usr/bin/env python
#
# Set a complex password for test user snowman
#

import os
import sys
import snowflake.connector

params = {
    'account': '',
    'user': os.getenv("SNOWFLAKE_TEST_USER"),
    'password': os.getenv("SNOWFLAKE_TEST_PASSWORD"),
    'database': os.getenv("SNOWFLAKE_TEST_DATABASE"),
    'role': os.getenv("SNOWFLAKE_TEST_ROLE"),
    'host': os.getenv("SNOWFLAKE_TEST_HOST"),
    'port': os.getenv("SNOWFLAKE_TEST_PORT"),
    'protocol': os.getenv("SNOWFLAKE_TEST_PROTOCOL"),
}

for account in ["testaccount", "s3testaccount", "azureaccount", "gcpaccount"]:
   params['account'] = account
   conn = snowflake.connector.connect(**params)
   conn.cursor().execute("use role accountadmin")
   cmd = "alter user set password = '{}'".format(os.getenv("SNOWFLAKE_TEST_PASSWORD_NEW"))
   print(cmd)
   conn.cursor().execute(cmd)
   conn.close()



================================================
FILE: ci/container/create_schema.py
================================================
#!/usr/bin/env python
#
# Create test schema
#
import os
import sys
import snowflake.connector

import sf_test_utils

test_schema = sf_test_utils.get_test_schema()
if not test_schema:
    sys.exit(2)

params = sf_test_utils.init_connection_params()

con = snowflake.connector.connect(**params)
con.cursor().execute("create or replace schema {0}".format(test_schema))

sys.exit(0)


================================================
FILE: ci/container/download_artifact.sh
================================================
#!/bin/bash -e
#
# Download Artifact
#
set -o pipefail
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
JDBC_ROOT=$(cd "${THIS_DIR}/../../" && pwd)

if [[ -z "$GITHUB_ACTIONS" ]] ;then
    export GIT_BRANCH=${GIT_BRANCH:-origin/$(git rev-parse --abbrev-ref HEAD)}

    BRANCH=$(basename ${GIT_BRANCH})

    # Place to hold downloaded library
    export LIB_DIR=$WORKSPACE/lib

    if [[ "$is_old_driver" != "true" ]]; then
        # Not Old Driver test
        mkdir -p $LIB_DIR
        pushd $LIB_DIR >& /dev/null
            base_stage=s3://sfc-eng-jenkins/repository/jdbc/${BRANCH}
            export GIT_COMMIT=${GIT_COMMIT:-$(aws s3 cp $base_stage/latest_commit -)}
            source_stage=$base_stage/${GIT_COMMIT}
            echo "[INFO] downloading ${source_stage}/"
            aws s3 cp --only-show-errors $source_stage/ . --recursive
        popd >& /dev/null
        mkdir -p /mnt/host/lib
        cp -p $LIB_DIR/*.jar /mnt/host/lib
    fi
else
    export GIT_BRANCH=origin/$(basename ${GITHUB_REF})
    export GIT_COMMIT=${GITHUB_SHA}
fi


================================================
FILE: ci/container/drop_schema.py
================================================
#!/usr/bin/env python
#
# Create test schema
#
import os
import sys
import snowflake.connector

import sf_test_utils

test_schema = sf_test_utils.get_test_schema()
if not test_schema:
    sys.exit(0)

params = sf_test_utils.init_connection_params()

con = snowflake.connector.connect(**params)
con.cursor().execute("drop schema if exists {0}".format(test_schema))

sys.exit(0)


================================================
FILE: ci/container/hang_webserver.py
================================================
#!/usr/bin/env python3
import sys
from http.server import BaseHTTPRequestHandler,HTTPServer
from socketserver import ThreadingMixIn
import threading
import time

class HTTPRequestHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        if self.path.startswith('/403'):
            self.send_response(403)
            self.send_header('Content-Type', 'text/plain')
            self.end_headers()
        elif self.path.startswith('/404'):
            self.send_response(404)
            self.send_header('Content-Type', 'text/plain')
            self.end_headers()
        elif self.path.startswith('/hang'):
            time.sleep(300)
            self.send_response(200, 'OK')
            self.send_header('Content-Type', 'text/plain')
            self.end_headers()
        else:
            self.send_response(200, 'OK')
            self.send_header('Content-Type', 'text/plain')
            self.end_headers()
    do_GET = do_POST

class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
  allow_reuse_address = True

  def shutdown(self):
    self.socket.close()
    HTTPServer.shutdown(self)

class SimpleHttpServer():
  def __init__(self, ip, port):
    self.server = ThreadedHTTPServer((ip,port), HTTPRequestHandler)

  def start(self):
    self.server_thread = threading.Thread(target=self.server.serve_forever)
    self.server_thread.daemon = True
    self.server_thread.start()

  def waitForThread(self):
    self.server_thread.join()

  def stop(self):
    self.server.shutdown()
    self.waitForThread()

if __name__=='__main__':
    if len(sys.argv) != 2:
        print("Usage: python3 {} PORT".format(sys.argv[0]))
        sys.exit(2)

    PORT = int(sys.argv[1])

    server = SimpleHttpServer('localhost', PORT)
    print('HTTP Server Running on PORT {}..........'.format(PORT))
    server.start
Download .txt
gitextract_690hkf8e/

├── .cursor/
│   └── skills/
│       └── graphite-pr-workflow/
│           └── SKILL.md
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── BUG_REPORT.md
│   │   └── FEATURE_REQUEST.md
│   ├── pull_request_template.md
│   ├── repo_meta.yaml
│   └── workflows/
│       ├── build-test.yml
│       ├── changelog.yml
│       ├── check-style.yml
│       ├── cla_bot.yml
│       ├── jira_close.yml
│       ├── jira_comment.yml
│       ├── jira_issue.yml
│       ├── parameters_aws.json.gpg
│       ├── parameters_aws_auth_tests.json.gpg
│       ├── parameters_azure.json.gpg
│       ├── parameters_gcp.json.gpg
│       ├── rsa_keys/
│       │   ├── rsa_key_jdbc_aws.p8.gpg
│       │   ├── rsa_key_jdbc_azure.p8.gpg
│       │   └── rsa_key_jdbc_gcp.p8.gpg
│       ├── semgrep.yml
│       ├── snyk-issue.yml
│       ├── snyk-pr.yml
│       └── snyk-scan.yml
├── .gitignore
├── .mvn/
│   └── wrapper/
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── .pre-commit-config.yaml
├── CHANGELOG.md
├── FIPS/
│   ├── .gitignore
│   ├── pom.xml
│   ├── public_pom.xml
│   ├── scripts/
│   │   └── check_content.sh
│   └── src/
│       └── test/
│           └── java/
│               └── net/
│                   └── snowflake/
│                       └── client/
│                           ├── AbstractDriverIT.java
│                           ├── DontRunOnGCP.java
│                           ├── DontRunOnGithubActions.java
│                           ├── TestUtil.java
│                           ├── category/
│                           │   └── FipsTestSuite.java
│                           └── jdbc/
│                               └── ConnectionFipsIT.java
├── Jenkinsfile
├── LICENSE.txt
├── README.rst
├── SECURITY.md
├── TestOnly/
│   ├── .gitignore
│   ├── README.rst
│   └── pom.xml
├── ci/
│   ├── _init.sh
│   ├── build.sh
│   ├── container/
│   │   ├── build_component.sh
│   │   ├── change_snowflake_test_pwd.py
│   │   ├── create_schema.py
│   │   ├── download_artifact.sh
│   │   ├── drop_schema.py
│   │   ├── hang_webserver.py
│   │   ├── sf_test_utils.py
│   │   ├── test_authentication.sh
│   │   ├── test_component.sh
│   │   └── upload_artifact.sh
│   ├── image/
│   │   ├── .gitignore
│   │   ├── Dockerfile.jdbc-rockylinux-openjdk-test
│   │   ├── Dockerfile.jdbc-rockylinux8-openjdk-test
│   │   ├── build.sh
│   │   ├── scripts/
│   │   │   ├── aws.sh
│   │   │   ├── entrypoint.sh
│   │   │   ├── git.sh
│   │   │   ├── npmrc
│   │   │   ├── pip.sh
│   │   │   └── python3.6.sh
│   │   └── update.sh
│   ├── log_analyze_setup.sh
│   ├── scripts/
│   │   ├── check_content.sh
│   │   ├── check_no_raw_system_calls.sh
│   │   ├── login_docker.sh
│   │   ├── set_git_info.sh
│   │   └── setup_gpg.sh
│   ├── test.sh
│   ├── test_authentication.sh
│   ├── test_mac.sh
│   ├── test_revocation.sh
│   ├── test_wif.sh
│   ├── test_windows.bat
│   └── wif/
│       ├── aws-lambda/
│       │   ├── README.md
│       │   ├── pom.xml
│       │   ├── src/
│       │   │   └── main/
│       │   │       └── java/
│       │   │           └── com/
│       │   │               └── snowflake/
│       │   │                   └── wif/
│       │   │                       └── aws/
│       │   │                           └── WifLambdaFunctionE2e.java
│       │   └── test.sh
│       ├── azure-function/
│       │   ├── Dockerfile
│       │   ├── README.md
│       │   ├── host.json
│       │   ├── pom.xml
│       │   ├── src/
│       │   │   └── main/
│       │   │       └── java/
│       │   │           └── com/
│       │   │               └── snowflake/
│       │   │                   └── wif/
│       │   │                       └── azure/
│       │   │                           └── WifAzureFunctionE2e.java
│       │   └── test.sh
│       ├── gcp-function/
│       │   ├── README.md
│       │   ├── pom.xml
│       │   ├── src/
│       │   │   └── main/
│       │   │       └── java/
│       │   │           └── com/
│       │   │               └── snowflake/
│       │   │                   └── wif/
│       │   │                       └── gcp/
│       │   │                           └── WifGcpFunctionE2e.java
│       │   └── test.sh
│       ├── parameters/
│       │   ├── parameters_wif.json.gpg
│       │   ├── parameters_wif_function.json.gpg
│       │   ├── rsa_gcp_function.gpg
│       │   ├── rsa_wif_aws_azure.gpg
│       │   └── rsa_wif_gcp.gpg
│       ├── shared/
│       │   └── com/
│       │       └── snowflake/
│       │           └── wif/
│       │               └── common/
│       │                   └── WifTestHelper.java
│       └── test_wif.sh
├── codecov/
│   ├── codecov
│   ├── codecov.SHA256SUM
│   ├── codecov.SHA256SUM.sig
│   └── codecov_aarch64
├── codecov.yml
├── dependencies/
│   ├── Readme.md
│   ├── arrow-format-17.0.0.jar
│   ├── arrow-memory-17.0.0.pom
│   ├── arrow-memory-core-17.0.0.jar
│   ├── arrow-memory-netty-buffer-patch-17.0.0.jar
│   ├── arrow-memory-unsafe-17.0.0.jar
│   ├── arrow-vector-17.0.0.jar
│   └── tika-core-2.4.1.jar
├── fat-jar-test-app/
│   ├── pom.xml
│   ├── run.sh
│   └── src/
│       └── main/
│           ├── fips-java/
│           │   └── net/
│           │       └── snowflake/
│           │           └── FipsInitializer.java
│           ├── java/
│           │   └── net/
│           │       └── snowflake/
│           │           └── FatJarTestApp.java
│           └── resources/
│               ├── logback.xml
│               ├── logging.properties
│               └── test.csv
├── linkage-checker-exclusion-rules.xml
├── mvnw
├── mvnw.cmd
├── output.json
├── parent-pom.xml
├── pom.xml
├── prepareNewVersion.sh
├── prober/
│   ├── Dockerfile
│   ├── Jenkinsfile.groovy
│   ├── entrypoint.sh
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── snowflake/
│                       └── client/
│                           └── jdbc/
│                               └── prober/
│                                   └── Prober.java
├── public_pom.xml
├── settings.json
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── net/
│   │   │       └── snowflake/
│   │   │           └── client/
│   │   │               ├── api/
│   │   │               │   ├── auth/
│   │   │               │   │   └── AuthenticatorType.java
│   │   │               │   ├── connection/
│   │   │               │   │   ├── DownloadStreamConfig.java
│   │   │               │   │   ├── SnowflakeConnection.java
│   │   │               │   │   ├── SnowflakeDatabaseMetaData.java
│   │   │               │   │   └── UploadStreamConfig.java
│   │   │               │   ├── datasource/
│   │   │               │   │   ├── SnowflakeDataSource.java
│   │   │               │   │   └── SnowflakeDataSourceFactory.java
│   │   │               │   ├── driver/
│   │   │               │   │   └── SnowflakeDriver.java
│   │   │               │   ├── exception/
│   │   │               │   │   ├── ErrorCode.java
│   │   │               │   │   └── SnowflakeSQLException.java
│   │   │               │   ├── http/
│   │   │               │   │   └── HttpHeadersCustomizer.java
│   │   │               │   ├── loader/
│   │   │               │   │   ├── LoadResultListener.java
│   │   │               │   │   ├── Loader.java
│   │   │               │   │   ├── LoaderFactory.java
│   │   │               │   │   ├── LoaderProperty.java
│   │   │               │   │   ├── LoadingError.java
│   │   │               │   │   └── Operation.java
│   │   │               │   ├── pooling/
│   │   │               │   │   ├── SnowflakeConnectionPoolDataSource.java
│   │   │               │   │   └── SnowflakeConnectionPoolDataSourceFactory.java
│   │   │               │   ├── resultset/
│   │   │               │   │   ├── FieldMetadata.java
│   │   │               │   │   ├── QueryStatus.java
│   │   │               │   │   ├── SnowflakeAsyncResultSet.java
│   │   │               │   │   ├── SnowflakeResultSet.java
│   │   │               │   │   ├── SnowflakeResultSetMetaData.java
│   │   │               │   │   ├── SnowflakeResultSetSerializable.java
│   │   │               │   │   └── SnowflakeType.java
│   │   │               │   └── statement/
│   │   │               │       ├── SnowflakePreparedStatement.java
│   │   │               │       └── SnowflakeStatement.java
│   │   │               ├── internal/
│   │   │               │   ├── api/
│   │   │               │   │   └── implementation/
│   │   │               │   │       ├── connection/
│   │   │               │   │       │   └── SnowflakeConnectionImpl.java
│   │   │               │   │       ├── datasource/
│   │   │               │   │       │   └── SnowflakeBasicDataSource.java
│   │   │               │   │       ├── metadata/
│   │   │               │   │       │   └── SnowflakeDatabaseMetaDataImpl.java
│   │   │               │   │       ├── pooling/
│   │   │               │   │       │   ├── LogicalConnection.java
│   │   │               │   │       │   ├── SnowflakeConnectionPoolDataSourceImpl.java
│   │   │               │   │       │   └── SnowflakePooledConnection.java
│   │   │               │   │       ├── resultset/
│   │   │               │   │       │   ├── FieldMetadataImpl.java
│   │   │               │   │       │   └── SnowflakeBaseResultSet.java
│   │   │               │   │       └── statement/
│   │   │               │   │           ├── SnowflakeCallableStatementImpl.java
│   │   │               │   │           ├── SnowflakePreparedStatementImpl.java
│   │   │               │   │           └── SnowflakeStatementImpl.java
│   │   │               │   ├── common/
│   │   │               │   │   └── core/
│   │   │               │   │       ├── SFBinary.java
│   │   │               │   │       └── SFBinaryFormat.java
│   │   │               │   ├── config/
│   │   │               │   │   ├── ConnectionParameters.java
│   │   │               │   │   ├── SFClientConfig.java
│   │   │               │   │   ├── SFClientConfigParser.java
│   │   │               │   │   └── SFConnectionConfigParser.java
│   │   │               │   ├── core/
│   │   │               │   │   ├── ArrowSqlInput.java
│   │   │               │   │   ├── AssertUtil.java
│   │   │               │   │   ├── AttributeEnhancingHttpRequestRetryHandler.java
│   │   │               │   │   ├── BaseSqlInput.java
│   │   │               │   │   ├── BasicEvent.java
│   │   │               │   │   ├── CachedCredentialType.java
│   │   │               │   │   ├── CancellationReason.java
│   │   │               │   │   ├── ChunkDownloader.java
│   │   │               │   │   ├── ColumnTypeHelper.java
│   │   │               │   │   ├── Constants.java
│   │   │               │   │   ├── CredentialManager.java
│   │   │               │   │   ├── DataConversionContext.java
│   │   │               │   │   ├── DefaultFileCacheManager.java
│   │   │               │   │   ├── DownloaderMetrics.java
│   │   │               │   │   ├── Event.java
│   │   │               │   │   ├── EventHandler.java
│   │   │               │   │   ├── EventUtil.java
│   │   │               │   │   ├── FieldSchemaCreator.java
│   │   │               │   │   ├── FileCacheManager.java
│   │   │               │   │   ├── FileCacheManagerBuilder.java
│   │   │               │   │   ├── FileCacheUtil.java
│   │   │               │   │   ├── FileTypeDetector.java
│   │   │               │   │   ├── FileUtil.java
│   │   │               │   │   ├── HeaderCustomizerHttpRequestInterceptor.java
│   │   │               │   │   ├── HeartbeatIntervalSelector.java
│   │   │               │   │   ├── HeartbeatRegistry.java
│   │   │               │   │   ├── HeartbeatThread.java
│   │   │               │   │   ├── HttpClientSettingsKey.java
│   │   │               │   │   ├── HttpExecutingContext.java
│   │   │               │   │   ├── HttpExecutingContextBuilder.java
│   │   │               │   │   ├── HttpProtocol.java
│   │   │               │   │   ├── HttpResponseContextDto.java
│   │   │               │   │   ├── HttpResponseWithHeaders.java
│   │   │               │   │   ├── HttpUtil.java
│   │   │               │   │   ├── JsonSqlInput.java
│   │   │               │   │   ├── JsonSqlOutput.java
│   │   │               │   │   ├── MetaDataOfBinds.java
│   │   │               │   │   ├── NoOpFileCacheManager.java
│   │   │               │   │   ├── OCSPMode.java
│   │   │               │   │   ├── OCSPTelemetryData.java
│   │   │               │   │   ├── ObjectMapperFactory.java
│   │   │               │   │   ├── OpaqueContextDTO.java
│   │   │               │   │   ├── ParameterBindingDTO.java
│   │   │               │   │   ├── PrivateLinkDetector.java
│   │   │               │   │   ├── QueryContextCache.java
│   │   │               │   │   ├── QueryContextDTO.java
│   │   │               │   │   ├── QueryContextEntryDTO.java
│   │   │               │   │   ├── QueryExecDTO.java
│   │   │               │   │   ├── QueryResultFormat.java
│   │   │               │   │   ├── ResultUtil.java
│   │   │               │   │   ├── SFArrowResultSet.java
│   │   │               │   │   ├── SFBaseResultSet.java
│   │   │               │   │   ├── SFBaseSession.java
│   │   │               │   │   ├── SFBaseStatement.java
│   │   │               │   │   ├── SFBasicCrlTrustManager.java
│   │   │               │   │   ├── SFChildResult.java
│   │   │               │   │   ├── SFCrlTrustManagerFactory.java
│   │   │               │   │   ├── SFException.java
│   │   │               │   │   ├── SFExtendedCrlTrustManager.java
│   │   │               │   │   ├── SFFixedViewResultSet.java
│   │   │               │   │   ├── SFJsonResultSet.java
│   │   │               │   │   ├── SFLoginInput.java
│   │   │               │   │   ├── SFLoginOutput.java
│   │   │               │   │   ├── SFOCSPException.java
│   │   │               │   │   ├── SFOauthLoginInput.java
│   │   │               │   │   ├── SFPreparedStatementMetaData.java
│   │   │               │   │   ├── SFPubKeysInternal.java
│   │   │               │   │   ├── SFResultSet.java
│   │   │               │   │   ├── SFResultSetFactory.java
│   │   │               │   │   ├── SFResultSetMetaData.java
│   │   │               │   │   ├── SFSSLConnectionSocketFactory.java
│   │   │               │   │   ├── SFSession.java
│   │   │               │   │   ├── SFSessionProperty.java
│   │   │               │   │   ├── SFSqlInput.java
│   │   │               │   │   ├── SFStatement.java
│   │   │               │   │   ├── SFStatementType.java
│   │   │               │   │   ├── SFTrustManager.java
│   │   │               │   │   ├── SdkProxyRoutePlanner.java
│   │   │               │   │   ├── SecureStorageAppleManager.java
│   │   │               │   │   ├── SecureStorageLinuxManager.java
│   │   │               │   │   ├── SecureStorageManager.java
│   │   │               │   │   ├── SecureStorageWindowsManager.java
│   │   │               │   │   ├── SecurityUtil.java
│   │   │               │   │   ├── SessionUtil.java
│   │   │               │   │   ├── SessionUtilExternalBrowser.java
│   │   │               │   │   ├── SessionUtilKeyPair.java
│   │   │               │   │   ├── SfSqlArray.java
│   │   │               │   │   ├── SfTimestampUtil.java
│   │   │               │   │   ├── SnowflakeMutableProxyRoutePlanner.java
│   │   │               │   │   ├── SpcsTokenReader.java
│   │   │               │   │   ├── StmtUtil.java
│   │   │               │   │   ├── SystemUtil.java
│   │   │               │   │   ├── URLUtil.java
│   │   │               │   │   ├── UUIDUtils.java
│   │   │               │   │   ├── arrow/
│   │   │               │   │   │   ├── AbstractArrowVectorConverter.java
│   │   │               │   │   │   ├── ArrayConverter.java
│   │   │               │   │   │   ├── ArrowResultChunkIndexSorter.java
│   │   │               │   │   │   ├── ArrowResultUtil.java
│   │   │               │   │   │   ├── ArrowVectorConverter.java
│   │   │               │   │   │   ├── ArrowVectorConverterUtil.java
│   │   │               │   │   │   ├── BigIntToFixedConverter.java
│   │   │               │   │   │   ├── BigIntToScaledFixedConverter.java
│   │   │               │   │   │   ├── BigIntToTimeConverter.java
│   │   │               │   │   │   ├── BigIntToTimestampLTZConverter.java
│   │   │               │   │   │   ├── BigIntToTimestampNTZConverter.java
│   │   │               │   │   │   ├── BitToBooleanConverter.java
│   │   │               │   │   │   ├── DateConverter.java
│   │   │               │   │   │   ├── DecfloatToDecimalConverter.java
│   │   │               │   │   │   ├── DecimalToScaledFixedConverter.java
│   │   │               │   │   │   ├── DoubleToRealConverter.java
│   │   │               │   │   │   ├── IntToFixedConverter.java
│   │   │               │   │   │   ├── IntToScaledFixedConverter.java
│   │   │               │   │   │   ├── IntToTimeConverter.java
│   │   │               │   │   │   ├── IntervalDayTimeToDurationConverter.java
│   │   │               │   │   │   ├── IntervalYearMonthToPeriodConverter.java
│   │   │               │   │   │   ├── MapConverter.java
│   │   │               │   │   │   ├── SmallIntToFixedConverter.java
│   │   │               │   │   │   ├── SmallIntToScaledFixedConverter.java
│   │   │               │   │   │   ├── StructConverter.java
│   │   │               │   │   │   ├── StructObjectWrapper.java
│   │   │               │   │   │   ├── StructuredTypeDateTimeConverter.java
│   │   │               │   │   │   ├── ThreeFieldStructToTimestampTZConverter.java
│   │   │               │   │   │   ├── TinyIntToFixedConverter.java
│   │   │               │   │   │   ├── TinyIntToScaledFixedConverter.java
│   │   │               │   │   │   ├── TwoFieldStructToTimestampLTZConverter.java
│   │   │               │   │   │   ├── TwoFieldStructToTimestampNTZConverter.java
│   │   │               │   │   │   ├── TwoFieldStructToTimestampTZConverter.java
│   │   │               │   │   │   ├── VarBinaryToBinaryConverter.java
│   │   │               │   │   │   ├── VarCharConverter.java
│   │   │               │   │   │   ├── VectorTypeConverter.java
│   │   │               │   │   │   └── tostringhelpers/
│   │   │               │   │   │       ├── ArrowArrayStringRepresentationBuilder.java
│   │   │               │   │   │       ├── ArrowObjectStringRepresentationBuilder.java
│   │   │               │   │   │       └── ArrowStringRepresentationBuilderBase.java
│   │   │               │   │   ├── auth/
│   │   │               │   │   │   ├── ClientAuthnDTO.java
│   │   │               │   │   │   ├── ClientAuthnParameter.java
│   │   │               │   │   │   ├── oauth/
│   │   │               │   │   │   │   ├── AccessTokenProvider.java
│   │   │               │   │   │   │   ├── AuthorizationCodeRedirectRequestHandler.java
│   │   │               │   │   │   │   ├── DPoPUtil.java
│   │   │               │   │   │   │   ├── OAuthAccessTokenForRefreshTokenProvider.java
│   │   │               │   │   │   │   ├── OAuthAccessTokenProviderFactory.java
│   │   │               │   │   │   │   ├── OAuthAuthorizationCodeAccessTokenProvider.java
│   │   │               │   │   │   │   ├── OAuthClientCredentialsAccessTokenProvider.java
│   │   │               │   │   │   │   ├── OAuthUtil.java
│   │   │               │   │   │   │   ├── RandomStateProvider.java
│   │   │               │   │   │   │   ├── StateProvider.java
│   │   │               │   │   │   │   └── TokenResponseDTO.java
│   │   │               │   │   │   └── wif/
│   │   │               │   │   │       ├── AwsAttestationService.java
│   │   │               │   │   │       ├── AwsIdentityAttestationCreator.java
│   │   │               │   │   │       ├── AzureAttestationService.java
│   │   │               │   │   │       ├── AzureIdentityAttestationCreator.java
│   │   │               │   │   │       ├── GcpIdentityAttestationCreator.java
│   │   │               │   │   │       ├── OidcIdentityAttestationCreator.java
│   │   │               │   │   │       ├── PlatformDetectionUtil.java
│   │   │               │   │   │       ├── WorkloadIdentityAttestation.java
│   │   │               │   │   │       ├── WorkloadIdentityAttestationCreator.java
│   │   │               │   │   │       ├── WorkloadIdentityAttestationProvider.java
│   │   │               │   │   │       ├── WorkloadIdentityProviderType.java
│   │   │               │   │   │       └── WorkloadIdentityUtil.java
│   │   │               │   │   ├── bind/
│   │   │               │   │   │   ├── BindException.java
│   │   │               │   │   │   └── BindUploader.java
│   │   │               │   │   ├── crl/
│   │   │               │   │   │   ├── CRLCache.java
│   │   │               │   │   │   ├── CRLCacheConfig.java
│   │   │               │   │   │   ├── CRLCacheEntry.java
│   │   │               │   │   │   ├── CRLCacheManager.java
│   │   │               │   │   │   ├── CRLFileCache.java
│   │   │               │   │   │   ├── CRLInMemoryCache.java
│   │   │               │   │   │   ├── CRLValidationResult.java
│   │   │               │   │   │   ├── CRLValidationUtils.java
│   │   │               │   │   │   ├── CRLValidator.java
│   │   │               │   │   │   ├── CertRevocationCheckMode.java
│   │   │               │   │   │   ├── CertificateValidationResult.java
│   │   │               │   │   │   ├── CrlRevocationManager.java
│   │   │               │   │   │   ├── NoopCRLCache.java
│   │   │               │   │   │   └── VerifiedCertPathBuilder.java
│   │   │               │   │   ├── json/
│   │   │               │   │   │   ├── BooleanConverter.java
│   │   │               │   │   │   ├── BytesConverter.java
│   │   │               │   │   │   ├── Converters.java
│   │   │               │   │   │   ├── DateTimeConverter.java
│   │   │               │   │   │   ├── NumberConverter.java
│   │   │               │   │   │   └── StringConverter.java
│   │   │               │   │   ├── minicore/
│   │   │               │   │   │   ├── Minicore.java
│   │   │               │   │   │   ├── MinicoreLibrary.java
│   │   │               │   │   │   ├── MinicoreLoadError.java
│   │   │               │   │   │   ├── MinicoreLoadLogger.java
│   │   │               │   │   │   ├── MinicoreLoadResult.java
│   │   │               │   │   │   ├── MinicoreLoader.java
│   │   │               │   │   │   ├── MinicorePlatform.java
│   │   │               │   │   │   └── MinicoreTelemetry.java
│   │   │               │   │   └── structs/
│   │   │               │   │       ├── SQLDataCreationHelper.java
│   │   │               │   │       └── SnowflakeObjectTypeFactories.java
│   │   │               │   ├── driver/
│   │   │               │   │   ├── AutoConfigurationHelper.java
│   │   │               │   │   ├── ConnectionFactory.java
│   │   │               │   │   ├── DriverInitializer.java
│   │   │               │   │   ├── DriverVersion.java
│   │   │               │   │   └── DriverVersionProperties.java
│   │   │               │   ├── exception/
│   │   │               │   │   └── SnowflakeSQLLoggedException.java
│   │   │               │   ├── jdbc/
│   │   │               │   │   ├── ArrowResultChunk.java
│   │   │               │   │   ├── BindingParameterMetadata.java
│   │   │               │   │   ├── ChunkDownloadContext.java
│   │   │               │   │   ├── ColumnTypeInfo.java
│   │   │               │   │   ├── CompressedStreamFactory.java
│   │   │               │   │   ├── DBMetadataResultSetMetadata.java
│   │   │               │   │   ├── DefaultResultStreamProvider.java
│   │   │               │   │   ├── DefaultSFConnectionHandler.java
│   │   │               │   │   ├── EnvironmentVariables.java
│   │   │               │   │   ├── FileBackedOutputStream.java
│   │   │               │   │   ├── JsonResultChunk.java
│   │   │               │   │   ├── MatDesc.java
│   │   │               │   │   ├── OCSPErrorCode.java
│   │   │               │   │   ├── QueryIdValidator.java
│   │   │               │   │   ├── RestRequest.java
│   │   │               │   │   ├── ResultJsonParserV2.java
│   │   │               │   │   ├── ResultStreamProvider.java
│   │   │               │   │   ├── RetryContext.java
│   │   │               │   │   ├── RetryContextManager.java
│   │   │               │   │   ├── SFAsyncResultSet.java
│   │   │               │   │   ├── SFBaseFileTransferAgent.java
│   │   │               │   │   ├── SFConnectionHandler.java
│   │   │               │   │   ├── SnowflakeChunkDownloader.java
│   │   │               │   │   ├── SnowflakeClob.java
│   │   │               │   │   ├── SnowflakeColumn.java
│   │   │               │   │   ├── SnowflakeColumnMetadata.java
│   │   │               │   │   ├── SnowflakeConnectString.java
│   │   │               │   │   ├── SnowflakeDatabaseMetaDataQueryResultSet.java
│   │   │               │   │   ├── SnowflakeDatabaseMetaDataResultSet.java
│   │   │               │   │   ├── SnowflakeDateWithTimezone.java
│   │   │               │   │   ├── SnowflakeFileTransferAgent.java
│   │   │               │   │   ├── SnowflakeFileTransferConfig.java
│   │   │               │   │   ├── SnowflakeFileTransferMetadata.java
│   │   │               │   │   ├── SnowflakeFileTransferMetadataV1.java
│   │   │               │   │   ├── SnowflakeFixedView.java
│   │   │               │   │   ├── SnowflakeLoggedFeatureNotSupportedException.java
│   │   │               │   │   ├── SnowflakeParameterMetadata.java
│   │   │               │   │   ├── SnowflakeReauthenticationRequest.java
│   │   │               │   │   ├── SnowflakeResultChunk.java
│   │   │               │   │   ├── SnowflakeResultSetMetaDataV1.java
│   │   │               │   │   ├── SnowflakeResultSetSerializableV1.java
│   │   │               │   │   ├── SnowflakeResultSetV1.java
│   │   │               │   │   ├── SnowflakeRichResultSetSerializableV1.java
│   │   │               │   │   ├── SnowflakeSQLExceptionWithRetryContext.java
│   │   │               │   │   ├── SnowflakeSimulatedUploadFailure.java
│   │   │               │   │   ├── SnowflakeTimeWithTimezone.java
│   │   │               │   │   ├── SnowflakeTimestampWithTimezone.java
│   │   │               │   │   ├── SnowflakeUseDPoPNonceException.java
│   │   │               │   │   ├── SnowflakeUtil.java
│   │   │               │   │   ├── cloud/
│   │   │               │   │   │   └── storage/
│   │   │               │   │   │       ├── AwsSdkGCPSigner.java
│   │   │               │   │   │       ├── AzureObjectSummariesIterator.java
│   │   │               │   │   │       ├── CloudStorageProxyFactory.java
│   │   │               │   │   │       ├── CommonObjectMetadata.java
│   │   │               │   │   │       ├── EncryptionProvider.java
│   │   │               │   │   │       ├── GCSAccessStrategy.java
│   │   │               │   │   │       ├── GCSAccessStrategyAwsSdk.java
│   │   │               │   │   │       ├── GCSDefaultAccessStrategy.java
│   │   │               │   │   │       ├── GcmEncryptionProvider.java
│   │   │               │   │   │       ├── GcsObjectSummariesIterator.java
│   │   │               │   │   │       ├── ProxySettings.java
│   │   │               │   │   │       ├── QueryIdHelper.java
│   │   │               │   │   │       ├── S3ErrorHandler.java
│   │   │               │   │   │       ├── S3ObjectMetadata.java
│   │   │               │   │   │       ├── S3ObjectSummariesIterator.java
│   │   │               │   │   │       ├── SnowflakeAzureClient.java
│   │   │               │   │   │       ├── SnowflakeGCSClient.java
│   │   │               │   │   │       ├── SnowflakeS3Client.java
│   │   │               │   │   │       ├── SnowflakeStorageClient.java
│   │   │               │   │   │       ├── StageInfo.java
│   │   │               │   │   │       ├── StorageClientFactory.java
│   │   │               │   │   │       ├── StorageHelper.java
│   │   │               │   │   │       ├── StorageObjectMetadata.java
│   │   │               │   │   │       ├── StorageObjectSummary.java
│   │   │               │   │   │       ├── StorageObjectSummaryCollection.java
│   │   │               │   │   │       └── StorageProviderException.java
│   │   │               │   │   ├── diagnostic/
│   │   │               │   │   │   ├── CertificateDiagnosticCheck.java
│   │   │               │   │   │   ├── DiagnosticCheck.java
│   │   │               │   │   │   ├── DiagnosticContext.java
│   │   │               │   │   │   ├── DiagnosticTrustManager.java
│   │   │               │   │   │   ├── DnsDiagnosticCheck.java
│   │   │               │   │   │   ├── HttpAndHttpsDiagnosticCheck.java
│   │   │               │   │   │   ├── ProxyConfig.java
│   │   │               │   │   │   ├── SnowflakeEndpoint.java
│   │   │               │   │   │   └── TcpDiagnosticCheck.java
│   │   │               │   │   ├── telemetry/
│   │   │               │   │   │   ├── CSVMetricsExporter.java
│   │   │               │   │   │   ├── ExecTimeTelemetryData.java
│   │   │               │   │   │   ├── InternalApiTelemetryTracker.java
│   │   │               │   │   │   ├── NoOpTelemetryClient.java
│   │   │               │   │   │   ├── PreSessionTelemetryClient.java
│   │   │               │   │   │   ├── RevocationCheckTelemetryData.java
│   │   │               │   │   │   ├── SqlExceptionTelemetryHandler.java
│   │   │               │   │   │   ├── Telemetry.java
│   │   │               │   │   │   ├── TelemetryClient.java
│   │   │               │   │   │   ├── TelemetryData.java
│   │   │               │   │   │   ├── TelemetryField.java
│   │   │               │   │   │   └── TelemetryUtil.java
│   │   │               │   │   ├── telemetryOOB/
│   │   │               │   │   │   ├── TelemetryEvent.java
│   │   │               │   │   │   ├── TelemetryService.java
│   │   │               │   │   │   └── TelemetryThreadPool.java
│   │   │               │   │   └── util/
│   │   │               │   │       ├── DriverUtil.java
│   │   │               │   │       ├── SnowflakeTypeHelper.java
│   │   │               │   │       └── SnowflakeTypeUtil.java
│   │   │               │   ├── loader/
│   │   │               │   │   ├── BufferStage.java
│   │   │               │   │   ├── FileUploader.java
│   │   │               │   │   ├── OnError.java
│   │   │               │   │   ├── ProcessQueue.java
│   │   │               │   │   ├── PutQueue.java
│   │   │               │   │   ├── StreamLoader.java
│   │   │               │   │   └── Utils.java
│   │   │               │   ├── log/
│   │   │               │   │   ├── ArgSupplier.java
│   │   │               │   │   ├── CommonsLoggingWrapper.java
│   │   │               │   │   ├── CommonsLoggingWrapperMode.java
│   │   │               │   │   ├── JDK14JCLWrapper.java
│   │   │               │   │   ├── JDK14Logger.java
│   │   │               │   │   ├── SFFormatter.java
│   │   │               │   │   ├── SFLogLevel.java
│   │   │               │   │   ├── SFLogger.java
│   │   │               │   │   ├── SFLoggerFactory.java
│   │   │               │   │   ├── SFLoggerUtil.java
│   │   │               │   │   ├── SFToJavaLogMapper.java
│   │   │               │   │   ├── SLF4JJCLWrapper.java
│   │   │               │   │   ├── SLF4JLogger.java
│   │   │               │   │   ├── StdErrOutThresholdAwareConsoleHandler.java
│   │   │               │   │   ├── StdOutConsoleHandler.java
│   │   │               │   │   └── UnknownJavaUtilLoggingLevelException.java
│   │   │               │   └── util/
│   │   │               │       ├── Converter.java
│   │   │               │       ├── DecorrelatedJitterBackoff.java
│   │   │               │       ├── EnvironmentProvider.java
│   │   │               │       ├── LibcDetails.java
│   │   │               │       ├── LibcInfo.java
│   │   │               │       ├── MaskedException.java
│   │   │               │       ├── OsReleaseDetails.java
│   │   │               │       ├── Platform.java
│   │   │               │       ├── PlatformDetector.java
│   │   │               │       ├── SFPair.java
│   │   │               │       ├── SFTimestamp.java
│   │   │               │       ├── SecretDetector.java
│   │   │               │       ├── SnowflakeEnvironmentProvider.java
│   │   │               │       ├── Stopwatch.java
│   │   │               │       ├── ThrowingBiCallable.java
│   │   │               │       ├── ThrowingBiFunction.java
│   │   │               │       ├── ThrowingCallable.java
│   │   │               │       ├── ThrowingFunction.java
│   │   │               │       ├── ThrowingTriCallable.java
│   │   │               │       ├── ThrowingTriFunction.java
│   │   │               │       ├── TimeMeasurement.java
│   │   │               │       └── VariableTypeArray.java
│   │   │               └── jdbc/
│   │   │                   └── SnowflakeDriver.java
│   │   ├── java-fat-jar/
│   │   │   └── net/
│   │   │       └── snowflake/
│   │   │           └── client/
│   │   │               └── internal/
│   │   │                   └── log/
│   │   │                       ├── SFBridgeLogger.java
│   │   │                       ├── SFBridgeLoggerFactory.java
│   │   │                       └── SFBridgeServiceProvider.java
│   │   ├── javadoc/
│   │   │   ├── licenses.html
│   │   │   └── overview.html
│   │   ├── resources/
│   │   │   ├── META-INF/
│   │   │   │   ├── com.boomi.Dependencies
│   │   │   │   └── services/
│   │   │   │       ├── java.nio.file.spi.FileTypeDetector
│   │   │   │       └── java.sql.Driver
│   │   │   └── net/
│   │   │       └── snowflake/
│   │   │           └── client/
│   │   │               └── jdbc/
│   │   │                   ├── jdbc_error_messages.properties
│   │   │                   ├── jdbc_error_messages_fr.properties
│   │   │                   └── version.properties
│   │   └── resources-fat-jar/
│   │       └── META-INF/
│   │           └── services/
│   │               └── org.slf4j.spi.SLF4JServiceProvider
│   └── test/
│       ├── java/
│       │   ├── com/
│       │   │   └── snowflake/
│       │   │       └── client/
│       │   │           └── jdbc/
│       │   │               └── SnowflakeDriverIT.java
│       │   └── net/
│       │       └── snowflake/
│       │           └── client/
│       │               ├── .gitignore
│       │               ├── AbstractDriverIT.java
│       │               ├── AssumptionUtils.java
│       │               ├── SystemPropertyOverrider.java
│       │               ├── TestUtil.java
│       │               ├── ThrowingConsumer.java
│       │               ├── ThrowingRunnable.java
│       │               ├── annotations/
│       │               │   ├── DontRunOnGithubActions.java
│       │               │   ├── DontRunOnJava21.java
│       │               │   ├── DontRunOnJava8.java
│       │               │   ├── DontRunOnJenkins.java
│       │               │   ├── DontRunOnTestaccount.java
│       │               │   ├── DontRunOnThinJar.java
│       │               │   ├── DontRunOnWindows.java
│       │               │   ├── RunOnAWS.java
│       │               │   ├── RunOnAzure.java
│       │               │   ├── RunOnGCP.java
│       │               │   ├── RunOnGithubActionsNotMac.java
│       │               │   ├── RunOnLinux.java
│       │               │   ├── RunOnLinuxOrMac.java
│       │               │   ├── RunOnMac.java
│       │               │   ├── RunOnTestaccountNotOnGithubActions.java
│       │               │   ├── RunOnWindows.java
│       │               │   └── RunOnWindowsOrMac.java
│       │               ├── api/
│       │               │   ├── driver/
│       │               │   │   └── SnowflakeDriverTest.java
│       │               │   ├── exception/
│       │               │   │   └── SqlFeatureNotSupportedTelemetryTest.java
│       │               │   └── pooling/
│       │               │       ├── LogicalConnectionAlreadyClosedLatestIT.java
│       │               │       └── LogicalConnectionFeatureNotSupportedLatestIT.java
│       │               ├── authentication/
│       │               │   ├── AuthConnectionParameters.java
│       │               │   ├── AuthTestHelper.java
│       │               │   ├── ExternalBrowserLatestIT.java
│       │               │   ├── IdTokenLatestIT.java
│       │               │   ├── MFALatestIT.java
│       │               │   ├── OauthLatestIT.java
│       │               │   ├── OauthOktaAuthorizationCodeLatestIT.java
│       │               │   ├── OauthOktaClientCredentialsLatestIT.java
│       │               │   ├── OauthSnowflakeAuthorizationCodeLatestIT.java
│       │               │   ├── OauthSnowflakeAuthorizationCodeWildcardsLatestIT.java
│       │               │   ├── OktaAuthLatestIT.java
│       │               │   └── PATLatestIT.java
│       │               ├── category/
│       │               │   └── TestTags.java
│       │               ├── internal/
│       │               │   ├── api/
│       │               │   │   └── implementation/
│       │               │   │       ├── metadata/
│       │               │   │       │   └── SnowflakeDatabaseMetaDataImplColumnSizeTest.java
│       │               │   │       ├── pooling/
│       │               │   │       │   ├── ConnectionPoolingDataSourceIT.java
│       │               │   │       │   └── LogicalConnectionLatestIT.java
│       │               │   │       └── statement/
│       │               │   │           └── SnowflakeStatementImplCopyResultSetTest.java
│       │               │   ├── config/
│       │               │   │   ├── ConnectionAutoUrlParserTest.java
│       │               │   │   ├── SFClientConfigParserTest.java
│       │               │   │   ├── SFConnectionConfigParserPermissionTest.java
│       │               │   │   ├── SFConnectionConfigParserTest.java
│       │               │   │   └── SFPermissionsTest.java
│       │               │   ├── core/
│       │               │   │   ├── AttributeEnhancingHttpRequestRetryHandlerTest.java
│       │               │   │   ├── CertificateChainTrustValidationTestLatestIT.java
│       │               │   │   ├── CoreUtilsMiscellaneousTest.java
│       │               │   │   ├── CredentialManagerTest.java
│       │               │   │   ├── EventHandlerTest.java
│       │               │   │   ├── EventTest.java
│       │               │   │   ├── FileCacheManagerDefaultDirTest.java
│       │               │   │   ├── FileCacheManagerTest.java
│       │               │   │   ├── HeaderCustomizerHttpRequestInterceptorTest.java
│       │               │   │   ├── HeartbeatIntervalSelectorTest.java
│       │               │   │   ├── HeartbeatRegistryTest.java
│       │               │   │   ├── HeartbeatThreadTest.java
│       │               │   │   ├── HttpUtilLatestIT.java
│       │               │   │   ├── HttpUtilTest.java
│       │               │   │   ├── HttpUtilWiremockLatestIT.java
│       │               │   │   ├── MinicoreTelemetryWiremockIT.java
│       │               │   │   ├── OAuthAuthorizationCodeFlowLatestIT.java
│       │               │   │   ├── OAuthClientCredentialsFlowLatestIT.java
│       │               │   │   ├── OAuthLegacyFlowLatestIT.java
│       │               │   │   ├── OAuthTokenCacheLatestIT.java
│       │               │   │   ├── OCSPCacheServerTest.java
│       │               │   │   ├── ObjectMapperTest.java
│       │               │   │   ├── PrivateLinkDetectorTest.java
│       │               │   │   ├── ProgrammaticAccessTokenAuthFlowLatestIT.java
│       │               │   │   ├── QueryContextCacheTest.java
│       │               │   │   ├── QueryContextEntryDTOTest.java
│       │               │   │   ├── SFArrowResultSetIT.java
│       │               │   │   ├── SFCrlTrustManagerDelegationTest.java
│       │               │   │   ├── SFCrlTrustManagerFactoryTest.java
│       │               │   │   ├── SFCrlTrustManagerLatestIT.java
│       │               │   │   ├── SFExtendedCrlTrustManagerDelegationTest.java
│       │               │   │   ├── SFLoginInputTest.java
│       │               │   │   ├── SFSSLConnectionSocketFactoryTest.java
│       │               │   │   ├── SFSessionPropertyTest.java
│       │               │   │   ├── SFStatementTest.java
│       │               │   │   ├── SFTrustManagerIT.java
│       │               │   │   ├── SFTrustManagerMockitoMockLatestIT.java
│       │               │   │   ├── SFTrustManagerOcspCachePoisoningTest.java
│       │               │   │   ├── SFTrustManagerProxyWiremockIT.java
│       │               │   │   ├── SFTrustManagerTest.java
│       │               │   │   ├── SQLInputOutputTest.java
│       │               │   │   ├── SecureStorageManagerTest.java
│       │               │   │   ├── SessionUtilExternalBrowserTest.java
│       │               │   │   ├── SessionUtilKeyPairTest.java
│       │               │   │   ├── SessionUtilLatestIT.java
│       │               │   │   ├── SessionUtilTest.java
│       │               │   │   ├── SessionUtilWiremockIT.java
│       │               │   │   ├── SnowflakeMFACacheTest.java
│       │               │   │   ├── SpcsTokenReaderTest.java
│       │               │   │   ├── SqlInputTimestampUtilTest.java
│       │               │   │   ├── StmtUtilTest.java
│       │               │   │   ├── URLUtilTest.java
│       │               │   │   ├── arrow/
│       │               │   │   │   ├── ArrowResultUtilTest.java
│       │               │   │   │   ├── BaseConverterTest.java
│       │               │   │   │   ├── BigIntToFixedConverterTest.java
│       │               │   │   │   ├── BigIntToTimeConverterTest.java
│       │               │   │   │   ├── BigIntToTimestampLTZConverterTest.java
│       │               │   │   │   ├── BigIntToTimestampNTZConverterTest.java
│       │               │   │   │   ├── BitToBooleanConverterTest.java
│       │               │   │   │   ├── DateConverterTest.java
│       │               │   │   │   ├── DoubleToRealConverterTest.java
│       │               │   │   │   ├── IntToFixedConverterTest.java
│       │               │   │   │   ├── IntToTimeConverterTest.java
│       │               │   │   │   ├── SmallIntToFixedConverterTest.java
│       │               │   │   │   ├── ThreeFieldStructToTimestampTZConverterTest.java
│       │               │   │   │   ├── TinyIntToFixedConverterTest.java
│       │               │   │   │   ├── TwoFieldStructToTimestampLTZConverterTest.java
│       │               │   │   │   ├── TwoFieldStructToTimestampNTZConverterTest.java
│       │               │   │   │   ├── TwoFieldStructToTimestampTZConverterTest.java
│       │               │   │   │   ├── VarBinaryToBinaryConverterTest.java
│       │               │   │   │   └── VarCharConverterTest.java
│       │               │   │   ├── auth/
│       │               │   │   │   ├── oauth/
│       │               │   │   │   │   ├── AuthorizationCodeRedirectRequestHandlerTest.java
│       │               │   │   │   │   ├── OAuthAccessTokenProviderFactoryTest.java
│       │               │   │   │   │   ├── OAuthUtilTest.java
│       │               │   │   │   │   ├── RandomStateProviderTest.java
│       │               │   │   │   │   └── TokenResponseDTOTest.java
│       │               │   │   │   └── wif/
│       │               │   │   │       ├── AwsIdentityAttestationCreatorTest.java
│       │               │   │   │       ├── AzureIdentityAttestationCreatorLatestIT.java
│       │               │   │   │       ├── GcpIdentityAttestationCreatorLatestIT.java
│       │               │   │   │       ├── OidcIdentityAttestationCreatorTest.java
│       │               │   │   │       ├── PlatformDetectionUtilTest.java
│       │               │   │   │       └── WorkloadIdentityAttestationProviderTest.java
│       │               │   │   ├── bind/
│       │               │   │   │   └── BindExceptionTest.java
│       │               │   │   ├── crl/
│       │               │   │   │   ├── CRLCacheManagerLatestIT.java
│       │               │   │   │   ├── CRLCacheManagerTest.java
│       │               │   │   │   ├── CRLFileCacheTest.java
│       │               │   │   │   ├── CRLInMemoryCacheTest.java
│       │               │   │   │   ├── CRLValidationUtilsTest.java
│       │               │   │   │   ├── CRLValidatorTest.java
│       │               │   │   │   ├── CRLValidatorWiremockIT.java
│       │               │   │   │   ├── CertificateGeneratorUtil.java
│       │               │   │   │   └── VerifiedCertPathBuilderTest.java
│       │               │   │   ├── json/
│       │               │   │   │   ├── BooleanConverterTest.java
│       │               │   │   │   ├── BytesConverterTest.java
│       │               │   │   │   ├── DateTimeConverterTest.java
│       │               │   │   │   ├── NumberConverterTest.java
│       │               │   │   │   └── StringConverterTest.java
│       │               │   │   └── minicore/
│       │               │   │       ├── MinicoreLoaderTest.java
│       │               │   │       ├── MinicorePlatformTest.java
│       │               │   │       ├── MinicoreTelemetryTest.java
│       │               │   │       ├── MinicoreTest.java
│       │               │   │       └── MinicoreTestLatestIT.java
│       │               │   ├── driver/
│       │               │   │   └── DriverInitializerTest.java
│       │               │   ├── jdbc/
│       │               │   │   ├── ArrowResultChunkTest.java
│       │               │   │   ├── AuthenticatedProxyLatestIT.java
│       │               │   │   ├── AutoConnectionConfigurationLatestIT.java
│       │               │   │   ├── BaseJDBCTest.java
│       │               │   │   ├── BaseJDBCWithSharedConnectionIT.java
│       │               │   │   ├── BaseWiremockTest.java
│       │               │   │   ├── BatchExecutionIT.java
│       │               │   │   ├── BatchExecutionLatestIT.java
│       │               │   │   ├── BindUploaderIT.java
│       │               │   │   ├── BindUploaderLatestIT.java
│       │               │   │   ├── BindingAndInsertingStructuredTypesLatestIT.java
│       │               │   │   ├── BindingDataIT.java
│       │               │   │   ├── BindingDataLatestIT.java
│       │               │   │   ├── CallableStatementIT.java
│       │               │   │   ├── CallableStatementITBase.java
│       │               │   │   ├── CallableStatementLatestIT.java
│       │               │   │   ├── ChunkDownloaderS3RetryUrlLatestIT.java
│       │               │   │   ├── ClientMemoryLimitParallelIT.java
│       │               │   │   ├── CompressedStreamFactoryTest.java
│       │               │   │   ├── ConnectStringParseTest.java
│       │               │   │   ├── ConnectionAlreadyClosedIT.java
│       │               │   │   ├── ConnectionFeatureNotSupportedIT.java
│       │               │   │   ├── ConnectionIT.java
│       │               │   │   ├── ConnectionLatestIT.java
│       │               │   │   ├── ConnectionManual.java
│       │               │   │   ├── ConnectionPoolingIT.java
│       │               │   │   ├── ConnectionWithDisableOCSPModeLatestIT.java
│       │               │   │   ├── ConnectionWithOCSPModeIT.java
│       │               │   │   ├── CustomProxyLatestIT.java
│       │               │   │   ├── DatabaseMetaDataIT.java
│       │               │   │   ├── DatabaseMetaDataInternalIT.java
│       │               │   │   ├── DatabaseMetaDataInternalLatestIT.java
│       │               │   │   ├── DatabaseMetaDataLatestIT.java
│       │               │   │   ├── DatabaseMetaDataResultSetLatestIT.java
│       │               │   │   ├── DatabaseMetaDataResultsetIT.java
│       │               │   │   ├── DecfloatTypeLatestIT.java
│       │               │   │   ├── DefaultSFConnectionHandlerTest.java
│       │               │   │   ├── DellBoomiCloudIT.java
│       │               │   │   ├── FileConnectionConfigurationLatestIT.java
│       │               │   │   ├── FileUploaderExpandFileNamesTest.java
│       │               │   │   ├── FileUploaderLatestIT.java
│       │               │   │   ├── FileUploaderMimeTypeToCompressionTypeTest.java
│       │               │   │   ├── FileUploaderPrep.java
│       │               │   │   ├── FileUploaderSessionlessTest.java
│       │               │   │   ├── GCPLargeResult.java
│       │               │   │   ├── GitRepositoryDownloadLatestIT.java
│       │               │   │   ├── HeartbeatAsyncLatestIT.java
│       │               │   │   ├── HeartbeatIT.java
│       │               │   │   ├── HeartbeatMultiSessionIT.java
│       │               │   │   ├── IntervalDayTimeTypeLatestIT.java
│       │               │   │   ├── IntervalYearMonthTypeLatestIT.java
│       │               │   │   ├── LobSizeLatestIT.java
│       │               │   │   ├── MaxLobSizeLatestIT.java
│       │               │   │   ├── MockConnectionTest.java
│       │               │   │   ├── MultiStatementArrowIT.java
│       │               │   │   ├── MultiStatementIT.java
│       │               │   │   ├── MultiStatementLatestIT.java
│       │               │   │   ├── OpenGroupCLIFuncIT.java
│       │               │   │   ├── OpenGroupCLIFuncLatestIT.java
│       │               │   │   ├── PreparedMultiStmtIT.java
│       │               │   │   ├── PreparedStatement0IT.java
│       │               │   │   ├── PreparedStatement1IT.java
│       │               │   │   ├── PreparedStatement1LatestIT.java
│       │               │   │   ├── PreparedStatement2IT.java
│       │               │   │   ├── PreparedStatement2LatestIT.java
│       │               │   │   ├── PreparedStatementFeatureNotSupportedIT.java
│       │               │   │   ├── PreparedStatementLargeUpdateLatestIT.java
│       │               │   │   ├── PrivateKeyAuthenticationExceptionHandlingLatestIT.java
│       │               │   │   ├── ProxyLatestIT.java
│       │               │   │   ├── PutFileWithSpaceIncludedIT.java
│       │               │   │   ├── PutUnescapeBackslashIT.java
│       │               │   │   ├── QueryContextWiremockIT.java
│       │               │   │   ├── RestRequestTest.java
│       │               │   │   ├── RestRequestTestRetriesWiremockIT.java
│       │               │   │   ├── RestRequestWiremockLatestIT.java
│       │               │   │   ├── ResultJsonParserV2Test.java
│       │               │   │   ├── ResultSet0IT.java
│       │               │   │   ├── ResultSetAlreadyClosedIT.java
│       │               │   │   ├── ResultSetArrowForce0MultiTimeZone.java
│       │               │   │   ├── ResultSetArrowForceLTZMultiTimeZoneIT.java
│       │               │   │   ├── ResultSetArrowForceTZMultiTimeZoneIT.java
│       │               │   │   ├── ResultSetAsyncIT.java
│       │               │   │   ├── ResultSetAsyncLatestIT.java
│       │               │   │   ├── ResultSetFeatureNotSupportedIT.java
│       │               │   │   ├── ResultSetFormatType.java
│       │               │   │   ├── ResultSetIT.java
│       │               │   │   ├── ResultSetJsonVsArrowIT.java
│       │               │   │   ├── ResultSetJsonVsArrowMultiTZIT.java
│       │               │   │   ├── ResultSetLatestIT.java
│       │               │   │   ├── ResultSetMultiTimeZoneIT.java
│       │               │   │   ├── ResultSetMultiTimeZoneLatestIT.java
│       │               │   │   ├── ResultSetVectorLatestIT.java
│       │               │   │   ├── SSOConnectionTest.java
│       │               │   │   ├── ServiceNameTest.java
│       │               │   │   ├── SessionContextWiremockLatestIT.java
│       │               │   │   ├── SessionVariablesIT.java
│       │               │   │   ├── SnowflakeAzureClientHandleExceptionLatestIT.java
│       │               │   │   ├── SnowflakeBasicDataSourceTest.java
│       │               │   │   ├── SnowflakeChunkDownloaderLatestIT.java
│       │               │   │   ├── SnowflakeClobTest.java
│       │               │   │   ├── SnowflakeConnectionImplTest.java
│       │               │   │   ├── SnowflakeDriverConnectionStressTest.java
│       │               │   │   ├── SnowflakeDriverIT.java
│       │               │   │   ├── SnowflakeDriverLatestIT.java
│       │               │   │   ├── SnowflakeDriverTest.java
│       │               │   │   ├── SnowflakeFileTransferAgentExtractSafeDestFileNameTest.java
│       │               │   │   ├── SnowflakeFileTransferConfigTest.java
│       │               │   │   ├── SnowflakeGcsClientHandleExceptionLatestIT.java
│       │               │   │   ├── SnowflakeResultSetSerializableIT.java
│       │               │   │   ├── SnowflakeS3ClientHandleExceptionLatestIT.java
│       │               │   │   ├── SnowflakeSerializableTest.java
│       │               │   │   ├── SnowflakeTimestampWithTimezoneTest.java
│       │               │   │   ├── SnowflakeTypeTest.java
│       │               │   │   ├── SnowflakeUtilTest.java
│       │               │   │   ├── StatementAlreadyClosedIT.java
│       │               │   │   ├── StatementArrowIT.java
│       │               │   │   ├── StatementFeatureNotSupportedIT.java
│       │               │   │   ├── StatementIT.java
│       │               │   │   ├── StatementLargeUpdateIT.java
│       │               │   │   ├── StatementLatestIT.java
│       │               │   │   ├── StatementNoOpLatestIT.java
│       │               │   │   ├── StreamIT.java
│       │               │   │   ├── StreamLatestIT.java
│       │               │   │   ├── cloud/
│       │               │   │   │   └── storage/
│       │               │   │   │       ├── AwsSdkGCPSignerTest.java
│       │               │   │   │       ├── CloudStorageClientLatestIT.java
│       │               │   │   │       ├── CloudStorageProxyFactoryTest.java
│       │               │   │   │       ├── EncryptionProviderTest.java
│       │               │   │   │       ├── GcmEncryptionProviderTest.java
│       │               │   │   │       ├── SnowflakeAzureClientLatestIT.java
│       │               │   │   │       ├── SnowflakeAzureClientTest.java
│       │               │   │   │       ├── SnowflakeS3ClientLatestIT.java
│       │               │   │   │       ├── SnowflakeS3ClientTest.java
│       │               │   │   │       ├── SnowflakeStorageClientTest.java
│       │               │   │   │       ├── StageInfoGcsCustomEndpointTest.java
│       │               │   │   │       └── StorageProviderExceptionTest.java
│       │               │   │   ├── diagnostic/
│       │               │   │   │   ├── DiagnosticContextLatestIT.java
│       │               │   │   │   └── SnowflakeEndpointTest.java
│       │               │   │   ├── structuredtypes/
│       │               │   │   │   ├── ResultSetStructuredTypesLatestIT.java
│       │               │   │   │   ├── StructuredTypesArrowJsonCompatibilityLatestIT.java
│       │               │   │   │   ├── StructuredTypesGetStringBaseIT.java
│       │               │   │   │   └── sqldata/
│       │               │   │   │       ├── AllTypesClass.java
│       │               │   │   │       ├── NestedStructSqlData.java
│       │               │   │   │       ├── NullableFieldsSqlData.java
│       │               │   │   │       ├── SimpleClass.java
│       │               │   │   │       └── StringClass.java
│       │               │   │   ├── telemetry/
│       │               │   │   │   ├── CSVMetricsExporterTest.java
│       │               │   │   │   ├── ExecTimeTelemetryDataTest.java
│       │               │   │   │   ├── InternalApiMarkerUsageArchTest.java
│       │               │   │   │   ├── InternalApiTelemetryTrackerTest.java
│       │               │   │   │   ├── NoOpTelemetryClientTest.java
│       │               │   │   │   ├── PreSessionTelemetryClientTest.java
│       │               │   │   │   ├── TelemetryIT.java
│       │               │   │   │   ├── TelemetryTest.java
│       │               │   │   │   └── TelemetryUtilTest.java
│       │               │   │   └── telemetryOOB/
│       │               │   │       ├── TelemetryServiceIT.java
│       │               │   │       ├── TelemetryServiceTest.java
│       │               │   │       └── TelemetryThreadPoolTest.java
│       │               │   ├── loader/
│       │               │   │   ├── FlatfileReadMultithreadIT.java
│       │               │   │   ├── LoaderBase.java
│       │               │   │   ├── LoaderIT.java
│       │               │   │   ├── LoaderLatestIT.java
│       │               │   │   ├── LoaderMultipleBatchIT.java
│       │               │   │   ├── LoaderTimestampIT.java
│       │               │   │   ├── OnErrorTest.java
│       │               │   │   └── TestDataConfigBuilder.java
│       │               │   ├── log/
│       │               │   │   ├── AbstractLoggerIT.java
│       │               │   │   ├── CommonsLoggingWrapperModeTest.java
│       │               │   │   ├── CommonsLoggingWrapperTest.java
│       │               │   │   ├── JDK14JCLWrapperLatestIT.java
│       │               │   │   ├── JDK14LoggerConsoleHandlerOverrideLatestIT.java
│       │               │   │   ├── JDK14LoggerLatestIT.java
│       │               │   │   ├── JDK14LoggerTest.java
│       │               │   │   ├── JDK14LoggerWithClientLatestIT.java
│       │               │   │   ├── MaskedExceptionLoggerIntegrationTest.java
│       │               │   │   ├── SFFormatterTest.java
│       │               │   │   ├── SFLogLevelTest.java
│       │               │   │   ├── SFLoggerFactoryTest.java
│       │               │   │   ├── SFToJavaLogMapperTest.java
│       │               │   │   ├── SLF4JJJCLWrapperLatestIT.java
│       │               │   │   └── SLF4JLoggerLatestIT.java
│       │               │   └── util/
│       │               │       ├── DecorrelatedJitterBackoffTest.java
│       │               │       ├── LibcDetailsTest.java
│       │               │       ├── MaskedExceptionTest.java
│       │               │       ├── OsReleaseDetailsTest.java
│       │               │       ├── PlatformDetectorLatestIT.java
│       │               │       ├── SFPairTest.java
│       │               │       ├── SecretDetectorTest.java
│       │               │       └── StopwatchTest.java
│       │               ├── providers/
│       │               │   ├── BooleanProvider.java
│       │               │   ├── ProvidersUtil.java
│       │               │   ├── ResultFormatProvider.java
│       │               │   ├── ScaleProvider.java
│       │               │   ├── SimpleResultFormatProvider.java
│       │               │   ├── SnowflakeArgumentsProvider.java
│       │               │   └── TimezoneProvider.java
│       │               ├── suites/
│       │               │   ├── ArrowTestSuite.java
│       │               │   ├── AuthenticationTestSuite.java
│       │               │   ├── BaseTestSuite.java
│       │               │   ├── ConnectionOldDriverTestSuite.java
│       │               │   ├── ConnectionTestSuite.java
│       │               │   ├── CoreOldDriverTestSuite.java
│       │               │   ├── CoreTestSuite.java
│       │               │   ├── DatabaseMetaDataTestSuite.java
│       │               │   ├── DiagnosticOldDriverTestSuite.java
│       │               │   ├── DiagnosticTestSuite.java
│       │               │   ├── LoaderOldDriverTestSuite.java
│       │               │   ├── LoaderTestSuite.java
│       │               │   ├── OldDriverTestSuite.java
│       │               │   ├── OnlyTestingTestSuite.java
│       │               │   ├── OthersOldDriverTestSuite.java
│       │               │   ├── OthersTestSuite.java
│       │               │   ├── ResultSetOldDriverTestSuite.java
│       │               │   ├── ResultSetTestSuite.java
│       │               │   ├── StatementOldDriverTestSuite.java
│       │               │   ├── StatementTestSuite.java
│       │               │   ├── UnitOldDriverTestSuite.java
│       │               │   ├── UnitTestSuite.java
│       │               │   └── WIFTestSuite.java
│       │               └── wif/
│       │                   └── WIFLatestIT.java
│       └── resources/
│           ├── .gitignore
│           ├── FileUploaderPrep/
│           │   ├── exampleAzure.json
│           │   ├── exampleGCS.json
│           │   ├── exampleGCSWithEndpoint.json
│           │   ├── exampleGCSWithUseRegionalUrl.json
│           │   ├── exampleS3.json
│           │   └── exampleS3WithStageEndpoint.json
│           ├── allowlist.json
│           ├── encrypted_rsa_key.p8
│           ├── encrypted_rsa_key.pub
│           ├── invalid_private_key.pem
│           ├── logback-test.xml
│           ├── logging.properties
│           ├── net/
│           │   └── snowflake/
│           │       └── client/
│           │           ├── .gitignore
│           │           ├── internal/
│           │           │   └── jdbc/
│           │           │       ├── boomi.policy
│           │           │       └── test_copy.csv
│           │           ├── jenkins_it_logging.properties
│           │           └── travis_it_logging.properties
│           ├── orders_100.csv
│           ├── orders_101.csv
│           ├── os-release-test
│           ├── revoked_certs.pem
│           ├── rsa_key.p8
│           ├── rsa_key.pem
│           ├── rsa_key.pub
│           ├── ssl-tests/
│           │   ├── certs/
│           │   │   ├── amz_root_ca1_chain.crt
│           │   │   ├── amz_root_ca1_chain.csr
│           │   │   ├── amz_root_ca1_chain.srl
│           │   │   ├── amz_root_ca1_common.key
│           │   │   ├── amz_root_ca1_trust_store.crt
│           │   │   ├── amz_root_ca1_trust_store.csr
│           │   │   ├── amz_rsa_m02_intermediate.crt
│           │   │   ├── amz_rsa_m02_intermediate.csr
│           │   │   ├── amz_rsa_m02_intermediate.key
│           │   │   ├── amz_rsa_m02_intermediate.srl
│           │   │   ├── client_keystore.p12
│           │   │   ├── leaf.crt
│           │   │   ├── leaf.csr
│           │   │   ├── leaf.key
│           │   │   ├── st_class2_root.crt
│           │   │   ├── st_class2_root.csr
│           │   │   ├── st_class2_root.key
│           │   │   ├── st_class2_root.srl
│           │   │   ├── st_g2_root.crt
│           │   │   ├── st_g2_root.csr
│           │   │   ├── st_g2_root.key
│           │   │   ├── st_g2_root.srl
│           │   │   └── truststore.jks
│           │   └── generate_certs.sh
│           ├── test_encryption_256.csv
│           ├── test_file
│           ├── test_file.csv
│           └── wiremock/
│               ├── ca-cert.jks
│               └── mappings/
│                   ├── connection/
│                   │   └── session_context_switches.json
│                   ├── minicore/
│                   │   └── minicore_telemetry.json
│                   ├── oauth/
│                   │   ├── authorization_code/
│                   │   │   ├── browser_timeout_authorization_error.json
│                   │   │   ├── dpop_nonce_error_flow.json
│                   │   │   ├── external_idp_custom_urls.json
│                   │   │   ├── invalid_scope_error.json
│                   │   │   ├── invalid_state_error.json
│                   │   │   ├── successful_dpop_flow.json
│                   │   │   ├── successful_flow.json
│                   │   │   ├── successful_flow_with_single_use_refresh_tokens.json
│                   │   │   └── token_request_error.json
│                   │   ├── client_credentials/
│                   │   │   ├── dpop_nonce_error_flow.json
│                   │   │   ├── successful_dpop_flow.json
│                   │   │   ├── successful_flow.json
│                   │   │   └── token_request_error.json
│                   │   ├── legacy_oauth/
│                   │   │   └── token_expired.json
│                   │   └── token_caching/
│                   │       ├── caching_refreshed_access_token_and_new_refresh_token.json
│                   │       ├── caching_tokens_after_connecting.json
│                   │       ├── caching_tokens_and_dpop_key_after_connecting.json
│                   │       ├── not_caching_after_client_credentials_flow.json
│                   │       ├── refreshing_expired_access_token.json
│                   │       ├── refreshing_expired_access_token_dpop.json
│                   │       ├── refreshing_expired_access_token_dpop_nonce_error.json
│                   │       ├── restarting_full_flow_on_expiration_and_no_refresh_token.json
│                   │       ├── restarting_full_flow_on_refresh_token_error.json
│                   │       └── reusing_cached_access_token_to_authenticate.json
│                   ├── pat/
│                   │   ├── invalid_pat_token.json
│                   │   └── successful_flow.json
│                   ├── platform-detection/
│                   │   ├── aws_ec2_instance_successful.json
│                   │   ├── aws_ec2_token_successful.json
│                   │   ├── azure_managed_identity_successful.json
│                   │   ├── azure_metadata_unavailable.json
│                   │   ├── azure_vm_successful.json
│                   │   ├── ec2_successful_imdsv1.json
│                   │   ├── ec2_successful_imdsv2.json
│                   │   ├── gcp_identity_successful.json
│                   │   ├── gcp_metadata_unavailable.json
│                   │   ├── gcp_vm_slow_response.json
│                   │   ├── gcp_vm_successful.json
│                   │   ├── slow_response_timeout.json
│                   │   └── timeout_scenarios.json
│                   ├── querycontext/
│                   │   └── qcc-merge-on-failed-query.json
│                   ├── restrequest/
│                   │   ├── certificate_revoked.json
│                   │   ├── correct_response.json
│                   │   ├── http_307_retry.json
│                   │   ├── http_308_retry.json
│                   │   ├── response503.json
│                   │   ├── six_malformed_and_correct.json
│                   │   ├── sticky_header_from_first_query.json
│                   │   ├── sticky_header_from_login.json
│                   │   └── sticky_header_updated.json
│                   ├── session/
│                   │   ├── session-util-wiremock-it-always-429-in-federated-step-3.json
│                   │   ├── session-util-wiremock-it-always-429-in-federated-step-4.json
│                   │   ├── session-util-wiremock-it-libc-details-in-login-request.json
│                   │   ├── session-util-wiremock-it-multiple-429-from-okta-in-login-request-to-sf.json
│                   │   ├── session-util-wiremock-it-multiple-429-in-federated-step-3.json
│                   │   ├── session-util-wiremock-it-multiple-429-in-federated-step-4.json
│                   │   ├── session-util-wiremock-it-os-details-in-login-request.json
│                   │   ├── session-util-wiremock-it-spcs-token-in-login-request.json
│                   │   └── session-util-wiremock-it-unsupported-mfa-in-federated-step-3.json
│                   └── wif/
│                       ├── azure/
│                       │   ├── http_error.json
│                       │   ├── invalid_issuer_flow.json
│                       │   ├── missing_issuer_claim.json
│                       │   ├── missing_sub_claim.json
│                       │   ├── non_json_response.json
│                       │   ├── successful_flow_azure_functions.json
│                       │   ├── successful_flow_azure_functions_custom_entra_resource.json
│                       │   ├── successful_flow_azure_functions_no_client_id.json
│                       │   ├── successful_flow_azure_functions_v2_issuer.json
│                       │   ├── successful_flow_basic.json
│                       │   ├── successful_flow_v2_issuer.json
│                       │   └── unparsable_token.json
│                       └── gcp/
│                           ├── http_error.json
│                           ├── invalid_issuer_claim.json
│                           ├── missing_issuer_claim.json
│                           ├── missing_sub_claim.json
│                           ├── successful_flow.json
│                           ├── successful_impersonation_flow.json
│                           └── unparsable_token.json
└── thin_public_pom.xml
Download .txt
Showing preview only (789K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9696 symbols across 757 files)

FILE: FIPS/src/test/java/net/snowflake/client/AbstractDriverIT.java
  class AbstractDriverIT (line 24) | public class AbstractDriverIT {
    method getConnectionParameters (line 43) | public static Map<String, String> getConnectionParameters(String accou...
    method getConnectionParameters (line 157) | public static Map<String, String> getConnectionParameters() {
    method getConnection (line 169) | public static Connection getConnection(Properties paramProperties) thr...
    method getConnection (line 179) | public static Connection getConnection(String accountName) throws SQLE...
    method getConnection (line 189) | public static Connection getConnection() throws SQLException {
    method getConnection (line 201) | public static Connection getConnection(int injectSocketTimeout) throws...
    method getSnowflakeAdminConnection (line 211) | protected static Connection getSnowflakeAdminConnection() throws SQLEx...
    method getSnowflakeAdminConnection (line 222) | protected static Connection getSnowflakeAdminConnection(Properties par...
    method getConnection (line 238) | public static Connection getConnection(
    method getConnection (line 255) | public static Connection getConnection(
    method closeSQLObjects (line 337) | public void closeSQLObjects(ResultSet resultSet, Statement statement, ...
    method closeSQLObjects (line 357) | public void closeSQLObjects(Statement statement, Connection connection...
    method getFullPathFileInResource (line 372) | public static String getFullPathFileInResource(String fileName) {
    method buildTimestamp (line 382) | protected static Timestamp buildTimestamp(
    method buildDate (line 391) | protected static Date buildDate(int year, int month, int day) {
    method buildDateWithTZ (line 398) | protected static Date buildDateWithTZ(int year, int month, int day, Ti...

FILE: FIPS/src/test/java/net/snowflake/client/TestUtil.java
  class TestUtil (line 11) | public class TestUtil {
    method assertSFException (line 19) | public static void assertSFException(int errorCode, TestRunInterface t...
    type TestRunInterface (line 29) | @FunctionalInterface
      method run (line 31) | void run() throws SFException;
    method systemGetEnv (line 45) | @Deprecated

FILE: FIPS/src/test/java/net/snowflake/client/category/FipsTestSuite.java
  class FipsTestSuite (line 14) | @Suite

FILE: FIPS/src/test/java/net/snowflake/client/jdbc/ConnectionFipsIT.java
  class ConnectionFipsIT (line 33) | @Tag("fips")
    method setup (line 106) | @BeforeAll
    method teardown (line 168) | @AfterAll
    method connectWithFips (line 216) | @Test
    method connectWithFipsKeyPair (line 229) | @Test
    method testConnectUsingKeyPair (line 273) | @Test
    method connectWithFipsAndQuery (line 323) | @Test
    method connectWithFipsAndPut (line 340) | @Test
    method connectWithFipsKeyPairWithBouncyCastle (line 356) | @Test
    method testConnectUsingKeyPairWithBouncyCastle (line 365) | @Test
    method connectToGoogle (line 373) | private static void connectToGoogle() throws Exception {

FILE: ci/container/hang_webserver.py
  class HTTPRequestHandler (line 8) | class HTTPRequestHandler(BaseHTTPRequestHandler):
    method do_POST (line 9) | def do_POST(self):
  class ThreadedHTTPServer (line 29) | class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
    method shutdown (line 32) | def shutdown(self):
  class SimpleHttpServer (line 36) | class SimpleHttpServer():
    method __init__ (line 37) | def __init__(self, ip, port):
    method start (line 40) | def start(self):
    method waitForThread (line 45) | def waitForThread(self):
    method stop (line 48) | def stop(self):

FILE: ci/container/sf_test_utils.py
  function get_test_schema (line 8) | def get_test_schema():
  function init_connection_params (line 12) | def init_connection_params():

FILE: ci/wif/aws-lambda/src/main/java/com/snowflake/wif/aws/WifLambdaFunctionE2e.java
  class WifLambdaFunctionE2e (line 13) | public class WifLambdaFunctionE2e implements RequestHandler<Object, APIG...
    class LambdaLogger (line 17) | private static class LambdaLogger implements WifTestHelper.WifLogger {
      method LambdaLogger (line 20) | public LambdaLogger(Context context) {
      method log (line 24) | @Override
    method handleRequest (line 30) | @Override
    method extractQueryParameters (line 60) | private Map<String, String> extractQueryParameters(Object input, WifTe...
    method createResponse (line 81) | private APIGatewayProxyResponseEvent createResponse(int mavenExitCode) {
    method createErrorResponse (line 99) | private APIGatewayProxyResponseEvent createErrorResponse(int statusCod...

FILE: ci/wif/azure-function/src/main/java/com/snowflake/wif/azure/WifAzureFunctionE2e.java
  class WifAzureFunctionE2e (line 10) | public class WifAzureFunctionE2e {
    class AzureLogger (line 12) | private static class AzureLogger implements WifTestHelper.WifLogger {
      method AzureLogger (line 15) | public AzureLogger(ExecutionContext context) {
      method log (line 19) | @Override
    method run (line 25) | @FunctionName("WifAzureFunctionE2e")
    method createResponse (line 58) | private HttpResponseMessage createResponse(HttpRequestMessage<Optional...

FILE: ci/wif/gcp-function/src/main/java/com/snowflake/wif/gcp/WifGcpFunctionE2e.java
  class WifGcpFunctionE2e (line 18) | public class WifGcpFunctionE2e implements HttpFunction {
    class GcpLogger (line 22) | private static class GcpLogger implements WifTestHelper.WifLogger {
      method GcpLogger (line 25) | public GcpLogger(Logger logger) {
      method log (line 29) | @Override
    method createGcpResponseMessage (line 35) | private static String createGcpResponseMessage(int mavenExitCode, Stri...
    method performGcpCleanup (line 51) | private static void performGcpCleanup(String workingDirectory, WifTest...
    method service (line 62) | @Override
    method extractQueryParameters (line 92) | private Map<String, String> extractQueryParameters(HttpRequest request...
    method createResponse (line 130) | private void createResponse(HttpResponse response, int mavenExitCode, ...
    method createErrorResponse (line 149) | private void createErrorResponse(HttpResponse response, int statusCode...

FILE: ci/wif/shared/com/snowflake/wif/common/WifTestHelper.java
  class WifTestHelper (line 26) | public class WifTestHelper {
    method generateUniqueSessionId (line 28) | private static String generateUniqueSessionId() {
    method validateQueryParameters (line 32) | public static void validateQueryParameters(Map<String, String> queryPa...
    method buildTarballUrl (line 56) | public static String buildTarballUrl(String branch) {
    method findRepositoryFolder (line 65) | public static String findRepositoryFolder(String workingDirectory) {
    method executeMavenBuild (line 84) | public static int executeMavenBuild(String repoFolderPath, String temp...
    method cleanupMavenTempDirectories (line 189) | private static void cleanupMavenTempDirectories(File mavenRepo, File w...
    method cleanupDirectory (line 199) | private static void cleanupDirectory(File directory, String descriptio...
    method makeExecutable (line 226) | public static void makeExecutable(String repoFolderPath, WifLogger log...
    method cleanupWorkingDirectory (line 267) | public static void cleanupWorkingDirectory(String workingDirectory, Wi...
    method cleanupOrphanedMavenDirectories (line 310) | private static void cleanupOrphanedMavenDirectories(WifLogger logger) {
    method downloadAndExtractRepository (line 355) | public static String downloadAndExtractRepository(String tarballUrl, W...
    method downloadAndExtractWithJava (line 378) | public static void downloadAndExtractWithJava(String tarballUrl, File ...
    method createOutputFile (line 431) | private static File createOutputFile(File workingDirectory, String ent...
    method createMavenResultMessage (line 445) | public static String createMavenResultMessage(int mavenExitCode) {
    type WifLogger (line 467) | public interface WifLogger {
      method log (line 468) | void log(String message);

FILE: fat-jar-test-app/src/main/fips-java/net/snowflake/FipsInitializer.java
  class FipsInitializer (line 16) | public class FipsInitializer {
    method initializeFipsMode (line 42) | private static void initializeFipsMode() {
    method ensureInitialized (line 99) | public static void ensureInitialized() {

FILE: fat-jar-test-app/src/main/java/net/snowflake/FatJarTestApp.java
  class FatJarTestApp (line 15) | public class FatJarTestApp {
    method main (line 47) | public static void main(String[] args) throws Exception {
    method runQueries (line 53) | private static void runQueries(String[] args) throws Exception {
    method setupLogging (line 71) | private static void setupLogging() throws Exception {
    method verifyLogs (line 83) | private static void verifyLogs() throws Exception {
    method getTestFilePath (line 117) | private static String getTestFilePath() throws URISyntaxException {
    method getConnection (line 125) | private static Connection getConnection(String[] args) throws Exception {
    method getSfEnv (line 156) | private static String getSfEnv(String param) {

FILE: prober/src/main/java/com/snowflake/client/jdbc/prober/Prober.java
  class Prober (line 34) | public class Prober {
    type Status (line 43) | enum Status {
      method Status (line 49) | Status(int code) {
      method getCode (line 53) | public int getCode() {
    type Scope (line 58) | enum Scope {
    method main (line 64) | public static void main(String[] args) throws Exception {
    method testLogin (line 89) | private static void testLogin(String url, Properties properties) {
    method testPutFetchGet (line 106) | private static void testPutFetchGet(String url, Properties properties) {
    method testPutFetchGetFailClosed (line 136) | private static void testPutFetchGetFailClosed(String url, Properties p...
    method createDatabase (line 170) | private static void createDatabase(Statement statement, Properties pro...
    method createSchema (line 184) | private static void createSchema(Statement statement, Properties prope...
    method createWarehouse (line 198) | private static void createWarehouse(Statement statement, Properties pr...
    method cleanupResources (line 212) | private static void cleanupResources(Statement statement, String metri...
    method compareFetchedDataAndFile (line 225) | private static void compareFetchedDataAndFile(Statement statement, Lis...
    method downloadFile (line 254) | private static String downloadFile(SnowflakeConnection sfConnection, S...
    method fetchAndVerifyRows (line 270) | private static void fetchAndVerifyRows(Statement statement, String met...
    method loadFileIntoTable (line 282) | private static void loadFileIntoTable(Statement statement, String metr...
    method uploadFile (line 295) | private static void uploadFile(SnowflakeConnection sfConnection, Strin...
    method createDataTable (line 306) | private static void createDataTable(Statement statement, String metric...
    method createDataStage (line 323) | private static void createDataStage(Statement statement, String metric...
    method setupLogging (line 340) | private static void setupLogging(Properties properties) throws IOExcep...
    method logMetric (line 350) | private static void logMetric(String metricName, Status status) {
    method parseArguments (line 354) | private static Map<String, String> parseArguments(String[] args) {
    method generateCsv (line 376) | private static List<String> generateCsv(int numRows) {
    method generateRandomString (line 400) | private static String generateRandomString(int length) {
    method setPrivateKey (line 412) | private static void setPrivateKey(Properties props) throws IOException...

FILE: src/main/java-fat-jar/net/snowflake/client/internal/log/SFBridgeLogger.java
  class SFBridgeLogger (line 16) | public class SFBridgeLogger extends MarkerIgnoringBase {
    method SFBridgeLogger (line 22) | SFBridgeLogger(String name) {
    method isTraceEnabled (line 29) | @Override
    method trace (line 34) | @Override
    method trace (line 41) | @Override
    method trace (line 48) | @Override
    method trace (line 55) | @Override
    method trace (line 62) | @Override
    method isDebugEnabled (line 71) | @Override
    method debug (line 76) | @Override
    method debug (line 83) | @Override
    method debug (line 90) | @Override
    method debug (line 97) | @Override
    method debug (line 104) | @Override
    method isInfoEnabled (line 113) | @Override
    method info (line 118) | @Override
    method info (line 125) | @Override
    method info (line 132) | @Override
    method info (line 139) | @Override
    method info (line 146) | @Override
    method isWarnEnabled (line 155) | @Override
    method warn (line 160) | @Override
    method warn (line 167) | @Override
    method warn (line 174) | @Override
    method warn (line 181) | @Override
    method warn (line 188) | @Override
    method isErrorEnabled (line 197) | @Override
    method error (line 202) | @Override
    method error (line 209) | @Override
    method error (line 216) | @Override
    method error (line 223) | @Override
    method error (line 230) | @Override

FILE: src/main/java-fat-jar/net/snowflake/client/internal/log/SFBridgeLoggerFactory.java
  class SFBridgeLoggerFactory (line 12) | public class SFBridgeLoggerFactory implements ILoggerFactory {
    method getLogger (line 16) | @Override

FILE: src/main/java-fat-jar/net/snowflake/client/internal/log/SFBridgeServiceProvider.java
  class SFBridgeServiceProvider (line 24) | public class SFBridgeServiceProvider implements SLF4JServiceProvider {
    method getLoggerFactory (line 33) | @Override
    method getMarkerFactory (line 38) | @Override
    method getMDCAdapter (line 43) | @Override
    method getRequestedApiVersion (line 48) | @Override
    method initialize (line 53) | @Override

FILE: src/main/java/net/snowflake/client/api/auth/AuthenticatorType.java
  type AuthenticatorType (line 19) | public enum AuthenticatorType {

FILE: src/main/java/net/snowflake/client/api/connection/DownloadStreamConfig.java
  class DownloadStreamConfig (line 25) | public class DownloadStreamConfig {
    method DownloadStreamConfig (line 33) | private DownloadStreamConfig(Builder builder) {
    method isDecompress (line 42) | public boolean isDecompress() {
    method builder (line 51) | public static Builder builder() {
    class Builder (line 69) | public static class Builder {
      method Builder (line 73) | private Builder() {}
      method setDecompress (line 87) | public Builder setDecompress(boolean decompress) {
      method build (line 97) | public DownloadStreamConfig build() {
    method toString (line 102) | @Override

FILE: src/main/java/net/snowflake/client/api/connection/SnowflakeConnection.java
  type SnowflakeConnection (line 9) | public interface SnowflakeConnection {
    method uploadStream (line 24) | void uploadStream(String stageName, String destFileName, InputStream i...
    method uploadStream (line 41) | void uploadStream(
    method downloadStream (line 58) | InputStream downloadStream(String stageName, String sourceFileName) th...
    method downloadStream (line 74) | InputStream downloadStream(String stageName, String sourceFileName, Do...
    method getSessionID (line 83) | String getSessionID() throws SQLException;
    method getQueryStatus (line 92) | QueryStatus getQueryStatus(String queryID) throws SQLException;
    method createResultSet (line 103) | ResultSet createResultSet(String queryID) throws SQLException;
    method getChildQueryIds (line 115) | String[] getChildQueryIds(String queryID) throws SQLException;
    method getDatabaseMajorVersion (line 123) | int getDatabaseMajorVersion() throws SQLException;
    method getDatabaseMinorVersion (line 131) | int getDatabaseMinorVersion() throws SQLException;
    method getDatabaseVersion (line 139) | String getDatabaseVersion() throws SQLException;
    method getRole (line 147) | String getRole() throws SQLException;
    method getWarehouse (line 155) | String getWarehouse() throws SQLException;
    method getDatabase (line 166) | String getDatabase() throws SQLException;

FILE: src/main/java/net/snowflake/client/api/connection/SnowflakeDatabaseMetaData.java
  type SnowflakeDatabaseMetaData (line 13) | public interface SnowflakeDatabaseMetaData extends DatabaseMetaData {
    method getStreams (line 31) | ResultSet getStreams(String catalog, String schemaPattern, String stre...
    method getColumns (line 54) | ResultSet getColumns(

FILE: src/main/java/net/snowflake/client/api/connection/UploadStreamConfig.java
  class UploadStreamConfig (line 26) | public class UploadStreamConfig {
    method UploadStreamConfig (line 35) | private UploadStreamConfig(Builder builder) {
    method getDestPrefix (line 45) | public String getDestPrefix() {
    method isCompressData (line 54) | public boolean isCompressData() {
    method builder (line 63) | public static Builder builder() {
    class Builder (line 82) | public static class Builder {
      method Builder (line 87) | private Builder() {}
      method setDestPrefix (line 106) | public Builder setDestPrefix(String destPrefix) {
      method setCompressData (line 124) | public Builder setCompressData(boolean compressData) {
      method build (line 134) | public UploadStreamConfig build() {
    method toString (line 139) | @Override

FILE: src/main/java/net/snowflake/client/api/datasource/SnowflakeDataSource.java
  type SnowflakeDataSource (line 33) | public interface SnowflakeDataSource extends DataSource {
    method setUrl (line 36) | void setUrl(String url);
    method setDatabaseName (line 39) | void setDatabaseName(String databaseName);
    method setSchema (line 42) | void setSchema(String schema);
    method setWarehouse (line 45) | void setWarehouse(String warehouse);
    method setRole (line 48) | void setRole(String role);
    method setUser (line 51) | void setUser(String user);
    method setServerName (line 54) | void setServerName(String serverName);
    method setPassword (line 57) | void setPassword(String password);
    method setPortNumber (line 60) | void setPortNumber(int portNumber);
    method setAccount (line 63) | void setAccount(String account);
    method setSsl (line 66) | void setSsl(boolean ssl);
    method setAuthenticator (line 69) | void setAuthenticator(String authenticator);
    method setToken (line 72) | void setToken(String token);
    method getUrl (line 75) | String getUrl();
    method setPrivateKey (line 78) | void setPrivateKey(PrivateKey privateKey);
    method setPrivateKeyFile (line 81) | void setPrivateKeyFile(String location, String password);
    method setPrivateKeyBase64 (line 84) | void setPrivateKeyBase64(String privateKeyBase64, String password);
    method setTracing (line 87) | void setTracing(String tracing);
    method getProperties (line 90) | Properties getProperties();
    method setAllowUnderscoresInHost (line 93) | void setAllowUnderscoresInHost(boolean allowUnderscoresInHost);
    method setDisableGcsDefaultCredentials (line 96) | void setDisableGcsDefaultCredentials(boolean isGcsDefaultCredentialsDi...
    method setDisableSamlURLCheck (line 99) | void setDisableSamlURLCheck(boolean disableSamlURLCheck);
    method setPasscode (line 102) | void setPasscode(String passcode);
    method setPasscodeInPassword (line 105) | void setPasscodeInPassword(boolean isPasscodeInPassword);
    method setDisableSocksProxy (line 108) | void setDisableSocksProxy(boolean ignoreJvmSocksProxy);
    method setNonProxyHosts (line 111) | void setNonProxyHosts(String nonProxyHosts);
    method setProxyHost (line 114) | void setProxyHost(String proxyHost);
    method setProxyPassword (line 117) | void setProxyPassword(String proxyPassword);
    method setProxyPort (line 120) | void setProxyPort(int proxyPort);
    method setProxyProtocol (line 123) | void setProxyProtocol(String proxyProtocol);
    method setProxyUser (line 126) | void setProxyUser(String proxyUser);
    method setUseProxy (line 129) | void setUseProxy(boolean useProxy);
    method setNetworkTimeout (line 132) | void setNetworkTimeout(int networkTimeoutSeconds);
    method setQueryTimeout (line 135) | void setQueryTimeout(int queryTimeoutSeconds);
    method setApplication (line 138) | void setApplication(String application);
    method setClientConfigFile (line 141) | void setClientConfigFile(String clientConfigFile);
    method setEnablePatternSearch (line 144) | void setEnablePatternSearch(boolean enablePatternSearch);
    method setEnablePutGet (line 147) | void setEnablePutGet(boolean enablePutGet);
    method setArrowTreatDecimalAsInt (line 150) | void setArrowTreatDecimalAsInt(boolean treatDecimalAsInt);
    method setMaxHttpRetries (line 153) | void setMaxHttpRetries(int maxHttpRetries);
    method setOcspFailOpen (line 156) | void setOcspFailOpen(boolean ocspFailOpen);
    method setPutGetMaxRetries (line 159) | void setPutGetMaxRetries(int putGetMaxRetries);
    method setStringsQuotedForColumnDef (line 162) | void setStringsQuotedForColumnDef(boolean stringsQuotedForColumnDef);
    method setEnableDiagnostics (line 165) | void setEnableDiagnostics(boolean enableDiagnostics);
    method setDiagnosticsAllowlistFile (line 168) | void setDiagnosticsAllowlistFile(String diagnosticsAllowlistFile);
    method setJDBCDefaultFormatDateWithTimezone (line 171) | void setJDBCDefaultFormatDateWithTimezone(Boolean jdbcDefaultFormatDat...
    method setGetDateUseNullTimezone (line 174) | void setGetDateUseNullTimezone(Boolean getDateUseNullTimezone);
    method setEnableClientRequestMfaToken (line 177) | void setEnableClientRequestMfaToken(boolean enableClientRequestMfaToken);
    method setEnableClientStoreTemporaryCredential (line 180) | void setEnableClientStoreTemporaryCredential(boolean enableClientStore...
    method setBrowserResponseTimeout (line 183) | void setBrowserResponseTimeout(int seconds);
    method setHttpHeadersCustomizers (line 186) | void setHttpHeadersCustomizers(List<HttpHeadersCustomizer> httpHeaders...

FILE: src/main/java/net/snowflake/client/api/datasource/SnowflakeDataSourceFactory.java
  class SnowflakeDataSourceFactory (line 29) | public final class SnowflakeDataSourceFactory {
    method SnowflakeDataSourceFactory (line 31) | private SnowflakeDataSourceFactory() {
    method createDataSource (line 45) | public static SnowflakeDataSource createDataSource() {

FILE: src/main/java/net/snowflake/client/api/driver/SnowflakeDriver.java
  class SnowflakeDriver (line 34) | public class SnowflakeDriver implements Driver {
    method acceptsURL (line 70) | @Override
    method connect (line 86) | @Override
    method connect (line 97) | public Connection connect() throws SQLException {
    method getMajorVersion (line 101) | @Override
    method getMinorVersion (line 106) | @Override
    method getPatchVersion (line 117) | public long getPatchVersion() {
    method getImplementationVersion (line 126) | public static String getImplementationVersion() {
    method getPropertyInfo (line 130) | @Override
    method jdbcCompliant (line 146) | @Override
    method getParentLogger (line 151) | @Override

FILE: src/main/java/net/snowflake/client/api/exception/ErrorCode.java
  type ErrorCode (line 6) | public enum ErrorCode {
    method ErrorCode (line 113) | ErrorCode(Integer messageCode, String sqlState) {
    method getMessageCode (line 118) | public Integer getMessageCode() {
    method getSqlState (line 122) | public String getSqlState() {
    method toString (line 126) | @Override

FILE: src/main/java/net/snowflake/client/api/exception/SnowflakeSQLException.java
  class SnowflakeSQLException (line 7) | public class SnowflakeSQLException extends SQLException {
    method SnowflakeSQLException (line 25) | public SnowflakeSQLException(String queryId, String reason, String sql...
    method SnowflakeSQLException (line 35) | public SnowflakeSQLException(String queryId, String reason, String sql...
    method SnowflakeSQLException (line 45) | public SnowflakeSQLException(String queryId, String sqlState, int vend...
    method SnowflakeSQLException (line 58) | public SnowflakeSQLException(String sqlState, int vendorCode, Object.....
    method SnowflakeSQLException (line 68) | public SnowflakeSQLException(String queryId, String sqlState, int vend...
    method SnowflakeSQLException (line 81) | public SnowflakeSQLException(Throwable ex, String sqlState, int vendor...
    method SnowflakeSQLException (line 94) | public SnowflakeSQLException(Throwable ex, ErrorCode errorCode, Object...
    method SnowflakeSQLException (line 104) | public SnowflakeSQLException(Throwable ex, String sqlState, int vendor...
    method SnowflakeSQLException (line 115) | public SnowflakeSQLException(
    method SnowflakeSQLException (line 129) | public SnowflakeSQLException(ErrorCode errorCode, Object... params) {
    method SnowflakeSQLException (line 142) | public SnowflakeSQLException(String queryId, ErrorCode errorCode, Obje...
    method SnowflakeSQLException (line 154) | public SnowflakeSQLException(SFException e) {
    method SnowflakeSQLException (line 158) | public SnowflakeSQLException(String reason) {
    method SnowflakeSQLException (line 162) | public SnowflakeSQLException(Throwable ex, String message) {
    method getQueryId (line 166) | public String getQueryId() {

FILE: src/main/java/net/snowflake/client/api/http/HttpHeadersCustomizer.java
  type HttpHeadersCustomizer (line 14) | public interface HttpHeadersCustomizer {
    method applies (line 25) | boolean applies(String method, String uri, Map<String, List<String>> c...
    method newHeaders (line 32) | Map<String, List<String>> newHeaders();
    method invokeOnce (line 40) | boolean invokeOnce();

FILE: src/main/java/net/snowflake/client/api/loader/LoadResultListener.java
  type LoadResultListener (line 4) | public interface LoadResultListener {
    method needSuccessRecords (line 9) | boolean needSuccessRecords();
    method recordProvided (line 15) | void recordProvided(Operation op, Object[] record);
    method addProcessedRecordCount (line 21) | void addProcessedRecordCount(Operation op, int i);
    method addOperationRecordCount (line 27) | void addOperationRecordCount(Operation op, int i);
    method needErrors (line 32) | boolean needErrors();
    method addError (line 37) | void addError(LoadingError error);
    method throwOnError (line 42) | boolean throwOnError();
    method addErrorCount (line 49) | void addErrorCount(int number);
    method resetErrorCount (line 52) | void resetErrorCount();
    method getErrorCount (line 59) | int getErrorCount();
    method addErrorRecordCount (line 66) | void addErrorRecordCount(int number);
    method resetErrorRecordCount (line 69) | void resetErrorRecordCount();
    method getErrorRecordCount (line 76) | int getErrorRecordCount();
    method resetSubmittedRowCount (line 79) | void resetSubmittedRowCount();
    method addSubmittedRowCount (line 86) | void addSubmittedRowCount(int number);
    method getSubmittedRowCount (line 93) | int getSubmittedRowCount();

FILE: src/main/java/net/snowflake/client/api/loader/Loader.java
  type Loader (line 17) | public interface Loader extends AutoCloseable {
    method setProperty (line 20) | void setProperty(LoaderProperty property, Object value);
    method setListener (line 23) | void setListener(LoadResultListener listener);
    method start (line 26) | void start();
    method submitRow (line 33) | void submitRow(Object[] data);
    method resetOperation (line 40) | void resetOperation(Operation op);
    method rollback (line 46) | void rollback();
    method finish (line 54) | void finish() throws Exception;
    method close (line 64) | @Override
    class DataError (line 68) | class DataError extends RuntimeException {
      method DataError (line 71) | public DataError(String msg) {
      method DataError (line 75) | public DataError(String msg, Throwable ex) {
      method DataError (line 79) | public DataError(Throwable ex) {
    class ConnectionError (line 85) | class ConnectionError extends RuntimeException {
      method ConnectionError (line 88) | public ConnectionError(String msg) {
      method ConnectionError (line 93) | public ConnectionError(String msg, Throwable ex) {
      method ConnectionError (line 97) | public ConnectionError(Throwable ex) {
    method getListener (line 103) | LoadResultListener getListener();

FILE: src/main/java/net/snowflake/client/api/loader/LoaderFactory.java
  class LoaderFactory (line 7) | public class LoaderFactory {
    method createLoader (line 9) | public static Loader createLoader(

FILE: src/main/java/net/snowflake/client/api/loader/LoaderProperty.java
  type LoaderProperty (line 4) | public enum LoaderProperty {

FILE: src/main/java/net/snowflake/client/api/loader/LoadingError.java
  class LoadingError (line 35) | public class LoadingError {
    type ErrorProperty (line 44) | public enum ErrorProperty {
    method LoadingError (line 88) | public LoadingError(ResultSet rs, BufferStage bs, StreamLoader loader) {
    method getStage (line 115) | public String getStage() {
    method getPrefix (line 124) | public String getPrefix() {
    method getFile (line 133) | public String getFile() {
    method getTarget (line 142) | public String getTarget() {
    method getProperty (line 152) | public String getProperty(ErrorProperty p) {
    method setProperty (line 162) | public void setProperty(ErrorProperty p, String value) {
    method toString (line 166) | public String toString() {
    method getException (line 190) | public Loader.DataError getException() {

FILE: src/main/java/net/snowflake/client/api/loader/Operation.java
  type Operation (line 13) | public enum Operation {

FILE: src/main/java/net/snowflake/client/api/pooling/SnowflakeConnectionPoolDataSource.java
  type SnowflakeConnectionPoolDataSource (line 10) | public interface SnowflakeConnectionPoolDataSource

FILE: src/main/java/net/snowflake/client/api/pooling/SnowflakeConnectionPoolDataSourceFactory.java
  class SnowflakeConnectionPoolDataSourceFactory (line 30) | public class SnowflakeConnectionPoolDataSourceFactory {
    method SnowflakeConnectionPoolDataSourceFactory (line 32) | private SnowflakeConnectionPoolDataSourceFactory() {
    method createConnectionPoolDataSource (line 41) | public static SnowflakeConnectionPoolDataSource createConnectionPoolDa...

FILE: src/main/java/net/snowflake/client/api/resultset/FieldMetadata.java
  type FieldMetadata (line 9) | public interface FieldMetadata {
    method getName (line 16) | String getName();
    method getTypeName (line 23) | String getTypeName();
    method getType (line 30) | int getType();
    method isNullable (line 37) | boolean isNullable();
    method getByteLength (line 44) | int getByteLength();
    method getPrecision (line 51) | int getPrecision();
    method getScale (line 58) | int getScale();
    method isFixed (line 65) | boolean isFixed();
    method getBase (line 72) | SnowflakeType getBase();
    method getFields (line 79) | List<FieldMetadata> getFields();

FILE: src/main/java/net/snowflake/client/api/resultset/QueryStatus.java
  class QueryStatus (line 26) | public final class QueryStatus {
    type Status (line 28) | public enum Status {
      method Status (line 46) | Status(int value, String description) {
      method getValue (line 51) | public int getValue() {
      method getDescription (line 55) | public String getDescription() {
      method isStillRunning (line 59) | private static boolean isStillRunning(Status status) {
      method isAnError (line 73) | private static boolean isAnError(Status status) {
      method getStatusFromString (line 87) | private static Status getStatusFromString(String description) {
    method QueryStatus (line 134) | public QueryStatus(
    method empty (line 171) | public static QueryStatus empty() {
    method isEmpty (line 180) | public boolean isEmpty() {
    method isStillRunning (line 189) | public boolean isStillRunning() {
    method isSuccess (line 198) | public boolean isSuccess() {
    method isAnError (line 207) | public boolean isAnError() {
    method getEndTime (line 216) | public long getEndTime() {
    method getErrorCode (line 225) | public int getErrorCode() {
    method getErrorMessage (line 234) | public String getErrorMessage() {
    method getId (line 243) | public String getId() {
    method getName (line 252) | public String getName() {
    method getSessionId (line 261) | public long getSessionId() {
    method getSqlText (line 270) | public String getSqlText() {
    method getStartTime (line 279) | public long getStartTime() {
    method getState (line 288) | public String getState() {
    method getTotalDuration (line 297) | public int getTotalDuration() {
    method getWarehouseExternalSize (line 306) | public String getWarehouseExternalSize() {
    method getWarehouseId (line 315) | public int getWarehouseId() {
    method getWarehouseName (line 324) | public String getWarehouseName() {
    method getWarehouseServerType (line 333) | public String getWarehouseServerType() {
    method getDescription (line 342) | public String getDescription() {
    method getStatus (line 351) | public Status getStatus() {

FILE: src/main/java/net/snowflake/client/api/resultset/SnowflakeAsyncResultSet.java
  type SnowflakeAsyncResultSet (line 6) | public interface SnowflakeAsyncResultSet extends SnowflakeResultSet {
    method getStatus (line 17) | QueryStatus getStatus() throws SQLException;

FILE: src/main/java/net/snowflake/client/api/resultset/SnowflakeResultSet.java
  type SnowflakeResultSet (line 8) | public interface SnowflakeResultSet {
    method getQueryID (line 13) | String getQueryID() throws SQLException;
    method getResultSetSerializables (line 26) | List<SnowflakeResultSetSerializable> getResultSetSerializables(long ma...
    method getArray (line 41) | <T> T[] getArray(int columnIndex, Class<T> type) throws SQLException;
    method getList (line 55) | <T> List<T> getList(int columnIndex, Class<T> type) throws SQLException;
    method getMap (line 69) | <T> Map<String, T> getMap(int columnIndex, Class<T> type) throws SQLEx...

FILE: src/main/java/net/snowflake/client/api/resultset/SnowflakeResultSetMetaData.java
  type SnowflakeResultSetMetaData (line 6) | public interface SnowflakeResultSetMetaData {
    method getQueryID (line 7) | String getQueryID() throws SQLException;
    method getColumnNames (line 9) | List<String> getColumnNames() throws SQLException;
    method getColumnIndex (line 11) | int getColumnIndex(String columnName) throws SQLException;
    method getInternalColumnType (line 13) | int getInternalColumnType(int column) throws SQLException;
    method getColumnFields (line 15) | List<FieldMetadata> getColumnFields(int column) throws SQLException;
    method getVectorDimension (line 24) | int getVectorDimension(int column) throws SQLException;
    method getVectorDimension (line 33) | int getVectorDimension(String columnName) throws SQLException;

FILE: src/main/java/net/snowflake/client/api/resultset/SnowflakeResultSetSerializable.java
  type SnowflakeResultSetSerializable (line 11) | public interface SnowflakeResultSetSerializable {
    class ResultSetRetrieveConfig (line 13) | class ResultSetRetrieveConfig {
      method ResultSetRetrieveConfig (line 17) | public ResultSetRetrieveConfig(Builder builder) {
      method getProxyProperties (line 22) | public Properties getProxyProperties() {
      method getSfFullURL (line 26) | public String getSfFullURL() {
      class Builder (line 31) | public static class Builder {
        method Builder (line 32) | private Builder() {}
        method newInstance (line 37) | public static Builder newInstance() {
        method build (line 41) | public ResultSetRetrieveConfig build() throws IllegalArgumentExcep...
        method setProxyProperties (line 51) | public Builder setProxyProperties(Properties proxyProperties) {
        method setSfFullURL (line 56) | public Builder setSfFullURL(String sfFullURL) {
    method getResultSet (line 70) | ResultSet getResultSet(ResultSetRetrieveConfig resultSetRetrieveConfig...
    method getRowCount (line 78) | long getRowCount() throws SQLException;
    method getCompressedDataSizeInBytes (line 86) | long getCompressedDataSizeInBytes() throws SQLException;
    method getUncompressedDataSizeInBytes (line 94) | long getUncompressedDataSizeInBytes() throws SQLException;

FILE: src/main/java/net/snowflake/client/api/resultset/SnowflakeType.java
  type SnowflakeType (line 43) | public enum SnowflakeType {

FILE: src/main/java/net/snowflake/client/api/statement/SnowflakePreparedStatement.java
  type SnowflakePreparedStatement (line 8) | public interface SnowflakePreparedStatement {
    method getQueryID (line 13) | String getQueryID() throws SQLException;
    method executeAsyncQuery (line 21) | ResultSet executeAsyncQuery() throws SQLException;
    method setBigInteger (line 30) | void setBigInteger(int parameterIndex, BigInteger x) throws SQLException;
    method setMap (line 41) | <T> void setMap(int parameterIndex, Map<String, T> map, int type) thro...

FILE: src/main/java/net/snowflake/client/api/statement/SnowflakeStatement.java
  type SnowflakeStatement (line 8) | public interface SnowflakeStatement {
    method getQueryID (line 14) | String getQueryID() throws SQLException;
    method getBatchQueryIDs (line 20) | List<String> getBatchQueryIDs() throws SQLException;
    method setParameter (line 29) | void setParameter(String name, Object value) throws SQLException;
    method setBatchID (line 36) | void setBatchID(String batchID);
    method executeAsyncQuery (line 46) | ResultSet executeAsyncQuery(String sql) throws SQLException;
    method setAsyncQueryTimeout (line 54) | void setAsyncQueryTimeout(int seconds) throws SQLException;

FILE: src/main/java/net/snowflake/client/internal/api/implementation/connection/SnowflakeConnectionImpl.java
  class SnowflakeConnectionImpl (line 73) | public class SnowflakeConnectionImpl implements Connection, SnowflakeCon...
    method SnowflakeConnectionImpl (line 120) | public SnowflakeConnectionImpl(SFConnectionHandler sfConnectionHandler...
    method SnowflakeConnectionImpl (line 132) | public SnowflakeConnectionImpl(
    method SnowflakeConnectionImpl (line 145) | public SnowflakeConnectionImpl(String url, Properties info) throws SQL...
    method SnowflakeConnectionImpl (line 156) | public SnowflakeConnectionImpl(String url, Properties info, boolean fa...
    method initConnectionWithImpl (line 168) | private void initConnectionWithImpl(
    method returnMissingProperties (line 186) | public List<DriverPropertyInfo> returnMissingProperties() {
    method raiseSQLExceptionIfConnectionIsClosed (line 190) | private void raiseSQLExceptionIfConnectionIsClosed() throws SQLExcepti...
    method executeImmediate (line 203) | private void executeImmediate(String stmtText) throws SQLException {
    method createStatement (line 216) | @Override
    method createResultSet (line 231) | public ResultSet createResultSet(String queryID) throws SQLException {
    method getChildQueryIds (line 247) | @Override
    method close (line 261) | @Override
    method getSessionID (line 315) | @Override
    method getQueryStatus (line 321) | @Override
    method getRole (line 327) | @Override
    method getWarehouse (line 333) | @Override
    method getDatabase (line 339) | @Override
    method isClosed (line 345) | @Override
    method getMetaData (line 358) | @Override
    method prepareCall (line 365) | @Override
    method prepareCall (line 374) | public CallableStatement prepareCall(String sql, boolean skipParsing) ...
    method prepareCall (line 389) | @Override
    method prepareCall (line 401) | @Override
    method nativeSQL (line 413) | @Override
    method getAutoCommit (line 420) | @Override
    method setAutoCommit (line 427) | @Override
    method commit (line 439) | @Override
    method rollback (line 445) | @Override
    method rollback (line 451) | @Override
    method isReadOnly (line 458) | @Override
    method setReadOnly (line 465) | @Override
    method getCatalog (line 474) | @Override
    method setCatalog (line 480) | @Override
    method getTransactionIsolation (line 488) | @Override
    method setTransactionIsolation (line 501) | @Override
    method getWarnings (line 515) | @Override
    method clearWarnings (line 522) | @Override
    method createStatement (line 530) | @Override
    method createStatement (line 542) | @Override
    method prepareStatement (line 556) | @Override
    method prepareStatement (line 565) | @Override
    method prepareStatement (line 577) | @Override
    method prepareStatement (line 584) | @Override
    method prepareStatement (line 592) | @Override
    method prepareStatement (line 604) | @Override
    method prepareStatement (line 617) | public PreparedStatement prepareStatement(String sql, boolean skipPars...
    method getTypeMap (line 632) | @Override
    method setTypeMap (line 638) | @Override
    method getHoldability (line 644) | @Override
    method setHoldability (line 650) | @Override
    method setSavepoint (line 665) | @Override
    method setSavepoint (line 671) | @Override
    method releaseSavepoint (line 677) | @Override
    method createBlob (line 683) | @Override
    method createClob (line 689) | @Override
    method createNClob (line 695) | @Override
    method createSQLXML (line 701) | @Override
    method isValid (line 707) | @Override
    method setClientInfo (line 723) | @Override
    method raiseSetClientInfoException (line 730) | private void raiseSetClientInfoException(Map<String, ClientInfoStatus>...
    method getClientInfo (line 747) | @Override
    method setClientInfo (line 755) | @Override
    method getClientInfo (line 766) | @Override
    method createArrayOf (line 775) | @Override
    method createStruct (line 785) | @Override
    method getSchema (line 792) | @Override
    method setSchema (line 798) | @Override
    method abort (line 812) | @Override
    method setNetworkTimeout (line 819) | @Override
    method getNetworkTimeout (line 827) | @Override
    method isWrapperFor (line 834) | @Override
    method unwrap (line 841) | @SuppressWarnings("unchecked")
    method getDatabaseMajorVersion (line 853) | @Override
    method getDatabaseMinorVersion (line 859) | @Override
    method getDatabaseVersion (line 865) | @Override
    method getHandler (line 871) | public SFConnectionHandler getHandler() {
    method getHandler (line 875) | public SFConnectionHandler getHandler(InternalCallMarker internalCallM...
    method uploadStream (line 880) | @Override
    method uploadStream (line 886) | @Override
    method compressAndUploadStream (line 911) | @Deprecated
    method uploadStreamInternal (line 935) | private void uploadStreamInternal(
    method downloadStream (line 999) | @Override
    method downloadStream (line 1004) | @Override
    method setInjectedDelay (line 1088) | public void setInjectedDelay(int delay) throws SQLException {
    method injectedDelay (line 1093) | public void injectedDelay() throws SQLException {
    method setInjectFileUploadFailure (line 1109) | public void setInjectFileUploadFailure(String fileToFail) throws SQLEx...
    method getSFBaseSession (line 1114) | public SFBaseSession getSFBaseSession() {
    method getSFBaseSession (line 1118) | public SFBaseSession getSFBaseSession(InternalCallMarker internalCallM...
    method getSfSession (line 1125) | public SFSession getSfSession() throws SnowflakeSQLException {
    method getSfSession (line 1129) | public SFSession getSfSession(InternalCallMarker internalCallMarker)
    method appendWarning (line 1139) | private void appendWarning(SQLWarning w) {
    method appendWarnings (line 1147) | private void appendWarnings(List<SFException> warnings) {
    method getShowStatementParameters (line 1153) | public boolean getShowStatementParameters() {
    method removeClosedStatement (line 1157) | public void removeClosedStatement(Statement stmt) {

FILE: src/main/java/net/snowflake/client/internal/api/implementation/datasource/SnowflakeBasicDataSource.java
  class SnowflakeBasicDataSource (line 36) | public class SnowflakeBasicDataSource implements SnowflakeDataSource, Se...
    method writeObjectHelper (line 74) | private void writeObjectHelper(ObjectOutputStream out) throws IOExcept...
    method readObjectHelper (line 84) | private void readObjectHelper(ObjectInputStream in) throws IOException...
    method writeObject (line 94) | private void writeObject(ObjectOutputStream out) throws IOException {
    method readObject (line 98) | private void readObject(ObjectInputStream in) throws IOException, Clas...
    method getConnection (line 102) | @Override
    method getConnection (line 107) | @Override
    method getLogWriter (line 138) | @Override
    method setLogWriter (line 143) | @Override
    method getLoginTimeout (line 148) | @Override
    method setLoginTimeout (line 158) | @Override
    method getParentLogger (line 163) | @Override
    method isWrapperFor (line 168) | @Override
    method unwrap (line 173) | @Override
    method setUrl (line 178) | @Override
    method setDatabaseName (line 183) | @Override
    method setSchema (line 188) | @Override
    method setWarehouse (line 193) | @Override
    method setRole (line 198) | @Override
    method setUser (line 203) | @Override
    method setServerName (line 208) | @Override
    method setPassword (line 213) | @Override
    method setPortNumber (line 218) | @Override
    method setAccount (line 223) | @Override
    method setSsl (line 228) | @Override
    method setAuthenticator (line 233) | @Override
    method setToken (line 239) | @Override
    method getUrl (line 244) | @Override
    method setPrivateKey (line 261) | @Override
    method setPrivateKeyFile (line 267) | @Override
    method setPrivateKeyBase64 (line 276) | @Override
    method setTracing (line 285) | @Override
    method getProperties (line 290) | @Override
    method setAllowUnderscoresInHost (line 295) | @Override
    method setDisableGcsDefaultCredentials (line 302) | @Override
    method setDisableSamlURLCheck (line 309) | @Override
    method setPasscode (line 316) | @Override
    method setPasscodeInPassword (line 322) | @Override
    method setDisableSocksProxy (line 332) | @Override
    method setNonProxyHosts (line 339) | @Override
    method setProxyHost (line 344) | @Override
    method setProxyPassword (line 349) | @Override
    method setProxyPort (line 354) | @Override
    method setProxyProtocol (line 359) | @Override
    method setProxyUser (line 364) | @Override
    method setUseProxy (line 369) | @Override
    method setNetworkTimeout (line 374) | @Override
    method setQueryTimeout (line 381) | @Override
    method setApplication (line 387) | @Override
    method setClientConfigFile (line 392) | @Override
    method setEnablePatternSearch (line 397) | @Override
    method setEnablePutGet (line 404) | @Override
    method setArrowTreatDecimalAsInt (line 410) | @Override
    method setMaxHttpRetries (line 417) | @Override
    method setOcspFailOpen (line 423) | @Override
    method setPutGetMaxRetries (line 429) | @Override
    method setStringsQuotedForColumnDef (line 435) | @Override
    method setEnableDiagnostics (line 442) | @Override
    method setDiagnosticsAllowlistFile (line 448) | @Override
    method setJDBCDefaultFormatDateWithTimezone (line 454) | @Override
    method setGetDateUseNullTimezone (line 460) | @Override
    method setEnableClientRequestMfaToken (line 465) | @Override
    method setEnableClientStoreTemporaryCredential (line 473) | @Override
    method setBrowserResponseTimeout (line 482) | @Override
    method setHttpHeadersCustomizers (line 488) | @Override

FILE: src/main/java/net/snowflake/client/internal/api/implementation/metadata/SnowflakeDatabaseMetaDataImpl.java
  class SnowflakeDatabaseMetaDataImpl (line 61) | public class SnowflakeDatabaseMetaDataImpl implements SnowflakeDatabaseM...
    method SnowflakeDatabaseMetaDataImpl (line 181) | public SnowflakeDatabaseMetaDataImpl(Connection connection) throws SQL...
    method raiseSQLExceptionIfConnectionIsClosed (line 197) | private void raiseSQLExceptionIfConnectionIsClosed() throws SQLExcepti...
    method sendInBandTelemetryMetadataMetrics (line 215) | private void sendInBandTelemetryMetadataMetrics(
    method unescapeChars (line 251) | private String unescapeChars(String escapedString) {
    method escapeSqlQuotes (line 261) | private String escapeSqlQuotes(String originalString) {
    method escapeSingleQuoteForLikeCommand (line 271) | private String escapeSingleQuoteForLikeCommand(String arg) {
    method isSchemaNameWildcardPattern (line 289) | private boolean isSchemaNameWildcardPattern(String inputString) {
    method allProceduresAreCallable (line 297) | @Override
    method allTablesAreSelectable (line 304) | @Override
    method getURL (line 311) | @Override
    method getUserName (line 321) | @Override
    method isReadOnly (line 328) | @Override
    method nullsAreSortedHigh (line 336) | @Override
    method nullsAreSortedLow (line 343) | @Override
    method nullsAreSortedAtStart (line 350) | @Override
    method nullsAreSortedAtEnd (line 357) | @Override
    method getDatabaseProductName (line 364) | @Override
    method getDatabaseProductVersion (line 371) | @Override
    method getDriverName (line 378) | @Override
    method getDriverVersion (line 385) | @Override
    method getDriverMajorVersion (line 396) | @Override
    method getDriverMinorVersion (line 402) | @Override
    method usesLocalFiles (line 408) | @Override
    method usesLocalFilePerTable (line 415) | @Override
    method supportsMixedCaseIdentifiers (line 422) | @Override
    method storesUpperCaseIdentifiers (line 429) | @Override
    method storesLowerCaseIdentifiers (line 436) | @Override
    method storesMixedCaseIdentifiers (line 443) | @Override
    method supportsMixedCaseQuotedIdentifiers (line 450) | @Override
    method storesUpperCaseQuotedIdentifiers (line 457) | @Override
    method storesLowerCaseQuotedIdentifiers (line 464) | @Override
    method storesMixedCaseQuotedIdentifiers (line 471) | @Override
    method getIdentifierQuoteString (line 478) | @Override
    method getSQLKeywords (line 485) | @Override
    method getNumericFunctions (line 492) | @Override
    method getStringFunctions (line 499) | @Override
    method getSystemFunctions (line 506) | @Override
    method getTimeDateFunctions (line 513) | @Override
    method getSearchStringEscape (line 520) | @Override
    method getExtraNameCharacters (line 527) | @Override
    method supportsAlterTableWithAddColumn (line 534) | @Override
    method supportsAlterTableWithDropColumn (line 541) | @Override
    method supportsColumnAliasing (line 548) | @Override
    method nullPlusNonNullIsNull (line 555) | @Override
    method supportsConvert (line 562) | @Override
    method supportsConvert (line 569) | @Override
    method supportsTableCorrelationNames (line 576) | @Override
    method supportsDifferentTableCorrelationNames (line 583) | @Override
    method supportsExpressionsInOrderBy (line 590) | @Override
    method supportsOrderByUnrelated (line 597) | @Override
    method supportsGroupBy (line 604) | @Override
    method supportsGroupByUnrelated (line 611) | @Override
    method supportsGroupByBeyondSelect (line 618) | @Override
    method supportsLikeEscapeClause (line 625) | @Override
    method supportsMultipleResultSets (line 632) | @Override
    method supportsMultipleTransactions (line 639) | @Override
    method supportsNonNullableColumns (line 646) | @Override
    method supportsMinimumSQLGrammar (line 653) | @Override
    method supportsCoreSQLGrammar (line 660) | @Override
    method supportsExtendedSQLGrammar (line 667) | @Override
    method supportsANSI92EntryLevelSQL (line 674) | @Override
    method supportsANSI92IntermediateSQL (line 681) | @Override
    method supportsANSI92FullSQL (line 688) | @Override
    method supportsIntegrityEnhancementFacility (line 695) | @Override
    method supportsOuterJoins (line 702) | @Override
    method supportsFullOuterJoins (line 709) | @Override
    method supportsLimitedOuterJoins (line 716) | @Override
    method getSchemaTerm (line 723) | @Override
    method getProcedureTerm (line 730) | @Override
    method getCatalogTerm (line 737) | @Override
    method isCatalogAtStart (line 744) | @Override
    method getCatalogSeparator (line 751) | @Override
    method supportsSchemasInDataManipulation (line 758) | @Override
    method supportsSchemasInProcedureCalls (line 765) | @Override
    method supportsSchemasInTableDefinitions (line 772) | @Override
    method supportsSchemasInIndexDefinitions (line 779) | @Override
    method supportsSchemasInPrivilegeDefinitions (line 786) | @Override
    method supportsCatalogsInDataManipulation (line 793) | @Override
    method supportsCatalogsInProcedureCalls (line 800) | @Override
    method supportsCatalogsInTableDefinitions (line 807) | @Override
    method supportsCatalogsInIndexDefinitions (line 814) | @Override
    method supportsCatalogsInPrivilegeDefinitions (line 821) | @Override
    method supportsPositionedDelete (line 828) | @Override
    method supportsPositionedUpdate (line 835) | @Override
    method supportsSelectForUpdate (line 842) | @Override
    method supportsStoredProcedures (line 849) | @Override
    method supportsSubqueriesInComparisons (line 856) | @Override
    method supportsSubqueriesInExists (line 863) | @Override
    method supportsSubqueriesInIns (line 870) | @Override
    method supportsSubqueriesInQuantifieds (line 877) | @Override
    method supportsCorrelatedSubqueries (line 884) | @Override
    method supportsUnion (line 891) | @Override
    method supportsUnionAll (line 898) | @Override
    method supportsOpenCursorsAcrossCommit (line 905) | @Override
    method supportsOpenCursorsAcrossRollback (line 912) | @Override
    method supportsOpenStatementsAcrossCommit (line 919) | @Override
    method supportsOpenStatementsAcrossRollback (line 926) | @Override
    method getMaxBinaryLiteralLength (line 933) | @Override
    method getMaxCharLiteralLength (line 940) | @Override
    method getMaxColumnNameLength (line 950) | @Override
    method getMaxColumnsInGroupBy (line 957) | @Override
    method getMaxColumnsInIndex (line 964) | @Override
    method getMaxColumnsInOrderBy (line 971) | @Override
    method getMaxColumnsInSelect (line 978) | @Override
    method getMaxColumnsInTable (line 985) | @Override
    method getMaxConnections (line 992) | @Override
    method getMaxCursorNameLength (line 999) | @Override
    method getMaxIndexLength (line 1006) | @Override
    method getMaxSchemaNameLength (line 1013) | @Override
    method getMaxProcedureNameLength (line 1020) | @Override
    method getMaxCatalogNameLength (line 1027) | @Override
    method getMaxRowSize (line 1034) | @Override
    method doesMaxRowSizeIncludeBlobs (line 1041) | @Override
    method getMaxStatementLength (line 1048) | @Override
    method getMaxStatements (line 1055) | @Override
    method getMaxTableNameLength (line 1062) | @Override
    method getMaxTablesInSelect (line 1069) | @Override
    method getMaxUserNameLength (line 1076) | @Override
    method getDefaultTransactionIsolation (line 1083) | @Override
    method supportsTransactions (line 1090) | @Override
    method supportsTransactionIsolationLevel (line 1097) | @Override
    method supportsDataDefinitionAndDataManipulationTransactions (line 1105) | @Override
    method supportsDataManipulationTransactionsOnly (line 1112) | @Override
    method dataDefinitionCausesTransactionCommit (line 1119) | @Override
    method dataDefinitionIgnoredInTransactions (line 1126) | @Override
    method getProcedures (line 1133) | @Override
    method getProcedureColumns (line 1203) | @Override
    method applySessionContext (line 1418) | private ContextAwareMetadataSearch applySessionContext(String catalog,...
    method getFirstResultSetCommand (line 1443) | private String getFirstResultSetCommand(
    method getSecondResultSetCommand (line 1479) | private String getSecondResultSetCommand(
    method getTables (line 1499) | @Override
    method getSchemas (line 1653) | @Override
    method getCatalogs (line 1660) | @Override
    method getTableTypes (line 1688) | @Override
    method getColumns (line 1703) | @Override
    method getColumns (line 1713) | public ResultSet getColumns(
    method getColumnSize (line 1929) | static Integer getColumnSize(SnowflakeColumnMetadata columnMetadata) {
    method getColumnPrivileges (line 1974) | @Override
    method getTablePrivileges (line 2008) | @Override
    method getBestRowIdentifier (line 2110) | @Override
    method getVersionColumns (line 2121) | @Override
    method getPrimaryKeys (line 2131) | @Override
    method getForeignKeys (line 2295) | private ResultSet getForeignKeys(
    method getForeignKeyConstraintProperty (line 2589) | private short getForeignKeyConstraintProperty(String property_name, St...
    method getImportedKeys (line 2629) | @Override
    method getExportedKeys (line 2642) | @Override
    method getCrossReference (line 2655) | @Override
    method getTypeInfo (line 2685) | @Override
    method getStreams (line 2910) | public ResultSet getStreams(
    method getIndexInfo (line 3008) | @Override
    method supportsResultSetType (line 3057) | @Override
    method supportsResultSetConcurrency (line 3064) | @Override
    method ownUpdatesAreVisible (line 3072) | @Override
    method ownDeletesAreVisible (line 3079) | @Override
    method ownInsertsAreVisible (line 3086) | @Override
    method othersUpdatesAreVisible (line 3093) | @Override
    method othersDeletesAreVisible (line 3100) | @Override
    method othersInsertsAreVisible (line 3107) | @Override
    method updatesAreDetected (line 3114) | @Override
    method deletesAreDetected (line 3121) | @Override
    method insertsAreDetected (line 3128) | @Override
    method supportsBatchUpdates (line 3135) | @Override
    method getUDTs (line 3142) | @Override
    method getConnection (line 3175) | @Override
    method supportsSavepoints (line 3182) | @Override
    method supportsNamedParameters (line 3189) | @Override
    method supportsMultipleOpenResults (line 3196) | @Override
    method supportsGetGeneratedKeys (line 3203) | @Override
    method getSuperTypes (line 3210) | @Override
    method getSuperTables (line 3221) | @Override
    method getAttributes (line 3232) | @Override
    method supportsResultSetHoldability (line 3245) | @Override
    method getResultSetHoldability (line 3252) | @Override
    method getDatabaseMajorVersion (line 3258) | @Override
    method getDatabaseMinorVersion (line 3265) | @Override
    method getJDBCMajorVersion (line 3272) | @Override
    method getJDBCMinorVersion (line 3279) | @Override
    method getSQLStateType (line 3286) | @Override
    method locatorsUpdateCopy (line 3292) | @Override
    method supportsStatementPooling (line 3299) | @Override
    method getRowIdLifetime (line 3306) | @Override
    method getSchemas (line 3313) | @Override
    method supportsStoredFunctionsUsingCallSyntax (line 3387) | @Override
    method autoCommitFailureClosesAllResultSets (line 3394) | @Override
    method getClientInfoProperties (line 3401) | @Override
    method getFunctions (line 3408) | @Override
    method parseColumns (line 3486) | private List<String> parseColumns(String retType, String args) {
    method getFunctionColumns (line 3514) | @Override
    method getPseudoColumns (line 3673) | public ResultSet getPseudoColumns(
    method generatedKeyAlwaysReturned (line 3686) | public boolean generatedKeyAlwaysReturned() throws SQLException {
    method unwrap (line 3693) | @Override
    method isWrapperFor (line 3704) | @Override
    method executeAndReturnEmptyResultIfNotFound (line 3715) | private ResultSet executeAndReturnEmptyResultIfNotFound(
    class ContextAwareMetadataSearch (line 3746) | private static class ContextAwareMetadataSearch {
      method ContextAwareMetadataSearch (line 3751) | public ContextAwareMetadataSearch(String database, String schema, bo...
      method database (line 3757) | public String database() {
      method schema (line 3761) | public String schema() {
      method isExactSchema (line 3765) | public boolean isExactSchema() {

FILE: src/main/java/net/snowflake/client/internal/api/implementation/pooling/LogicalConnection.java
  class LogicalConnection (line 30) | class LogicalConnection implements Connection {
    method LogicalConnection (line 45) | LogicalConnection(SnowflakePooledConnection pooledConnection) throws S...
    method createStatement (line 51) | @Override
    method prepareStatement (line 63) | @Override
    method prepareCall (line 75) | @Override
    method nativeSQL (line 87) | @Override
    method setAutoCommit (line 99) | @Override
    method getAutoCommit (line 111) | @Override
    method commit (line 123) | @Override
    method rollback (line 135) | @Override
    method close (line 148) | @Override
    method isClosed (line 159) | @Override
    method getMetaData (line 164) | @Override
    method setReadOnly (line 176) | @Override
    method isReadOnly (line 188) | @Override
    method setCatalog (line 200) | @Override
    method getCatalog (line 212) | @Override
    method setTransactionIsolation (line 224) | @Override
    method getTransactionIsolation (line 236) | @Override
    method getWarnings (line 248) | @Override
    method clearWarnings (line 260) | @Override
    method createStatement (line 272) | @Override
    method prepareStatement (line 285) | @Override
    method prepareCall (line 298) | @Override
    method getTypeMap (line 311) | @Override
    method setTypeMap (line 323) | @Override
    method setHoldability (line 335) | @Override
    method getHoldability (line 347) | @Override
    method setSavepoint (line 359) | @Override
    method setSavepoint (line 371) | @Override
    method rollback (line 383) | @Override
    method releaseSavepoint (line 395) | @Override
    method createStatement (line 407) | @Override
    method prepareStatement (line 421) | @Override
    method prepareCall (line 436) | @Override
    method prepareStatement (line 451) | @Override
    method prepareStatement (line 463) | @Override
    method prepareStatement (line 475) | @Override
    method createClob (line 487) | @Override
    method createBlob (line 499) | @Override
    method createNClob (line 511) | @Override
    method createSQLXML (line 523) | @Override
    method isValid (line 535) | @Override
    method setClientInfo (line 545) | @Override
    method setClientInfo (line 555) | @Override
    method getClientInfo (line 565) | @Override
    method getClientInfo (line 575) | @Override
    method createArrayOf (line 587) | @Override
    method createStruct (line 599) | @Override
    method setSchema (line 611) | @Override
    method getSchema (line 623) | @Override
    method abort (line 635) | @Override
    method setNetworkTimeout (line 645) | @Override
    method getNetworkTimeout (line 657) | @Override
    method isWrapperFor (line 669) | @Override
    method unwrap (line 679) | @Override
    method throwExceptionIfClosed (line 689) | private void throwExceptionIfClosed() throws SQLException {

FILE: src/main/java/net/snowflake/client/internal/api/implementation/pooling/SnowflakeConnectionPoolDataSourceImpl.java
  class SnowflakeConnectionPoolDataSourceImpl (line 9) | public class SnowflakeConnectionPoolDataSourceImpl extends SnowflakeBasi...
    method getPooledConnection (line 11) | @Override
    method getPooledConnection (line 17) | @Override

FILE: src/main/java/net/snowflake/client/internal/api/implementation/pooling/SnowflakePooledConnection.java
  class SnowflakePooledConnection (line 16) | public class SnowflakePooledConnection implements PooledConnection {
    method SnowflakePooledConnection (line 25) | public SnowflakePooledConnection(Connection physicalConnection) throws...
    method getConnection (line 34) | @Override
    method getPhysicalConnection (line 43) | Connection getPhysicalConnection() {
    method fireConnectionCloseEvent (line 48) | void fireConnectionCloseEvent() {
    method fireConnectionErrorEvent (line 54) | void fireConnectionErrorEvent(SQLException e) {
    method addConnectionEventListener (line 60) | @Override
    method close (line 65) | @Override
    method removeConnectionEventListener (line 78) | @Override
    method addStatementEventListener (line 83) | @Override
    method removeStatementEventListener (line 88) | @Override

FILE: src/main/java/net/snowflake/client/internal/api/implementation/resultset/FieldMetadataImpl.java
  class FieldMetadataImpl (line 9) | public class FieldMetadataImpl implements FieldMetadata {
    method FieldMetadataImpl (line 24) | public FieldMetadataImpl(
    method FieldMetadataImpl (line 47) | public FieldMetadataImpl() {
    method getName (line 51) | @Override
    method setName (line 56) | public void setName(String name) {
    method getTypeName (line 60) | @Override
    method setTypeName (line 65) | public void setTypeName(String typeName) {
    method getType (line 69) | @Override
    method setType (line 74) | public void setType(int type) {
    method isNullable (line 78) | @Override
    method setNullable (line 83) | public void setNullable(boolean nullable) {
    method getByteLength (line 87) | @Override
    method setByteLength (line 92) | public void setByteLength(int byteLength) {
    method getPrecision (line 96) | @Override
    method setPrecision (line 101) | public void setPrecision(int precision) {
    method getScale (line 105) | @Override
    method setScale (line 110) | public void setScale(int scale) {
    method isFixed (line 114) | @Override
    method setFixed (line 119) | public void setFixed(boolean fixed) {
    method getBase (line 123) | @Override
    method setBase (line 128) | public void setBase(SnowflakeType base) {
    method getFields (line 132) | @Override
    method setFields (line 137) | public void setFields(List<FieldMetadata> fields) {

FILE: src/main/java/net/snowflake/client/internal/api/implementation/resultset/SnowflakeBaseResultSet.java
  class SnowflakeBaseResultSet (line 65) | public abstract class SnowflakeBaseResultSet implements ResultSet, Snowf...
    method SnowflakeBaseResultSet (line 81) | public SnowflakeBaseResultSet(Statement statement) throws SQLException {
    method maybeGetSession (line 90) | private static SFBaseSession maybeGetSession(Statement statement) {
    method SnowflakeBaseResultSet (line 110) | public SnowflakeBaseResultSet(SnowflakeResultSetSerializableV1 resultS...
    method SnowflakeBaseResultSet (line 126) | protected SnowflakeBaseResultSet() throws SQLException {
    method next (line 135) | @Override
    method isClosed (line 138) | @Override
    method raiseSQLExceptionIfResultSetIsClosed (line 146) | protected void raiseSQLExceptionIfResultSetIsClosed() throws SQLExcept...
    method getBytes (line 152) | @Override
    method getDate (line 163) | public abstract Date getDate(int columnIndex, TimeZone tz) throws SQLE...
    method getGetDateUseNullTimezone (line 165) | private boolean getGetDateUseNullTimezone() {
    method getDate (line 177) | @Override
    method getTime (line 183) | @Override
    method getTimestamp (line 186) | @Override
    method getTimestamp (line 200) | public abstract Timestamp getTimestamp(int columnIndex, TimeZone tz) t...
    method getAsciiStream (line 202) | @Override
    method getUnicodeStream (line 211) | @Deprecated
    method getBinaryStream (line 218) | @Override
    method getString (line 224) | @Override
    method getBoolean (line 231) | @Override
    method getByte (line 238) | @Override
    method getShort (line 246) | @Override
    method getInt (line 253) | @Override
    method getLong (line 260) | @Override
    method getFloat (line 267) | @Override
    method getDouble (line 274) | @Override
    method getBigDecimal (line 284) | @Deprecated
    method getBytes (line 292) | @Override
    method getDate (line 299) | @Override
    method getTime (line 306) | @Override
    method getTimestamp (line 313) | @Override
    method getAsciiStream (line 320) | @Override
    method getUnicodeStream (line 329) | @Deprecated
    method getBinaryStream (line 337) | @Override
    method getWarnings (line 344) | @Override
    method clearWarnings (line 351) | @Override
    method getCursorName (line 357) | @Override
    method getMetaData (line 364) | @Override
    method getObject (line 371) | @Override
    method findColumn (line 378) | @Override
    method getCharacterStream (line 392) | @Override
    method getCharacterStream (line 400) | @Override
    method getBigDecimal (line 406) | @Override
    method beforeFirst (line 413) | @Override
    method afterLast (line 420) | @Override
    method first (line 427) | @Override
    method last (line 434) | @Override
    method absolute (line 441) | @Override
    method relative (line 448) | @Override
    method previous (line 455) | @Override
    method getFetchDirection (line 462) | @Override
    method setFetchDirection (line 469) | @Override
    method getFetchSize (line 479) | @Override
    method setFetchSize (line 486) | @Override
    method getType (line 494) | @Override
    method getConcurrency (line 501) | @Override
    method rowUpdated (line 508) | @Override
    method rowInserted (line 515) | @Override
    method rowDeleted (line 522) | @Override
    method updateNull (line 529) | @Override
    method updateBoolean (line 536) | @Override
    method updateByte (line 543) | @Override
    method updateShort (line 550) | @Override
    method updateInt (line 557) | @Override
    method updateLong (line 564) | @Override
    method updateFloat (line 571) | @Override
    method updateDouble (line 578) | @Override
    method updateBigDecimal (line 585) | @Override
    method updateString (line 592) | @Override
    method updateBytes (line 599) | @Override
    method updateDate (line 606) | @Override
    method updateTime (line 613) | @Override
    method updateTimestamp (line 620) | @Override
    method updateAsciiStream (line 627) | @Override
    method updateBinaryStream (line 635) | @Override
    method updateCharacterStream (line 643) | @Override
    method updateObject (line 651) | @Override
    method updateObject (line 659) | @Override
    method updateNull (line 666) | @Override
    method updateBoolean (line 673) | @Override
    method updateByte (line 680) | @Override
    method updateShort (line 687) | @Override
    method updateInt (line 694) | @Override
    method updateLong (line 701) | @Override
    method updateFloat (line 708) | @Override
    method updateDouble (line 715) | @Override
    method updateBigDecimal (line 722) | @Override
    method updateString (line 729) | @Override
    method updateBytes (line 736) | @Override
    method updateDate (line 743) | @Override
    method updateTime (line 750) | @Override
    method updateTimestamp (line 757) | @Override
    method updateAsciiStream (line 764) | @Override
    method updateBinaryStream (line 772) | @Override
    method updateCharacterStream (line 782) | @Override
    method updateObject (line 792) | @Override
    method updateObject (line 800) | @Override
    method insertRow (line 807) | @Override
    method updateRow (line 814) | @Override
    method deleteRow (line 821) | @Override
    method refreshRow (line 828) | @Override
    method cancelRowUpdates (line 835) | @Override
    method moveToInsertRow (line 842) | @Override
    method moveToCurrentRow (line 849) | @Override
    method getStatement (line 856) | @Override
    method getObject (line 863) | @Override
    method getRef (line 870) | @Override
    method getBlob (line 877) | @Override
    method getClob (line 884) | @Override
    method getArray (line 892) | @Override
    method getObject (line 899) | @Override
    method getRef (line 907) | @Override
    method getBlob (line 914) | @Override
    method getClob (line 921) | @Override
    method getArray (line 929) | @Override
    method getDate (line 936) | @Override
    method getDate (line 942) | @Override
    method getTime (line 949) | @Override
    method getTime (line 956) | @Override
    method getTimestamp (line 963) | @Override
    method getTimestamp (line 970) | @Override
    method getURL (line 977) | @Override
    method getURL (line 984) | @Override
    method updateRef (line 991) | @Override
    method updateRef (line 998) | @Override
    method updateBlob (line 1005) | @Override
    method updateBlob (line 1012) | @Override
    method updateClob (line 1019) | @Override
    method updateClob (line 1026) | @Override
    method updateArray (line 1033) | @Override
    method updateArray (line 1040) | @Override
    method getRowId (line 1047) | @Override
    method getRowId (line 1054) | @Override
    method updateRowId (line 1061) | @Override
    method updateRowId (line 1068) | @Override
    method getHoldability (line 1075) | @Override
    method updateNString (line 1082) | @Override
    method updateNString (line 1089) | @Override
    method updateNClob (line 1096) | @Override
    method updateNClob (line 1103) | @Override
    method getNClob (line 1110) | @Override
    method getNClob (line 1117) | @Override
    method getSQLXML (line 1124) | @Override
    method getSQLXML (line 1131) | @Override
    method updateSQLXML (line 1138) | @Override
    method updateSQLXML (line 1145) | @Override
    method getNString (line 1152) | @Override
    method getNString (line 1159) | @Override
    method getNCharacterStream (line 1166) | @Override
    method getNCharacterStream (line 1173) | @Override
    method updateNCharacterStream (line 1180) | @Override
    method updateNCharacterStream (line 1188) | @Override
    method updateAsciiStream (line 1198) | @Override
    method updateBinaryStream (line 1206) | @Override
    method updateCharacterStream (line 1214) | @Override
    method updateAsciiStream (line 1222) | @Override
    method updateBinaryStream (line 1232) | @Override
    method updateCharacterStream (line 1242) | @Override
    method updateBlob (line 1252) | @Override
    method updateBlob (line 1262) | @Override
    method updateClob (line 1272) | @Override
    method updateClob (line 1279) | @Override
    method updateNClob (line 1287) | @Override
    method updateNClob (line 1295) | @Override
    method updateNCharacterStream (line 1303) | @Override
    method updateNCharacterStream (line 1310) | @Override
    method updateAsciiStream (line 1318) | @Override
    method updateBinaryStream (line 1325) | @Override
    method updateCharacterStream (line 1332) | @Override
    method updateAsciiStream (line 1339) | @Override
    method updateBinaryStream (line 1346) | @Override
    method updateCharacterStream (line 1353) | @Override
    method updateBlob (line 1361) | @Override
    method updateBlob (line 1368) | @Override
    method updateClob (line 1375) | @Override
    method updateClob (line 1382) | @Override
    method updateNClob (line 1389) | @Override
    method updateNClob (line 1396) | @Override
    method getObject (line 1403) | @Override
    method getList (line 1492) | public <T> List<T> getList(int columnIndex, Class<T> type) throws SQLE...
    method getArray (line 1501) | public <T> T[] getArray(int columnIndex, Class<T> type) throws SQLExce...
    method getMap (line 1654) | public <T> Map<String, T> getMap(int columnIndex, Class<T> type) throw...
    method getObject (line 1820) | @Override
    method unwrap (line 1826) | @SuppressWarnings("unchecked")
    method isWrapperFor (line 1838) | @Override
    method prepareMapWithValues (line 1845) | private <T> Map<String, Object> prepareMapWithValues(Object object, Cl...

FILE: src/main/java/net/snowflake/client/internal/api/implementation/statement/SnowflakeCallableStatementImpl.java
  class SnowflakeCallableStatementImpl (line 28) | public final class SnowflakeCallableStatementImpl extends SnowflakePrepa...
    method SnowflakeCallableStatementImpl (line 45) | public SnowflakeCallableStatementImpl(
    method parseSqlEscapeSyntax (line 69) | public static String parseSqlEscapeSyntax(String originalSql) {
    method registerOutParameter (line 83) | @Override
    method registerOutParameter (line 90) | @Override
    method registerOutParameter (line 97) | @Override
    method registerOutParameter (line 105) | @Override
    method registerOutParameter (line 112) | @Override
    method registerOutParameter (line 120) | @Override
    method wasNull (line 128) | @Override
    method getString (line 135) | @Override
    method getString (line 142) | @Override
    method getBoolean (line 149) | @Override
    method getBoolean (line 156) | @Override
    method getByte (line 163) | @Override
    method getByte (line 170) | @Override
    method getShort (line 177) | @Override
    method getShort (line 184) | @Override
    method getInt (line 191) | @Override
    method getInt (line 198) | @Override
    method getLong (line 205) | @Override
    method getLong (line 212) | @Override
    method getFloat (line 219) | @Override
    method getFloat (line 226) | @Override
    method getDouble (line 233) | @Override
    method getDouble (line 240) | @Override
    method getBigDecimal (line 247) | @Override
    method getBigDecimal (line 255) | @Override
    method getBigDecimal (line 263) | @Override
    method getBytes (line 271) | @Override
    method getBytes (line 278) | @Override
    method getDate (line 285) | @Override
    method getDate (line 292) | @Override
    method getTime (line 299) | @Override
    method getTime (line 306) | @Override
    method getTime (line 313) | @Override
    method getTimestamp (line 320) | @Override
    method getTimestamp (line 327) | @Override
    method getTimestamp (line 334) | @Override
    method getObject (line 341) | @Override
    method getObject (line 348) | @Override
    method getObject (line 355) | @Override
    method getObject (line 362) | @Override
    method getRef (line 369) | @Override
    method getRef (line 376) | @Override
    method getBlob (line 383) | @Override
    method getBlob (line 390) | @Override
    method getClob (line 397) | @Override
    method getClob (line 404) | @Override
    method getArray (line 411) | @Override
    method getArray (line 418) | @Override
    method getDate (line 425) | @Override
    method getDate (line 432) | @Override
    method getTime (line 439) | @Override
    method getTimestamp (line 446) | @Override
    method getURL (line 453) | @Override
    method getURL (line 460) | @Override
    method getRowId (line 467) | @Override
    method getRowId (line 474) | @Override
    method getSQLXML (line 481) | @Override
    method getSQLXML (line 488) | @Override
    method getNString (line 495) | @Override
    method getNString (line 502) | @Override
    method getNCharacterStream (line 509) | @Override
    method getNCharacterStream (line 516) | @Override
    method getCharacterStream (line 523) | @Override
    method getCharacterStream (line 530) | @Override
    method setSQLXML (line 542) | @Override
    method setRowId (line 549) | @Override
    method setNString (line 556) | @Override
    method setNCharacterStream (line 563) | @Override
    method setNCharacterStream (line 570) | @Override
    method setNClob (line 578) | @Override
    method setClob (line 585) | @Override
    method setClob (line 592) | @Override
    method setClob (line 599) | @Override
    method setBlob (line 606) | @Override
    method setBlob (line 614) | @Override
    method setNClob (line 621) | @Override
    method getObject (line 628) | @Override
    method getObject (line 635) | @Override
    method setBlob (line 642) | @Override
    method setNClob (line 649) | @Override
    method getNClob (line 656) | @Override
    method getNClob (line 663) | @Override
    method setURL (line 670) | @Override
    method setNull (line 677) | @Override
    method setBoolean (line 684) | @Override
    method setByte (line 691) | @Override
    method setShort (line 698) | @Override
    method setInt (line 705) | @Override
    method setLong (line 712) | @Override
    method setFloat (line 719) | @Override
    method setDouble (line 726) | @Override
    method setBigDecimal (line 733) | @Override
    method setString (line 740) | @Override
    method setBytes (line 747) | @Override
    method setDate (line 754) | @Override
    method setTime (line 761) | @Override
    method setTimestamp (line 768) | @Override
    method setAsciiStream (line 775) | @Override
    method setAsciiStream (line 782) | @Override
    method setAsciiStream (line 789) | @Override
    method setBinaryStream (line 796) | @Override
    method setBinaryStream (line 803) | @Override
    method setBinaryStream (line 810) | @Override
    method setObject (line 818) | @Override
    method setObject (line 826) | @Override
    method setObject (line 833) | @Override
    method setCharacterStream (line 840) | @Override
    method setCharacterStream (line 848) | @Override
    method setCharacterStream (line 856) | @Override
    method setDate (line 863) | @Override
    method setTime (line 870) | @Override
    method setTimestamp (line 877) | @Override
    method setNull (line 884) | @Override

FILE: src/main/java/net/snowflake/client/internal/api/implementation/statement/SnowflakePreparedStatementImpl.java
  class SnowflakePreparedStatementImpl (line 70) | public class SnowflakePreparedStatementImpl extends SnowflakeStatementImpl
    method SnowflakePreparedStatementImpl (line 133) | public SnowflakePreparedStatementImpl(
    method describeSqlIfNotTried (line 156) | private void describeSqlIfNotTried() throws SQLException {
    method executeQuery (line 179) | @Override
    method executeAsyncQuery (line 201) | public ResultSet executeAsyncQuery() throws SQLException {
    method executeLargeUpdate (line 217) | @Override
    method executeUpdate (line 229) | @Override
    method setNull (line 235) | @Override
    method setBoolean (line 247) | @Override
    method setByte (line 258) | @Override
    method setShort (line 269) | @Override
    method setInt (line 281) | @Override
    method setLong (line 293) | @Override
    method setBigInteger (line 305) | @Override
    method setFloat (line 317) | @Override
    method setDouble (line 329) | @Override
    method setBigDecimal (line 341) | @Override
    method setString (line 357) | @Override
    method setBytes (line 369) | @Override
    method setObjectInternal (line 381) | private void setObjectInternal(int parameterIndex, SQLData sqlData) th...
    method setDate (line 397) | @Override
    method setTime (line 417) | @Override
    method setTimestamp (line 441) | @Override
    method setTimestampWithType (line 448) | private void setTimestampWithType(int parameterIndex, Timestamp x, int...
    method setAsciiStream (line 476) | @Override
    method setUnicodeStream (line 482) | @Override
    method setBinaryStream (line 489) | @Override
    method clearParameters (line 495) | @Override
    method setObject (line 500) | @Override
    method setYearMonthInterval (line 534) | private void setYearMonthInterval(int parameterIndex, String x) throws...
    method setDayTimeInterval (line 546) | private void setDayTimeInterval(int parameterIndex, String x) throws S...
    method setDecfloat (line 558) | private void setDecfloat(int parameterIndex, BigDecimal x) throws SQLE...
    method setObject (line 570) | @Override
    method execute (line 611) | @Override
    method addBatch (line 624) | @Override
    method setCharacterStream (line 702) | @Override
    method setRef (line 709) | @Override
    method setBlob (line 715) | @Override
    method setClob (line 721) | @Override
    method setArray (line 726) | @Override
    method setMap (line 756) | @Override
    method getMetaData (line 792) | @Override
    method setDate (line 802) | @Override
    method setTime (line 826) | @Override
    method setTimestamp (line 833) | @Override
    method setNull (line 875) | @Override
    method setURL (line 882) | @Override
    method getParameterMetaData (line 888) | @Override
    method setRowId (line 895) | @Override
    method setNString (line 901) | @Override
    method setNCharacterStream (line 907) | @Override
    method setNClob (line 914) | @Override
    method setClob (line 920) | @Override
    method setBlob (line 926) | @Override
    method setNClob (line 933) | @Override
    method setSQLXML (line 939) | @Override
    method setObject (line 945) | @Override
    method setAsciiStream (line 963) | @Override
    method setBinaryStream (line 969) | @Override
    method setCharacterStream (line 975) | @Override
    method setAsciiStream (line 982) | @Override
    method setBinaryStream (line 988) | @Override
    method setCharacterStream (line 994) | @Override
    method setNCharacterStream (line 1000) | @Override
    method setClob (line 1006) | @Override
    method setBlob (line 1012) | @Override
    method setNClob (line 1018) | @Override
    method executeUpdate (line 1024) | @Override
    method execute (line 1032) | @Override
    method addBatch (line 1040) | @Override
    method clearBatch (line 1046) | @Override
    method executeBatch (line 1055) | @Override
    method executeLargeBatch (line 1061) | @Override
    method executeBatchInternalWithArrayBind (line 1067) | VariableTypeArray executeBatchInternalWithArrayBind(boolean isLong) th...
    method executeUpdate (line 1153) | @Override
    method executeUpdate (line 1159) | @Override
    method executeUpdate (line 1165) | @Override
    method execute (line 1171) | @Override
    method execute (line 1177) | @Override
    method execute (line 1183) | @Override
    method getBatchParameterBindings (line 1190) | public Map<String, ParameterBindingDTO> getBatchParameterBindings() {
    method getParameterBindings (line 1195) | public Map<String, ParameterBindingDTO> getParameterBindings() {
    method isAlreadyDescribed (line 1200) | public boolean isAlreadyDescribed() {
    method isArrayBindSupported (line 1205) | public boolean isArrayBindSupported() {
    method resultSetMetadataHandler (line 1209) | @Override
    method toString (line 1225) | public String toString() {

FILE: src/main/java/net/snowflake/client/internal/api/implementation/statement/SnowflakeStatementImpl.java
  class SnowflakeStatementImpl (line 44) | public class SnowflakeStatementImpl implements Statement, SnowflakeState...
    method SnowflakeStatementImpl (line 102) | public SnowflakeStatementImpl(
    method raiseSQLExceptionIfStatementIsClosed (line 141) | protected void raiseSQLExceptionIfStatementIsClosed() throws SQLExcept...
    method executeQuery (line 154) | @Override
    method executeAsyncQuery (line 174) | public ResultSet executeAsyncQuery(String sql) throws SQLException {
    method resultSetMetadataHandler (line 196) | protected void resultSetMetadataHandler(SFBaseResultSet resultSet) thr...
    method executeUpdate (line 207) | @Override
    method executeLargeUpdate (line 219) | @Override
    method executeUpdateInternal (line 230) | public long executeUpdateInternal(
    method setQueryIdWhenValidOrNull (line 281) | private void setQueryIdWhenValidOrNull(String queryId) {
    method executeQueryInternal (line 298) | ResultSet executeQueryInternal(
    method executeInternal (line 355) | boolean executeInternal(
    method getQueryID (line 423) | public String getQueryID() {
    method getBatchQueryIDs (line 430) | public List<String> getBatchQueryIDs() {
    method getChildQueryIds (line 437) | public String[] getChildQueryIds(String queryID) throws SQLException {
    method getOpenResultSets (line 444) | public Set<ResultSet> getOpenResultSets() {
    method execute (line 455) | @Override
    method execute (line 466) | @Override
    method execute (line 478) | @Override
    method execute (line 486) | @Override
    method executeBatch (line 501) | @Override
    method executeLargeBatch (line 514) | @Override
    method executeBatchInternal (line 530) | VariableTypeArray executeBatchInternal(boolean isLong) throws SQLExcep...
    method executeUpdate (line 600) | @Override
    method executeLargeUpdate (line 607) | @Override
    method executeUpdate (line 619) | @Override
    method executeLargeUpdate (line 627) | @Override
    method executeUpdate (line 635) | @Override
    method executeLargeUpdate (line 643) | @Override
    method getConnection (line 651) | @Override
    method getFetchDirection (line 658) | @Override
    method getFetchSize (line 665) | @Override
    method getGeneratedKeys (line 672) | @Override
    method getMaxFieldSize (line 679) | @Override
    method getMaxRows (line 686) | @Override
    method getMoreResults (line 693) | @Override
    method getMoreResults (line 700) | @Override
    method getQueryTimeout (line 750) | @Override
    method getResultSet (line 757) | @Override
    method getResultSetConcurrency (line 764) | @Override
    method getResultSetHoldability (line 771) | @Override
    method getResultSetType (line 778) | @Override
    method getUpdateCount (line 785) | @Override
    method getLargeUpdateCount (line 791) | @Override
    method getUpdateCountIfDML (line 797) | private long getUpdateCountIfDML() throws SQLException {
    method getWarnings (line 802) | @Override
    method isClosed (line 809) | @Override
    method isPoolable (line 815) | @Override
    method setCursorName (line 822) | @Override
    method setEscapeProcessing (line 830) | @Override
    method setFetchDirection (line 839) | @Override
    method setFetchSize (line 849) | @Override
    method setMaxFieldSize (line 856) | @Override
    method setMaxRows (line 864) | @Override
    method setPoolable (line 881) | @Override
    method setParameter (line 900) | public void setParameter(String name, Object value) throws SQLException {
    method setBatchID (line 912) | @Override
    method setQueryTimeout (line 917) | @Override
    method setAsyncQueryTimeout (line 933) | @Override
    method isWrapperFor (line 950) | @Override
    method unwrap (line 957) | @SuppressWarnings("unchecked")
    method closeOnCompletion (line 969) | @Override
    method isCloseOnCompletion (line 976) | @Override
    method close (line 983) | @Override
    method close (line 988) | public void close(boolean removeClosedStatementFromConnection) throws ...
    method cancel (line 1016) | @Override
    method clearWarnings (line 1028) | @Override
    method addBatch (line 1035) | @Override
    method clearBatch (line 1044) | @Override
    method executeSetProperty (line 1053) | private void executeSetProperty(final String sql) {
    method getSFBaseStatement (line 1077) | public SFBaseStatement getSFBaseStatement() throws SQLException {
    method getSfStatement (line 1083) | public SFStatement getSfStatement() throws SnowflakeSQLException {
    method removeClosedResultSet (line 1092) | public void removeClosedResultSet(ResultSet rs) {
    class BatchEntry (line 1096) | final class BatchEntry {
      method BatchEntry (line 1101) | BatchEntry(String sql, Map<String, ParameterBindingDTO> parameterBin...
      method getSql (line 1106) | public String getSql() {
      method getParameterBindings (line 1110) | public Map<String, ParameterBindingDTO> getParameterBindings() {
    class NoOpSnowflakeStatementImpl (line 1118) | public static class NoOpSnowflakeStatementImpl extends SnowflakeStatem...
      method NoOpSnowflakeStatementImpl (line 1119) | public NoOpSnowflakeStatementImpl() throws SQLException {
      method executeQuery (line 1127) | @Override
      method executeUpdate (line 1132) | @Override
      method executeLargeUpdate (line 1137) | @Override
      method getQueryID (line 1142) | @Override
      method getBatchQueryIDs (line 1147) | @Override
      method execute (line 1152) | @Override
      method execute (line 1157) | @Override
      method execute (line 1162) | @Override
      method execute (line 1167) | @Override
      method executeBatch (line 1172) | @Override
      method executeLargeBatch (line 1177) | @Override
      method executeUpdate (line 1182) | @Override
      method executeLargeUpdate (line 1187) | @Override
      method executeUpdate (line 1192) | @Override
      method executeLargeUpdate (line 1197) | @Override
      method executeUpdate (line 1202) | @Override
      method executeLargeUpdate (line 1207) | @Override
      method getConnection (line 1212) | @Override
      method getFetchDirection (line 1217) | @Override
      method getFetchSize (line 1222) | @Override
      method getGeneratedKeys (line 1227) | @Override
      method getMaxFieldSize (line 1232) | @Override
      method getMaxRows (line 1237) | @Override
      method getMoreResults (line 1242) | @Override
      method getMoreResults (line 1247) | @Override
      method getQueryTimeout (line 1252) | @Override
      method getResultSet (line 1257) | @Override
      method getResultSetConcurrency (line 1262) | @Override
      method getResultSetHoldability (line 1267) | @Override
      method getResultSetType (line 1272) | @Override
      method getUpdateCount (line 1277) | @Override
      method getLargeUpdateCount (line 1282) | @Override
      method getWarnings (line 1287) | @Override
      method isClosed (line 1292) | @Override
      method isPoolable (line 1297) | @Override
      method setCursorName (line 1302) | @Override
      method setEscapeProcessing (line 1305) | @Override
      method setFetchDirection (line 1308) | @Override
      method setFetchSize (line 1311) | @Override
      method setMaxFieldSize (line 1314) | @Override
      method setMaxRows (line 1317) | @Override
      method setPoolable (line 1320) | @Override
      method setParameter (line 1323) | @Override
      method setQueryTimeout (line 1326) | @Override
      method setAsyncQueryTimeout (line 1329) | @Override
      method isWrapperFor (line 1332) | @Override
      method unwrap (line 1339) | @SuppressWarnings("unchecked")
      method closeOnCompletion (line 1351) | @Override
      method isCloseOnCompletion (line 1354) | @Override
      method close (line 1359) | @Override
      method close (line 1362) | @Override
      method cancel (line 1365) | @Override
      method clearWarnings (line 1368) | @Override
      method addBatch (line 1371) | @Override
      method clearBatch (line 1374) | @Override
      method removeClosedResultSet (line 1377) | @Override

FILE: src/main/java/net/snowflake/client/internal/common/core/SFBinary.java
  class SFBinary (line 17) | public class SFBinary {
    method SFBinary (line 65) | public SFBinary(byte[] bytes) {
    method validHex (line 78) | public static boolean validHex(String str) {
    method fromHex (line 103) | public static SFBinary fromHex(String str) {
    method fromBase64 (line 121) | public static SFBinary fromBase64(String str) {
    method getBytes (line 130) | public byte[] getBytes() {
    method length (line 140) | public int length() {
    method toHex (line 151) | public String toHex() {
    method toBase64 (line 164) | public String toBase64() {
    method substring (line 179) | public SFBinary substring(int start, int end) {
    method concat (line 196) | public SFBinary concat(SFBinary other) {
    method compareTo (line 216) | public int compareTo(SFBinary other) {
    method hashCode (line 246) | @Override
    method equals (line 256) | @Override
    method toString (line 266) | @Override

FILE: src/main/java/net/snowflake/client/internal/common/core/SFBinaryFormat.java
  type SFBinaryFormat (line 27) | public enum SFBinaryFormat {
    method format (line 29) | @Override
    method parse (line 34) | @Override
    method format (line 41) | @Override
    method parse (line 46) | @Override
    method format (line 53) | @Override
    method parse (line 64) | @Override
    method format (line 77) | public abstract String format(SFBinary binary);
    method parse (line 86) | public abstract SFBinary parse(String string);
    method getFormat (line 109) | public static SFBinaryFormat getFormat(String name) {
    method getSafeOutputFormat (line 127) | public static SFBinaryFormat getSafeOutputFormat(String name) {
    method lookup (line 146) | private static SFBinaryFormat lookup(String name) {

FILE: src/main/java/net/snowflake/client/internal/config/ConnectionParameters.java
  class ConnectionParameters (line 5) | public class ConnectionParameters {
    method ConnectionParameters (line 9) | public ConnectionParameters(String uri, Properties params) {
    method getUrl (line 14) | public String getUrl() {
    method getParams (line 18) | public Properties getParams() {

FILE: src/main/java/net/snowflake/client/internal/config/SFClientConfig.java
  class SFClientConfig (line 14) | public class SFClientConfig {
    method SFClientConfig (line 23) | public SFClientConfig() {}
    method SFClientConfig (line 25) | public SFClientConfig(CommonProps commonProps) {
    method getCommonProps (line 29) | public CommonProps getCommonProps() {
    method setCommonProps (line 33) | public void setCommonProps(CommonProps commonProps) {
    method getConfigFilePath (line 37) | public String getConfigFilePath() {
    method setConfigFilePath (line 41) | public void setConfigFilePath(String configFilePath) {
    method getUnknownParamKeys (line 45) | Set<String> getUnknownParamKeys() {
    method equals (line 57) | @Override
    method hashCode (line 69) | @Override
    class CommonProps (line 74) | public static class CommonProps {
      method CommonProps (line 84) | public CommonProps() {}
      method CommonProps (line 86) | public void CommonProps(String logLevel, String logPath) {
      method getLogLevel (line 91) | public String getLogLevel() {
      method setLogLevel (line 95) | public void setLogLevel(String logLevel) {
      method getLogPath (line 99) | public String getLogPath() {
      method setLogPath (line 103) | public void setLogPath(String logPath) {
      method equals (line 107) | @Override
      method hashCode (line 119) | @Override

FILE: src/main/java/net/snowflake/client/internal/config/SFClientConfigParser.java
  class SFClientConfigParser (line 20) | public class SFClientConfigParser {
    method loadSFClientConfig (line 38) | public static SFClientConfig loadSFClientConfig(String configFilePath)...
    method loadSFClientConfigInsecure (line 47) | private static SFClientConfig loadSFClientConfigInsecure(String config...
    method getConfigFilePathFromJDBCJarLocation (line 109) | public static String getConfigFilePathFromJDBCJarLocation() {
    method checkConfigFilePermissions (line 135) | public static void checkConfigFilePermissions(String derivedConfigFile...
    method checkGroupOthersWritePermissions (line 153) | static Boolean checkGroupOthersWritePermissions(String configFilePath)...
    method convertToWindowsPath (line 160) | static String convertToWindowsPath(String filePath) {

FILE: src/main/java/net/snowflake/client/internal/config/SFConnectionConfigParser.java
  class SFConnectionConfigParser (line 32) | public class SFConnectionConfigParser {
    method buildConnectionParameters (line 50) | public static ConnectionParameters buildConnectionParameters(String co...
    method getConnectionNameFromUrl (line 103) | static String getConnectionNameFromUrl(String connectionUrl) {
    method parseAutoConfigJdbcUrlParameters (line 116) | private static Map<String, String> parseAutoConfigJdbcUrlParameters(St...
    method mergeUrlParametersIntoConfiguration (line 143) | private static void mergeUrlParametersIntoConfiguration(
    method loadDefaultConnectionConfiguration (line 162) | private static Map<String, String> loadDefaultConnectionConfiguration(
    method readParametersMap (line 196) | private static Map<String, Map> readParametersMap(Path configFilePath)
    method verifyFilePermissionSecure (line 214) | static void verifyFilePermissionSecure(Path configFilePath)
    method createUrl (line 280) | private static String createUrl(Map<String, String> fileConnectionConf...
    method putPropertyIfNotNull (line 313) | private static void putPropertyIfNotNull(Properties props, Object key,...

FILE: src/main/java/net/snowflake/client/internal/core/ArrowSqlInput.java
  class ArrowSqlInput (line 26) | public class ArrowSqlInput extends BaseSqlInput {
    method ArrowSqlInput (line 33) | public ArrowSqlInput(
    method getInput (line 42) | public Map<String, Object> getInput() {
    method readString (line 46) | @Override
    method readBoolean (line 51) | @Override
    method readByte (line 56) | @Override
    method readShort (line 63) | @Override
    method readInt (line 68) | @Override
    method readLong (line 73) | @Override
    method readFloat (line 78) | @Override
    method readDouble (line 83) | @Override
    method readBigDecimal (line 88) | @Override
    method readBytes (line 93) | @Override
    method readDate (line 98) | @Override
    method convertDate (line 109) | private Date convertDate(int value) throws SQLException {
    method readTime (line 115) | @Override
    method convertTime (line 126) | private Time convertTime(long value, FieldMetadata fieldMetadata) thro...
    method readTimestamp (line 134) | @Override
    method convertTimestamp (line 139) | private Timestamp convertTimestamp(TimeZone tz, Object value, FieldMet...
    method readObject (line 154) | @Override
    method readObject (line 166) | @Override
    method readObject (line 171) | @Override
    method convertObject (line 176) | private <T> T convertObject(Class<T> type, TimeZone tz, Object value, ...
    method readList (line 225) | @Override
    method readArray (line 242) | @Override
    method readMap (line 260) | @Override
    method wasNull (line 282) | @Override
    method convertSqlInputToMap (line 287) | @Override
    method withNextValue (line 292) | private <T> T withNextValue(ThrowingBiFunction<Object, FieldMetadata, ...

FILE: src/main/java/net/snowflake/client/internal/core/AssertUtil.java
  class AssertUtil (line 5) | public class AssertUtil {
    method assertTrue (line 14) | public static void assertTrue(boolean condition, String internalErrorM...

FILE: src/main/java/net/snowflake/client/internal/core/AttributeEnhancingHttpRequestRetryHandler.java
  class AttributeEnhancingHttpRequestRetryHandler (line 13) | class AttributeEnhancingHttpRequestRetryHandler extends DefaultHttpReque...
    method retryRequest (line 21) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/BaseSqlInput.java
  class BaseSqlInput (line 25) | public abstract class BaseSqlInput implements SFSqlInput {
    method BaseSqlInput (line 31) | protected BaseSqlInput(SFBaseSession session, Converters converters, L...
    method readTimestamp (line 37) | @Override
    method readCharacterStream (line 42) | @Override
    method readAsciiStream (line 47) | @Override
    method readBinaryStream (line 52) | @Override
    method readRef (line 57) | @Override
    method readBlob (line 62) | @Override
    method readClob (line 67) | @Override
    method readArray (line 72) | @Override
    method wasNull (line 77) | @Override
    method readURL (line 82) | @Override
    method readNClob (line 87) | @Override
    method readNString (line 92) | @Override
    method readSQLXML (line 97) | @Override
    method readRowId (line 102) | @Override
    method convertSqlInputToMap (line 107) | abstract Map<String, Object> convertSqlInputToMap(SQLInput sqlInput);
    method convertString (line 109) | protected String convertString(Object value, FieldMetadata fieldMetada...
    method convertBoolean (line 117) | protected Boolean convertBoolean(Object value, FieldMetadata fieldMeta...
    method convertShort (line 123) | protected Short convertShort(Object value, FieldMetadata fieldMetadata...
    method convertInt (line 129) | protected Integer convertInt(Object value, FieldMetadata fieldMetadata...
    method convertLong (line 135) | protected Long convertLong(Object value, FieldMetadata fieldMetadata) ...
    method convertFloat (line 141) | protected Float convertFloat(Object value, FieldMetadata fieldMetadata...
    method convertDouble (line 147) | protected Double convertDouble(Object value, FieldMetadata fieldMetada...
    method convertBigDecimal (line 153) | protected BigDecimal convertBigDecimal(Object value, FieldMetadata fie...
    method convertBytes (line 160) | protected byte[] convertBytes(Object value, FieldMetadata fieldMetadat...

FILE: src/main/java/net/snowflake/client/internal/core/BasicEvent.java
  class BasicEvent (line 6) | public class BasicEvent extends Event {
    type QueryState (line 16) | public enum QueryState {
      method QueryState (line 27) | QueryState(int id, String description, String argString) {
      method getId (line 33) | public int getId() {
      method getDescription (line 37) | public String getDescription() {
      method getArgString (line 41) | public String getArgString() {
    method BasicEvent (line 50) | public BasicEvent(Event.EventType type, String message) {
    method flush (line 54) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/CachedCredentialType.java
  type CachedCredentialType (line 3) | enum CachedCredentialType {
    method CachedCredentialType (line 14) | CachedCredentialType(String value) {
    method getValue (line 18) | String getValue() {

FILE: src/main/java/net/snowflake/client/internal/core/CancellationReason.java
  type CancellationReason (line 3) | public enum CancellationReason {

FILE: src/main/java/net/snowflake/client/internal/core/ChunkDownloader.java
  type ChunkDownloader (line 7) | public interface ChunkDownloader {
    method getNextChunkToConsume (line 16) | SnowflakeResultChunk getNextChunkToConsume() throws InterruptedExcepti...
    method terminate (line 24) | DownloaderMetrics terminate() throws InterruptedException;

FILE: src/main/java/net/snowflake/client/internal/core/ColumnTypeHelper.java
  class ColumnTypeHelper (line 6) | public class ColumnTypeHelper {
    method getColumnType (line 7) | public static int getColumnType(int internalColumnType, SFBaseSession ...

FILE: src/main/java/net/snowflake/client/internal/core/Constants.java
  class Constants (line 11) | public final class Constants {
    type OS (line 31) | public enum OS {
      method isPosix (line 42) | public boolean isPosix() {
    type Architecture (line 47) | public enum Architecture {
      method Architecture (line 56) | Architecture(String identifier) {
      method getIdentifier (line 60) | public String getIdentifier() {
    method getOS (line 69) | public static synchronized OS getOS() {
    method getArchitecture (line 88) | public static synchronized Architecture getArchitecture() {
    method isAix (line 108) | public static boolean isAix() {
    method clearOSForTesting (line 116) | public static void clearOSForTesting() {

FILE: src/main/java/net/snowflake/client/internal/core/CredentialManager.java
  class CredentialManager (line 12) | public class CredentialManager {
    method CredentialManager (line 17) | private CredentialManager() {
    method initSecureStorageManager (line 21) | private void initSecureStorageManager() {
    method resetSecureStorageManager (line 38) | static void resetSecureStorageManager() {
    method injectSecureStorageManager (line 48) | static void injectSecureStorageManager(SecureStorageManager manager) {
    class CredentialManagerHolder (line 53) | private static class CredentialManagerHolder {
    method getInstance (line 57) | public static CredentialManager getInstance() {
    method fillCachedIdToken (line 66) | static void fillCachedIdToken(SFLoginInput loginInput) throws SFExcept...
    method fillCachedMfaToken (line 84) | static void fillCachedMfaToken(SFLoginInput loginInput) throws SFExcep...
    method fillCachedOAuthAccessToken (line 102) | static void fillCachedOAuthAccessToken(SFLoginInput loginInput) throws...
    method fillCachedOAuthRefreshToken (line 118) | static void fillCachedOAuthRefreshToken(SFLoginInput loginInput) throw...
    method fillCachedDPoPBundledAccessToken (line 134) | static void fillCachedDPoPBundledAccessToken(SFLoginInput loginInput) ...
    method fillCachedCredential (line 149) | synchronized void fillCachedCredential(
    method updateInputWithTokenAndPublicKey (line 211) | private void updateInputWithTokenAndPublicKey(String cred, SFLoginInpu...
    method writeIdToken (line 225) | static void writeIdToken(SFLoginInput loginInput, String idToken) thro...
    method writeMfaToken (line 238) | static void writeMfaToken(SFLoginInput loginInput, String mfaToken) th...
    method writeOAuthAccessToken (line 256) | static void writeOAuthAccessToken(SFLoginInput loginInput) throws SFEx...
    method writeOAuthRefreshToken (line 275) | static void writeOAuthRefreshToken(SFLoginInput loginInput) throws SFE...
    method writeDPoPBundledAccessToken (line 294) | static void writeDPoPBundledAccessToken(SFLoginInput loginInput) throw...
    method writeTemporaryCredential (line 314) | synchronized void writeTemporaryCredential(
    method deleteIdTokenCacheEntry (line 345) | static void deleteIdTokenCacheEntry(String host, String user) {
    method deleteMfaTokenCacheEntry (line 352) | static void deleteMfaTokenCacheEntry(String host, String user) {
    method deleteOAuthAccessTokenCacheEntry (line 359) | static void deleteOAuthAccessTokenCacheEntry(String host, String user) {
    method deleteOAuthRefreshTokenCacheEntry (line 368) | static void deleteOAuthRefreshTokenCacheEntry(String host, String user) {
    method deleteDPoPBundledAccessTokenCacheEntry (line 377) | static void deleteDPoPBundledAccessTokenCacheEntry(String host, String...
    method deleteOAuthAccessTokenCacheEntry (line 385) | static void deleteOAuthAccessTokenCacheEntry(SFLoginInput loginInput) ...
    method deleteOAuthRefreshTokenCacheEntry (line 391) | static void deleteOAuthRefreshTokenCacheEntry(SFLoginInput loginInput)...
    method deleteDPoPBundledAccessTokenCacheEntry (line 397) | static void deleteDPoPBundledAccessTokenCacheEntry(SFLoginInput loginI...
    method getHostForOAuthCacheKey (line 406) | static String getHostForOAuthCacheKey(SFLoginInput loginInput) throws ...
    method deleteTemporaryCredential (line 423) | synchronized void deleteTemporaryCredential(
    method logMissingJnaJarForSecureLocalStorage (line 441) | private static void logMissingJnaJarForSecureLocalStorage() {

FILE: src/main/java/net/snowflake/client/internal/core/DataConversionContext.java
  type DataConversionContext (line 11) | public interface DataConversionContext {
    method getTimestampLTZFormatter (line 15) | SnowflakeDateTimeFormat getTimestampLTZFormatter();
    method getTimestampNTZFormatter (line 20) | SnowflakeDateTimeFormat getTimestampNTZFormatter();
    method getTimestampTZFormatter (line 25) | SnowflakeDateTimeFormat getTimestampTZFormatter();
    method getDateFormatter (line 30) | SnowflakeDateTimeFormat getDateFormatter();
    method getTimeFormatter (line 35) | SnowflakeDateTimeFormat getTimeFormatter();
    method getBinaryFormatter (line 40) | SFBinaryFormat getBinaryFormatter();
    method getScale (line 48) | int getScale(int columnIndex);
    method getSession (line 53) | SFBaseSession getSession();
    method getTimeZone (line 58) | TimeZone getTimeZone();
    method getHonorClientTZForTimestampNTZ (line 63) | boolean getHonorClientTZForTimestampNTZ();
    method getResultVersion (line 68) | long getResultVersion();

FILE: src/main/java/net/snowflake/client/internal/core/DefaultFileCacheManager.java
  class DefaultFileCacheManager (line 24) | class DefaultFileCacheManager implements FileCacheManager {
    method DefaultFileCacheManager (line 36) | DefaultFileCacheManager(
    method getCacheFilePath (line 50) | @Override
    method overrideCacheFile (line 55) | @Override
    method withLock (line 72) | @Override
    method readCacheFile (line 91) | @Override
    method writeCacheFile (line 117) | @Override
    method deleteCacheFile (line 142) | @Override
    method tryToLockCacheFile (line 151) | private synchronized boolean tryToLockCacheFile() {
    method deleteCacheLockIfExpired (line 171) | private synchronized void deleteCacheLockIfExpired() {
    method fileCreationTime (line 190) | private static synchronized long fileCreationTime(File targetFile) {
    method lockCacheFile (line 205) | private synchronized boolean lockCacheFile() {
    method unlockCacheFile (line 209) | private synchronized boolean unlockCacheFile() {

FILE: src/main/java/net/snowflake/client/internal/core/DownloaderMetrics.java
  class DownloaderMetrics (line 4) | public class DownloaderMetrics {
    method DownloaderMetrics (line 14) | public DownloaderMetrics(long millisWaiting, long millisDownloading, l...
    method getMillisWaiting (line 20) | long getMillisWaiting() {
    method getMillisDownloading (line 24) | long getMillisDownloading() {
    method getMillisParsing (line 28) | long getMillisParsing() {

FILE: src/main/java/net/snowflake/client/internal/core/Event.java
  class Event (line 14) | public abstract class Event {
    type EventType (line 23) | public static enum EventType {
      method getId (line 28) | public int getId() {
      method getDescription (line 32) | public String getDescription() {
      method getEventClass (line 36) | public Class<? extends Event> getEventClass() {
      method EventType (line 40) | EventType(int id, String description, Class<? extends Event> eventCl...
    method Event (line 54) | public Event(EventType type, String message) {
    method getType (line 61) | public EventType getType() {
    method setType (line 65) | public void setType(EventType type) {
    method getMessage (line 69) | public String getMessage() {
    method setMessage (line 73) | public void setMessage(String message) {
    method writeEventDumpLine (line 77) | protected void writeEventDumpLine(String message) {
    method flush (line 111) | public abstract void flush();

FILE: src/main/java/net/snowflake/client/internal/core/EventHandler.java
  class EventHandler (line 28) | public class EventHandler extends Handler {
    class QueueFlusher (line 77) | private class QueueFlusher implements Runnable {
      method run (line 78) | @Override
    method EventHandler (line 102) | public EventHandler(int maxEntries, int flushPeriodMs) {
    method getBufferSize (line 117) | public synchronized int getBufferSize() {
    method getLogBufferSize (line 126) | public synchronized long getLogBufferSize() {
    method startFlusher (line 131) | synchronized void startFlusher() {
    method stopFlusher (line 151) | synchronized void stopFlusher() {
    method pushEvent (line 161) | private synchronized void pushEvent(Event event, boolean flushBuffer) {
    method triggerBasicEvent (line 175) | void triggerBasicEvent(Event.EventType type, String message) {
    method triggerBasicEvent (line 187) | void triggerBasicEvent(Event.EventType type, String message, boolean f...
    method triggerStateTransition (line 199) | void triggerStateTransition(BasicEvent.QueryState newState, String ide...
    method getCurrentTimestamp (line 216) | static String getCurrentTimestamp() {
    method dumpLogBuffer (line 227) | public void dumpLogBuffer(String identifier) {
    method cleanupSfDumps (line 301) | protected void cleanupSfDumps(boolean deleteOldest) {
    method flushEventBuffer (line 374) | private void flushEventBuffer() {
    method flush (line 393) | @Override
    method publish (line 406) | @Override
    method close (line 422) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/EventUtil.java
  class EventUtil (line 9) | public class EventUtil {
    method setDumpPathPrefixForTesting (line 33) | public static void setDumpPathPrefixForTesting(String value) {
    method initEventHandlerInstance (line 43) | public static synchronized void initEventHandlerInstance(int maxEntrie...
    method getEventHandlerInstance (line 53) | public static EventHandler getEventHandlerInstance() {
    method triggerBasicEvent (line 61) | public static void triggerBasicEvent(Event.EventType type, String mess...
    method triggerStateTransition (line 68) | public static void triggerStateTransition(BasicEvent.QueryState newSta...
    method getDumpPathPrefix (line 75) | public static String getDumpPathPrefix() {
    method getDumpFileId (line 79) | public static String getDumpFileId() {
    method getmaxDumpFileSizeBytes (line 83) | public static long getmaxDumpFileSizeBytes() {

FILE: src/main/java/net/snowflake/client/internal/core/FieldSchemaCreator.java
  class FieldSchemaCreator (line 12) | public class FieldSchemaCreator {
    method buildSchemaForText (line 17) | public static BindingParameterMetadata buildSchemaForText(
    method buildSchemaForBytesType (line 26) | public static BindingParameterMetadata buildSchemaForBytesType(
    method buildSchemaTypeAndNameOnly (line 36) | public static BindingParameterMetadata buildSchemaTypeAndNameOnly(
    method buildSchemaWithScaleAndPrecision (line 44) | public static BindingParameterMetadata buildSchemaWithScaleAndPrecision(
    method buildBindingSchemaForType (line 58) | public static BindingParameterMetadata buildBindingSchemaForType(int b...
    method buildBindingSchemaForType (line 63) | public static BindingParameterMetadata buildBindingSchemaForType(int b...

FILE: src/main/java/net/snowflake/client/internal/core/FileCacheManager.java
  type FileCacheManager (line 7) | interface FileCacheManager {
    method getCacheFilePath (line 9) | String getCacheFilePath();
    method overrideCacheFile (line 11) | void overrideCacheFile(File newCacheFile);
    method withLock (line 13) | <T> T withLock(Supplier<T> supplier);
    method readCacheFile (line 15) | JsonNode readCacheFile();
    method writeCacheFile (line 17) | void writeCacheFile(JsonNode input);
    method deleteCacheFile (line 19) | void deleteCacheFile();

FILE: src/main/java/net/snowflake/client/internal/core/FileCacheManagerBuilder.java
  class FileCacheManagerBuilder (line 17) | class FileCacheManagerBuilder {
    method FileCacheManagerBuilder (line 26) | FileCacheManagerBuilder() {}
    method setCacheDirectorySystemProperty (line 28) | FileCacheManagerBuilder setCacheDirectorySystemProperty(String cacheDi...
    method setCacheDirectoryEnvironmentVariable (line 33) | FileCacheManagerBuilder setCacheDirectoryEnvironmentVariable(
    method setBaseCacheFileName (line 39) | FileCacheManagerBuilder setBaseCacheFileName(String baseCacheFileName) {
    method setCacheFileLockExpirationInSeconds (line 44) | FileCacheManagerBuilder setCacheFileLockExpirationInSeconds(
    method setOnlyOwnerPermissions (line 50) | FileCacheManagerBuilder setOnlyOwnerPermissions(boolean onlyOwnerPermi...
    method build (line 55) | FileCacheManager build() {

FILE: src/main/java/net/snowflake/client/internal/core/FileCacheUtil.java
  class FileCacheUtil (line 11) | public class FileCacheUtil {
    method getDefaultCacheDir (line 14) | public static File getDefaultCacheDir() {
    method getDir (line 38) | private static String getDir(String dir) {

FILE: src/main/java/net/snowflake/client/internal/core/FileTypeDetector.java
  class FileTypeDetector (line 8) | public class FileTypeDetector extends java.nio.file.spi.FileTypeDetector {
    method probeContentType (line 11) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/FileUtil.java
  class FileUtil (line 19) | public class FileUtil {
    method logFileUsage (line 40) | public static void logFileUsage(Path filePath, String context, boolean...
    method logFileUsage (line 44) | public static void logFileUsage(File file, String context, boolean log...
    method logFileUsage (line 48) | public static void logFileUsage(String stringPath, String context, boo...
    method isWritable (line 53) | public static boolean isWritable(String path) {
    method handleWhenParentDirectoryPermissionsWiderThanUserOnly (line 62) | public static void handleWhenParentDirectoryPermissionsWiderThanUserOnly(
    method handleWhenFilePermissionsWiderThanUserOnly (line 67) | public static void handleWhenFilePermissionsWiderThanUserOnly(File fil...
    method handleWhenDirectoryPermissionsWiderThanUserOnly (line 74) | public static void handleWhenDirectoryPermissionsWiderThanUserOnly(Fil...
    method handleWhenPermissionsWiderThanUserOnly (line 78) | public static void handleWhenPermissionsWiderThanUserOnly(
    method logWarnWhenAccessibleByOthers (line 130) | private static void logWarnWhenAccessibleByOthers(
    method throwWhenOwnerDifferentThanCurrentUser (line 164) | public static void throwWhenOwnerDifferentThanCurrentUser(File file, S...
    method isPermPresent (line 194) | private static boolean isPermPresent(
    method getFileOwnerName (line 200) | static String getFileOwnerName(Path filePath) throws IOException {
    method getContextStr (line 206) | private static String getContextStr(String context) {
    method exists (line 210) | public static boolean exists(File file) {

FILE: src/main/java/net/snowflake/client/internal/core/HeaderCustomizerHttpRequestInterceptor.java
  class HeaderCustomizerHttpRequestInterceptor (line 40) | public class HeaderCustomizerHttpRequestInterceptor
    method HeaderCustomizerHttpRequestInterceptor (line 46) | public HeaderCustomizerHttpRequestInterceptor(List<HttpHeadersCustomiz...
    method process (line 63) | @Override
    method modifyHttpRequest (line 120) | @Override
    method isTryingToOverrideDriverHeader (line 164) | private static boolean isTryingToOverrideDriverHeader(
    method extractHeaders (line 169) | private static Map<String, List<String>> extractHeaders(HttpRequest re...

FILE: src/main/java/net/snowflake/client/internal/core/HeartbeatIntervalSelector.java
  class HeartbeatIntervalSelector (line 13) | class HeartbeatIntervalSelector {
    method selectBestInterval (line 31) | static long selectBestInterval(long requestedInterval, Set<Long> exist...

FILE: src/main/java/net/snowflake/client/internal/core/HeartbeatRegistry.java
  class HeartbeatRegistry (line 31) | public class HeartbeatRegistry {
    method HeartbeatRegistry (line 55) | private HeartbeatRegistry() {
    method HeartbeatRegistry (line 83) | HeartbeatRegistry(ScheduledExecutorService executor, Clock clock) {
    method getInstance (line 102) | public static HeartbeatRegistry getInstance() {
    method addSession (line 124) | public void addSession(
    method sendMaxThreadsExceededTelemetry (line 227) | private void sendMaxThreadsExceededTelemetry(SFSession session, long r...
    method pruneEmptyThreads (line 263) | private void pruneEmptyThreads() {
    method removeSession (line 302) | public void removeSession(SFSession session) {
    method triggerHeartbeatForInterval (line 349) | @VisibleForTesting
    method getActiveThreadCount (line 364) | @VisibleForTesting
    method getSessionCountForInterval (line 375) | @VisibleForTesting
    method shutdown (line 387) | public synchronized void shutdown() {

FILE: src/main/java/net/snowflake/client/internal/core/HeartbeatThread.java
  class HeartbeatThread (line 25) | class HeartbeatThread implements Runnable {
    method HeartbeatThread (line 49) | HeartbeatThread(long intervalSeconds, ScheduledExecutorService executo...
    method addSession (line 78) | synchronized boolean addSession(SFSession session) {
    method removeSession (line 115) | synchronized void removeSession(SFSession session) {
    method isEmpty (line 132) | synchronized boolean isEmpty() {
    method getSessionCount (line 141) | @VisibleForTesting
    method getIntervalSeconds (line 151) | long getIntervalSeconds() {
    method start (line 156) | private synchronized void start() {
    method scheduleHeartbeat (line 172) | private void scheduleHeartbeat() {
    method shutdown (line 208) | synchronized void shutdown() {
    method run (line 231) | @Override
    method triggerHeartbeatNow (line 285) | @VisibleForTesting

FILE: src/main/java/net/snowflake/client/internal/core/HttpClientSettingsKey.java
  class HttpClientSettingsKey (line 16) | public class HttpClientSettingsKey implements Serializable {
    method HttpClientSettingsKey (line 39) | public HttpClientSettingsKey(
    method HttpClientSettingsKey (line 62) | public HttpClientSettingsKey(OCSPMode mode) {
    method HttpClientSettingsKey (line 68) | HttpClientSettingsKey(OCSPMode mode, String userAgentSuffix, Boolean g...
    method equals (line 74) | @Override
    method hashCode (line 107) | @Override
    method getOcspMode (line 120) | public OCSPMode getOcspMode() {
    method usesProxy (line 124) | public boolean usesProxy() {
    method getProxyHost (line 128) | public String getProxyHost() {
    method getProxyPort (line 132) | public int getProxyPort() {
    method getProxyUser (line 136) | public String getProxyUser() {
    method getUserAgentSuffix (line 140) | public String getUserAgentSuffix() {
    method getProxyPassword (line 149) | public String getProxyPassword() {
    method getNonProxyHosts (line 153) | public String getNonProxyHosts() {
    method getProxyHttpProtocol (line 157) | public HttpProtocol getProxyHttpProtocol() {
    method getGzipDisabled (line 161) | public Boolean getGzipDisabled() {
    method getRevocationCheckMode (line 165) | public CertRevocationCheckMode getRevocationCheckMode() {
    method isAllowCertificatesWithoutCrlUrl (line 169) | public boolean isAllowCertificatesWithoutCrlUrl() {
    method setRevocationCheckMode (line 173) | public void setRevocationCheckMode(CertRevocationCheckMode revocationC...
    method setAllowCertificatesWithoutCrlUrl (line 177) | public void setAllowCertificatesWithoutCrlUrl(boolean allowCertificate...
    method getOcspTimeout (line 181) | public int getOcspTimeout() {
    method getDefaultOcspTimeout (line 185) | private static int getDefaultOcspTimeout() {
    method toString (line 199) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/HttpExecutingContext.java
  class HttpExecutingContext (line 6) | public class HttpExecutingContext {
    method HttpExecutingContext (line 56) | public HttpExecutingContext(String requestIdStr, String requestInfoScr...
    method getRequestId (line 65) | public String getRequestId() {
    method getStartTime (line 69) | public long getStartTime() {
    method getStartTimePerRequest (line 73) | public long getStartTimePerRequest() {
    method setStartTimePerRequest (line 77) | public void setStartTimePerRequest(long startTimePerRequest) {
    method isLoginRequest (line 81) | public boolean isLoginRequest() {
    method setLoginRequest (line 85) | public void setLoginRequest(boolean loginRequest) {
    method getElapsedMilliForTransientIssues (line 89) | public long getElapsedMilliForTransientIssues() {
    method getRetryTimeoutInMilliseconds (line 93) | public long getRetryTimeoutInMilliseconds() {
    method getRetryTimeout (line 97) | public long getRetryTimeout() {
    method setRetryTimeout (line 101) | public void setRetryTimeout(long retryTimeout) {
    method getMinBackoffInMillis (line 105) | public long getMinBackoffInMillis() {
    method getBackoffInMillis (line 109) | public long getBackoffInMillis() {
    method setBackoffInMillis (line 113) | public void setBackoffInMillis(long backoffInMillis) {
    method getMaxBackoffInMilli (line 117) | public long getMaxBackoffInMilli() {
    method getAuthTimeout (line 121) | public long getAuthTimeout() {
    method getAuthTimeoutInMilliseconds (line 125) | public long getAuthTimeoutInMilliseconds() {
    method setAuthTimeout (line 129) | public void setAuthTimeout(long authTimeout) {
    method getBackoff (line 133) | public DecorrelatedJitterBackoff getBackoff() {
    method setBackoff (line 137) | public void setBackoff(DecorrelatedJitterBackoff backoff) {
    method getOrigSocketTimeout (line 141) | public int getOrigSocketTimeout() {
    method setOrigSocketTimeout (line 145) | public void setOrigSocketTimeout(int origSocketTimeout) {
    method getBreakRetryReason (line 149) | public String getBreakRetryReason() {
    method setBreakRetryReason (line 153) | public void setBreakRetryReason(String breakRetryReason) {
    method getBreakRetryEventName (line 157) | public String getBreakRetryEventName() {
    method setBreakRetryEventName (line 161) | public void setBreakRetryEventName(String breakRetryEventName) {
    method getLastStatusCodeForRetry (line 165) | public String getLastStatusCodeForRetry() {
    method setLastStatusCodeForRetry (line 169) | public void setLastStatusCodeForRetry(String lastStatusCodeForRetry) {
    method getRetryCount (line 173) | public int getRetryCount() {
    method setRetryCount (line 177) | public void setRetryCount(int retryCount) {
    method resetRetryCount (line 181) | public void resetRetryCount() {
    method incrementRetryCount (line 185) | public void incrementRetryCount() {
    method getMaxRetries (line 189) | public int getMaxRetries() {
    method setMaxRetries (line 193) | public void setMaxRetries(int maxRetries) {
    method getRequestInfoScrubbed (line 197) | public String getRequestInfoScrubbed() {
    method isNoRetry (line 201) | public boolean isNoRetry() {
    method setNoRetry (line 205) | public void setNoRetry(boolean noRetry) {
    method isRetryHTTP403 (line 209) | public boolean isRetryHTTP403() {
    method setRetryHTTP403 (line 213) | public void setRetryHTTP403(boolean retryHTTP403) {
    method isShouldRetry (line 217) | public boolean isShouldRetry() {
    method setShouldRetry (line 221) | public void setShouldRetry(boolean shouldRetry) {
    method increaseElapsedMilliForTransientIssues (line 225) | public void increaseElapsedMilliForTransientIssues(long elapsedMilliFo...
    method elapsedTimeExceeded (line 229) | public boolean elapsedTimeExceeded() {
    method moreThanMinRetries (line 233) | public boolean moreThanMinRetries() {
    method maxRetriesExceeded (line 237) | public boolean maxRetriesExceeded() {
    method socketOrConnectTimeoutReached (line 241) | public boolean socketOrConnectTimeoutReached() {
    method getCanceling (line 247) | public AtomicBoolean getCanceling() {
    method setCanceling (line 251) | public void setCanceling(AtomicBoolean canceling) {
    method isIncludeSnowflakeHeaders (line 255) | public boolean isIncludeSnowflakeHeaders() {
    method setIncludeSnowflakeHeaders (line 259) | public void setIncludeSnowflakeHeaders(boolean includeSnowflakeHeaders) {
    method isWithoutCookies (line 263) | public boolean isWithoutCookies() {
    method setWithoutCookies (line 267) | public void setWithoutCookies(boolean withoutCookies) {
    method isInjectSocketTimeout (line 271) | public int isInjectSocketTimeout() {
    method setInjectSocketTimeout (line 275) | public void setInjectSocketTimeout(int injectSocketTimeout) {
    method getInjectSocketTimeout (line 279) | public int getInjectSocketTimeout() {
    method isIncludeRetryParameters (line 283) | public boolean isIncludeRetryParameters() {
    method isUnpackResponse (line 287) | public boolean isUnpackResponse() {
    method setUnpackResponse (line 291) | public void setUnpackResponse(boolean unpackResponse) {
    method setIncludeRetryParameters (line 295) | public void setIncludeRetryParameters(boolean includeRetryParameters) {
    method isSkipRetriesBecauseOf200 (line 299) | public boolean isSkipRetriesBecauseOf200() {
    method setSkipRetriesBecauseOf200 (line 303) | public void setSkipRetriesBecauseOf200(boolean skipRetriesBecauseOf200) {
    method getSfSession (line 307) | public SFBaseSession getSfSession() {
    method setSfSession (line 311) | public void setSfSession(SFBaseSession sfSession) {

FILE: src/main/java/net/snowflake/client/internal/core/HttpExecutingContextBuilder.java
  class HttpExecutingContextBuilder (line 9) | public class HttpExecutingContextBuilder {
    method HttpExecutingContextBuilder (line 33) | public HttpExecutingContextBuilder(String requestId, String requestInf...
    method HttpExecutingContextBuilder (line 43) | public HttpExecutingContextBuilder(HttpExecutingContext context) {
    method forLogin (line 68) | public static HttpExecutingContextBuilder forLogin(String requestId, S...
    method forQuery (line 82) | public static HttpExecutingContextBuilder forQuery(String requestId, S...
    method forSimpleRequest (line 96) | public static HttpExecutingContextBuilder forSimpleRequest(
    method withRequest (line 110) | public static HttpExecutingContextBuilder withRequest(
    method retryTimeout (line 121) | public HttpExecutingContextBuilder retryTimeout(long retryTimeout) {
    method authTimeout (line 132) | public HttpExecutingContextBuilder authTimeout(long authTimeout) {
    method origSocketTimeout (line 143) | public HttpExecutingContextBuilder origSocketTimeout(int origSocketTim...
    method maxRetries (line 154) | public HttpExecutingContextBuilder maxRetries(int maxRetries) {
    method injectSocketTimeout (line 165) | public HttpExecutingContextBuilder injectSocketTimeout(int injectSocke...
    method canceling (line 176) | public HttpExecutingContextBuilder canceling(AtomicBoolean canceling) {
    method withoutCookies (line 187) | public HttpExecutingContextBuilder withoutCookies(boolean withoutCooki...
    method includeRetryParameters (line 198) | public HttpExecutingContextBuilder includeRetryParameters(boolean incl...
    method includeSnowflakeHeaders (line 209) | public HttpExecutingContextBuilder includeSnowflakeHeaders(boolean inc...
    method retryHTTP403 (line 220) | public HttpExecutingContextBuilder retryHTTP403(boolean retryHTTP403) {
    method noRetry (line 231) | public HttpExecutingContextBuilder noRetry(boolean noRetry) {
    method unpackResponse (line 242) | public HttpExecutingContextBuilder unpackResponse(boolean unpackRespon...
    method loginRequest (line 253) | public HttpExecutingContextBuilder loginRequest(boolean isLoginRequest) {
    method withSfSession (line 264) | public HttpExecutingContextBuilder withSfSession(SFBaseSession sfSessi...
    method build (line 274) | public HttpExecutingContext build() {

FILE: src/main/java/net/snowflake/client/internal/core/HttpProtocol.java
  type HttpProtocol (line 3) | public enum HttpProtocol {
    method HttpProtocol (line 10) | HttpProtocol(String scheme) {
    method getScheme (line 14) | public String getScheme() {

FILE: src/main/java/net/snowflake/client/internal/core/HttpResponseContextDto.java
  class HttpResponseContextDto (line 5) | public class HttpResponseContextDto {
    method HttpResponseContextDto (line 12) | public HttpResponseContextDto() {}
    method HttpResponseContextDto (line 14) | public HttpResponseContextDto(
    method getHttpResponse (line 20) | public CloseableHttpResponse getHttpResponse() {
    method setHttpResponse (line 24) | public void setHttpResponse(CloseableHttpResponse httpResponse) {
    method getUnpackedCloseableHttpResponse (line 28) | public String getUnpackedCloseableHttpResponse() {
    method setUnpackedCloseableHttpResponse (line 32) | public void setUnpackedCloseableHttpResponse(String unpackedCloseableH...
    method getSavedEx (line 36) | public Exception getSavedEx() {
    method setSavedEx (line 40) | public void setSavedEx(Exception savedEx) {
    method toString (line 44) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/HttpResponseWithHeaders.java
  class HttpResponseWithHeaders (line 11) | public class HttpResponseWithHeaders {
    method HttpResponseWithHeaders (line 15) | public HttpResponseWithHeaders(String responseBody, Map<String, String...
    method getResponseBody (line 25) | public String getResponseBody() {
    method getHeaders (line 35) | public Map<String, String> getHeaders() {

FILE: src/main/java/net/snowflake/client/internal/core/HttpUtil.java
  class HttpUtil (line 66) | public class HttpUtil {
    method reset (line 114) | public static void reset() {
    method getConnectionTimeout (line 145) | public static Duration getConnectionTimeout() {
    method getSocketTimeout (line 151) | public static Duration getSocketTimeout() {
    method setConnectionTimeout (line 157) | public static void setConnectionTimeout(int timeout) {
    method setSocketTimeout (line 162) | public static void setSocketTimeout(int timeout) {
    method getDownloadedConditionTimeoutInSeconds (line 167) | public static long getDownloadedConditionTimeoutInSeconds() {
    method buildUserAgent (line 179) | @VisibleForTesting
    method buildHttpClient (line 216) | public static CloseableHttpClient buildHttpClient(
    method buildHttpClient (line 231) | public static CloseableHttpClient buildHttpClient(
    method initHttpClientConnectionManager (line 312) | private static PoolingHttpClientConnectionManager initHttpClientConnec...
    method configureTrustManagerIfNeeded (line 366) | static TrustManager[] configureTrustManagerIfNeeded(
    method crlRevocationChecksDisabled (line 405) | private static boolean crlRevocationChecksDisabled(HttpClientSettingsK...
    method initDefaultRequestConfig (line 410) | private static void initDefaultRequestConfig(long connectTimeout, long...
    method updateRoutePlanner (line 424) | public static void updateRoutePlanner(HttpClientSettingsKey key) {
    method getHttpClient (line 445) | public static CloseableHttpClient getHttpClient(HttpClientSettingsKey ...
    method getHttpClient (line 456) | public static CloseableHttpClient getHttpClient(
    method getHttpClientWithoutDecompression (line 468) | public static CloseableHttpClient getHttpClientWithoutDecompression(
    method initHttpClientWithoutDecompression (line 481) | public static CloseableHttpClient initHttpClientWithoutDecompression(
    method initHttpClient (line 498) | public static CloseableHttpClient initHttpClient(
    method getDefaultRequestConfigWithSocketTimeout (line 516) | public static RequestConfig getDefaultRequestConfigWithSocketTimeout(
    method getDefaultRequestConfigWithSocketAndConnectTimeout (line 533) | public static RequestConfig getDefaultRequestConfigWithSocketAndConnec...
    method getRequestConfigWithoutCookies (line 549) | public static RequestConfig getRequestConfigWithoutCookies() {
    method setRequestConfig (line 553) | public static void setRequestConfig(RequestConfig requestConfig) {
    method getHttpClientStats (line 563) | private static String getHttpClientStats(ClientConnectionManager conne...
    method setSocksProxyDisabled (line 576) | public static void setSocksProxyDisabled(boolean socksProxyDisabled) {
    method isSocksProxyDisabled (line 586) | public static boolean isSocksProxyDisabled() {
    method executeRequestWithoutCookies (line 606) | @Deprecated
    method executeRequestWithoutCookies (line 646) | static String executeRequestWithoutCookies(
    method executeGeneralRequest (line 694) | public static String executeGeneralRequest(
    method executeGeneralRequestOmitSnowflakeHeaders (line 714) | public static String executeGeneralRequestOmitSnowflakeHeaders(
    method executeGeneralRequest (line 760) | public static String executeGeneralRequest(
    method executeGeneralRequestWithContext (line 804) | public static HttpResponseWithHeaders executeGeneralRequestWithContext(
    method convertToHttpResponseWithHeaders (line 848) | private static HttpResponseWithHeaders convertToHttpResponseWithHeaders(
    method extractHeadersAsMap (line 855) | public static Map<String, String> extractHeadersAsMap(HttpResponse htt...
    method executeGeneralRequest (line 883) | public static String executeGeneralRequest(
    method executeRequest (line 932) | @Deprecated
    method executeRequest (line 980) | public static String executeRequest(
    method executeRequest (line 1029) | @Deprecated
    method executeRequest (line 1080) | public static String executeRequest(
    method executeRequestInternal (line 1148) | private static String executeRequestInternal(
    method executeRequestInternalWithContext (line 1219) | private static HttpResponseContextDto executeRequestInternalWithContext(
    method executeRequestInternalWithContext (line 1290) | private static HttpResponseContextDto executeRequestInternalWithContext(
    class HttpInputStream (line 1367) | public static final class HttpInputStream extends InputStream {
      method HttpInputStream (line 1370) | public HttpInputStream(InputStream httpIn) {
      method available (line 1376) | @Override
      method read (line 1383) | @Override
      method read (line 1388) | @Override
      method read (line 1393) | @Override
      method skip (line 1398) | @Override
      method close (line 1403) | @Override
      method mark (line 1408) | @Override
      method reset (line 1413) | @Override
      method markSupported (line 1418) | @Override
    class SFConnectionSocketFactory (line 1424) | static final class SFConnectionSocketFactory extends PlainConnectionSo...
      method createSocket (line 1425) | @Override
    method applyAdditionalHeadersForSnowsight (line 1446) | static void applyAdditionalHeadersForSnowsight(
    method getHttpClientForCrl (line 1453) | public static CloseableHttpClient getHttpClientForCrl(HttpClientSettin...
    method getHttpClientForOcsp (line 1457) | public static CloseableHttpClient getHttpClientForOcsp(HttpClientSetti...
    method getHttpClient (line 1461) | private static CloseableHttpClient getHttpClient(int timeout, HttpClie...

FILE: src/main/java/net/snowflake/client/internal/core/JsonSqlInput.java
  class JsonSqlInput (line 34) | public class JsonSqlInput extends BaseSqlInput {
    method JsonSqlInput (line 43) | public JsonSqlInput(
    method getInput (line 57) | public JsonNode getInput() {
    method getText (line 61) | public String getText() {
    method readString (line 65) | @Override
    method readBoolean (line 70) | @Override
    method readByte (line 75) | @Override
    method readShort (line 82) | @Override
    method readInt (line 87) | @Override
    method readLong (line 92) | @Override
    method readFloat (line 97) | @Override
    method readDouble (line 102) | @Override
    method readBigDecimal (line 107) | @Override
    method readBytes (line 112) | @Override
    method readDate (line 117) | @Override
    method convertDate (line 128) | private Date convertDate(String value) {
    method readTime (line 135) | @Override
    method convertTime (line 146) | private Time convertTime(String value) {
    method readTimestamp (line 153) | @Override
    method readTimestamp (line 158) | @Override
    method readObject (line 169) | @Override
    method convertObject (line 174) | private <T> T convertObject(Class<T> type, TimeZone tz, Object value, ...
    method readList (line 232) | @Override
    method readArray (line 258) | @Override
    method readMap (line 286) | @Override
    method convertTimestamp (line 313) | private Timestamp convertTimestamp(TimeZone tz, Object value, FieldMet...
    method readObject (line 334) | @Override
    method readObject (line 339) | @Override
    method wasNull (line 344) | public boolean wasNull() {
    method convertSqlInputToMap (line 348) | @Override
    method withNextValue (line 354) | private <T> T withNextValue(ThrowingBiFunction<Object, FieldMetadata, ...
    method getValue (line 362) | private Object getValue(JsonNode jsonNode) {
    method getFormat (line 375) | private static SnowflakeDateTimeFormat getFormat(SFBaseSession session...

FILE: src/main/java/net/snowflake/client/internal/core/JsonSqlOutput.java
  class JsonSqlOutput (line 48) | public class JsonSqlOutput implements SQLOutput {
    method JsonSqlOutput (line 57) | public JsonSqlOutput(SQLData original, SFBaseSession sfBaseSession) {
    method getSessionTimezone (line 67) | private TimeZone getSessionTimezone(SFBaseSession sfBaseSession) {
    method getClassFields (line 73) | private static List<Field> getClassFields(SQLData original) {
    method writeString (line 82) | @Override
    method writeBoolean (line 91) | @Override
    method writeByte (line 100) | @Override
    method writeShort (line 111) | @Override
    method writeInt (line 122) | @Override
    method writeLong (line 133) | @Override
    method writeFloat (line 144) | @Override
    method writeDouble (line 153) | @Override
    method writeBigDecimal (line 162) | @Override
    method writeBytes (line 175) | @Override
    method writeDate (line 186) | @Override
    method writeTime (line 197) | @Override
    method writeTimestamp (line 221) | @Override
    method writeCharacterStream (line 258) | @Override
    method writeAsciiStream (line 264) | @Override
    method writeBinaryStream (line 270) | @Override
    method writeObject (line 276) | @Override
    method writeRef (line 289) | @Override
    method writeBlob (line 295) | @Override
    method writeClob (line 301) | @Override
    method writeStruct (line 307) | @Override
    method writeArray (line 313) | @Override
    method writeURL (line 319) | @Override
    method writeNString (line 325) | @Override
    method writeNClob (line 331) | @Override
    method writeRowId (line 337) | @Override
    method writeSQLXML (line 343) | @Override
    method getJsonString (line 349) | public String getJsonString() {
    method getJsonObject (line 353) | public JSONObject getJsonObject() {
    method withNextValue (line 357) | private void withNextValue(
    method getDateTimeFormat (line 367) | private SnowflakeDateTimeFormat getDateTimeFormat(String format) {
    method getSchema (line 376) | public BindingParameterMetadata getSchema() {
    method timeZoneDependOnType (line 380) | private TimeZone timeZoneDependOnType(
    method snowflakeTypeToJavaType (line 392) | private int snowflakeTypeToJavaType(SnowflakeType snowflakeType) {

FILE: src/main/java/net/snowflake/client/internal/core/MetaDataOfBinds.java
  class MetaDataOfBinds (line 10) | public class MetaDataOfBinds implements Serializable {
    method MetaDataOfBinds (line 27) | public MetaDataOfBinds(int prec, boolean n, int sc, int bL, int len, S...
    method getPrecision (line 37) | public int getPrecision() {
    method isNullable (line 41) | public boolean isNullable() {
    method getScale (line 45) | public int getScale() {
    method getByteLength (line 49) | public int getByteLength() {
    method getLength (line 53) | public int getLength() {
    method getName (line 57) | public String getName() {
    method getTypeName (line 61) | public String getTypeName() {

FILE: src/main/java/net/snowflake/client/internal/core/NoOpFileCacheManager.java
  class NoOpFileCacheManager (line 9) | class NoOpFileCacheManager implements FileCacheManager {
    method NoOpFileCacheManager (line 12) | NoOpFileCacheManager() {
    method getCacheFilePath (line 19) | @Override
    method overrideCacheFile (line 24) | @Override
    method withLock (line 29) | @Override
    method readCacheFile (line 34) | @Override
    method writeCacheFile (line 39) | @Override
    method deleteCacheFile (line 42) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/OCSPMode.java
  type OCSPMode (line 4) | public enum OCSPMode {
    method OCSPMode (line 30) | OCSPMode(int value) {
    method getValue (line 34) | public int getValue() {

FILE: src/main/java/net/snowflake/client/internal/core/OCSPTelemetryData.java
  class OCSPTelemetryData (line 7) | public class OCSPTelemetryData {
    method OCSPTelemetryData (line 16) | public OCSPTelemetryData() {
    method setCertId (line 21) | public void setCertId(String certId) {
    method setSfcPeerHost (line 25) | public void setSfcPeerHost(String sfcPeerHost) {
    method setOcspUrl (line 29) | public void setOcspUrl(String ocspUrl) {
    method setOcspReq (line 33) | public void setOcspReq(String ocspReq) {
    method setCacheEnabled (line 37) | public void setCacheEnabled(Boolean cacheEnabled) {
    method setCacheHit (line 44) | public void setCacheHit(Boolean cacheHit) {
    method setOCSPMode (line 52) | public void setOCSPMode(OCSPMode ocspMode) {
    method generateTelemetry (line 56) | public String generateTelemetry(String eventType, CertificateException...

FILE: src/main/java/net/snowflake/client/internal/core/ObjectMapperFactory.java
  class ObjectMapperFactory (line 16) | public class ObjectMapperFactory {
    method getObjectMapper (line 26) | public static ObjectMapper getObjectMapper() {
    method getObjectMapperForSession (line 43) | public static ObjectMapper getObjectMapperForSession(SFBaseSession ses...

FILE: src/main/java/net/snowflake/client/internal/core/OpaqueContextDTO.java
  class OpaqueContextDTO (line 11) | public class OpaqueContextDTO {
    method OpaqueContextDTO (line 15) | @JsonCreator
    method getBase64Data (line 20) | public String getBase64Data() {
    method setBase64Data (line 24) | public void setBase64Data(String base64Data) {

FILE: src/main/java/net/snowflake/client/internal/core/ParameterBindingDTO.java
  class ParameterBindingDTO (line 6) | public class ParameterBindingDTO {
    method ParameterBindingDTO (line 16) | public ParameterBindingDTO(
    method ParameterBindingDTO (line 24) | public ParameterBindingDTO(String fmt, String type, Object value) {
    method ParameterBindingDTO (line 28) | public ParameterBindingDTO(String type, Object value) {
    method getValue (line 32) | public Object getValue() {
    method getType (line 36) | public String getType() {
    method setType (line 40) | public void setType(String type) {
    method setValue (line 44) | public void setValue(Object value) {
    method getFmt (line 48) | public String getFmt() {
    method setFmt (line 52) | public void setFmt(String fmt) {
    method getSchema (line 56) | public BindingParameterMetadata getSchema() {
    method setSchema (line 60) | public void setSchema(BindingParameterMetadata schema) {

FILE: src/main/java/net/snowflake/client/internal/core/PrivateLinkDetector.java
  class PrivateLinkDetector (line 3) | public class PrivateLinkDetector {
    method isPrivateLink (line 12) | public static boolean isPrivateLink(String host) {

FILE: src/main/java/net/snowflake/client/internal/core/QueryContextCache.java
  class QueryContextCache (line 18) | public class QueryContextCache {
    method QueryContextCache (line 42) | public QueryContextCache(int capacity) {
    method merge (line 64) | void merge(long id, long readTimestamp, long priority, String context) {
    method syncPriorityMap (line 106) | void syncPriorityMap() {
    method checkCacheCapacity (line 122) | void checkCacheCapacity() {
    method clearCache (line 142) | public void clearCache() {
    method deserializeQueryContextJson (line 153) | public void deserializeQueryContextJson(String data) {
    method deserializeQueryContextElement (line 225) | private static QueryContextElement deserializeQueryContextElement(Json...
    method deserializeQueryContextDTO (line 276) | public void deserializeQueryContextDTO(QueryContextDTO queryContextDTO) {
    method deserializeQueryContextElementDTO (line 322) | private static QueryContextElement deserializeQueryContextElementDTO(
    method serializeQueryContextDTO (line 339) | public QueryContextDTO serializeQueryContextDTO() {
    method serializeQueryContextEntryDTO (line 370) | private QueryContextEntryDTO serializeQueryContextEntryDTO(QueryContex...
    method createElement (line 390) | private static QueryContextElement createElement(
    method addQCE (line 400) | private void addQCE(QueryContextElement qce) {
    method removeQCE (line 411) | private void removeQCE(QueryContextElement qce) {
    method replaceQCE (line 424) | private void replaceQCE(QueryContextElement oldQCE, QueryContextElemen...
    method getElements (line 436) | private TreeSet<QueryContextElement> getElements() {
    method getSize (line 440) | int getSize() {
    method getElements (line 444) | void getElements(long[] ids, long[] readTimestamps, long[] priorities,...
    method logCacheEntries (line 458) | void logCacheEntries() {
    class QueryContextElement (line 472) | private static class QueryContextElement implements Comparable<QueryCo...
      method QueryContextElement (line 478) | public QueryContextElement() {
      method QueryContextElement (line 490) | public QueryContextElement(long id, long readTimestamp, long priorit...
      method equals (line 497) | @Override
      method hashCode (line 514) | @Override
      method compareTo (line 532) | public int compareTo(QueryContextElement obj) {
      method setId (line 536) | public void setId(long id) {
      method setPriority (line 540) | public void setPriority(long priority) {
      method setContext (line 544) | public void setContext(String context) {
      method setReadTimestamp (line 548) | public void setReadTimestamp(long readTimestamp) {
      method getId (line 552) | public long getId() {
      method getReadTimestamp (line 556) | public long getReadTimestamp() {
      method getPriority (line 560) | public long getPriority() {
      method getContext (line 564) | public String getContext() {

FILE: src/main/java/net/snowflake/client/internal/core/QueryContextDTO.java
  class QueryContextDTO (line 7) | @JsonInclude(JsonInclude.Include.NON_NULL)
    method QueryContextDTO (line 14) | public QueryContextDTO() {
    method QueryContextDTO (line 18) | public QueryContextDTO(List<QueryContextEntryDTO> entries) {
    method getEntries (line 22) | public List<QueryContextEntryDTO> getEntries() {
    method setEntries (line 26) | public void setEntries(List<QueryContextEntryDTO> entries) {

FILE: src/main/java/net/snowflake/client/internal/core/QueryContextEntryDTO.java
  class QueryContextEntryDTO (line 8) | public class QueryContextEntryDTO {
    method QueryContextEntryDTO (line 14) | public QueryContextEntryDTO() {
    method QueryContextEntryDTO (line 18) | public QueryContextEntryDTO(long id, long timestamp, long priority, Op...
    method getId (line 25) | public long getId() {
    method setId (line 29) | public void setId(long id) {
    method getTimestamp (line 33) | public long getTimestamp() {
    method setTimestamp (line 37) | public void setTimestamp(long timestamp) {
    method getPriority (line 41) | public long getPriority() {
    method setPriority (line 45) | public void setPriority(long priority) {
    method getContext (line 49) | public OpaqueContextDTO getContext() {
    method setContext (line 53) | public void setContext(OpaqueContextDTO context) {

FILE: src/main/java/net/snowflake/client/internal/core/QueryExecDTO.java
  class QueryExecDTO (line 6) | public class QueryExecDTO {
    method QueryExecDTO (line 31) | public QueryExecDTO(
    method getSqlText (line 54) | public String getSqlText() {
    method setSqlText (line 58) | public void setSqlText(String sqlText) {
    method getSequenceId (line 62) | @Deprecated
    method setSequenceId (line 67) | @Deprecated
    method getBindings (line 72) | public Map<String, ParameterBindingDTO> getBindings() {
    method setBindings (line 76) | public void setBindings(Map<String, ParameterBindingDTO> bindings) {
    method getBindStage (line 80) | public String getBindStage() {
    method setBindStage (line 84) | public void setBindStage(String bindStage) {
    method isDescribeOnly (line 88) | public boolean isDescribeOnly() {
    method setDescribeOnly (line 92) | public void setDescribeOnly(boolean describeOnly) {
    method getParameters (line 96) | public Map<String, Object> getParameters() {
    method setParameters (line 100) | public void setParameters(Map<String, Object> parameters) {
    method getqueryContextDTO (line 104) | public QueryContextDTO getqueryContextDTO() {
    method queryContextDTO (line 108) | public void queryContextDTO(QueryContextDTO queryContext) {
    method getDescribedJobId (line 112) | public String getDescribedJobId() {
    method setDescribedJobId (line 116) | public void setDescribedJobId(String describedJobId) {
    method getQuerySubmissionTime (line 120) | public long getQuerySubmissionTime() {
    method setQuerySubmissionTime (line 124) | public void setQuerySubmissionTime(long querySubmissionTime) {
    method setIsInternal (line 128) | public void setIsInternal(boolean isInternal) {
    method getIsInternal (line 132) | public boolean getIsInternal() {
    method setAsyncExec (line 136) | public void setAsyncExec(boolean asyncExec) {
    method getAsyncExec (line 140) | public boolean getAsyncExec() {

FILE: src/main/java/net/snowflake/client/internal/core/QueryResultFormat.java
  type QueryResultFormat (line 5) | public enum QueryResultFormat {
    method QueryResultFormat (line 11) | QueryResultFormat(String name) {
    method lookupByName (line 15) | public static Optional<QueryResultFormat> lookupByName(String n) {

FILE: src/main/java/net/snowflake/client/internal/core/ResultUtil.java
  class ResultUtil (line 27) | public class ResultUtil {
    method effectiveParamValue (line 62) | public static Object effectiveParamValue(Map<String, Object> parameter...
    method specializedFormatter (line 89) | public static SnowflakeDateTimeFormat specializedFormatter(
    method adjustTimestamp (line 110) | public static Timestamp adjustTimestamp(Timestamp timestamp) {
    method msDiffJulianToGregorian (line 133) | public static long msDiffJulianToGregorian(java.util.Date date) {
    method getSFTimestamp (line 181) | public static SFTimestamp getSFTimestamp(
    method getSFTime (line 228) | public static SFTime getSFTime(String obj, int scale, SFBaseSession se...
    method getSFTimeAsString (line 244) | public static String getSFTimeAsString(
    method getBooleanAsString (line 255) | public static String getBooleanAsString(boolean bool) {
    method getSFTimestampAsString (line 272) | public static String getSFTimestampAsString(
    method getDateAsString (line 319) | public static String getDateAsString(Date date, SnowflakeDateTimeForma...
    method adjustDate (line 329) | public static Date adjustDate(Date date) {
    method getDate (line 349) | @Deprecated
    method getBoolean (line 386) | public static boolean getBoolean(String str) {
    method calculateUpdateCount (line 399) | public static long calculateUpdateCount(SFBaseResultSet resultSet)
    method listSearchCaseInsensitive (line 438) | public static int listSearchCaseInsensitive(List<String> source, Strin...
    method getResultIds (line 454) | private static List<String> getResultIds(JsonNode result) {
    method getResultTypes (line 469) | private static List<SFStatementType> getResultTypes(JsonNode result) {
    method getChildResults (line 495) | public static List<SFChildResult> getChildResults(

FILE: src/main/java/net/snowflake/client/internal/core/SFArrowResultSet.java
  class SFArrowResultSet (line 57) | public class SFArrowResultSet extends SFBaseResultSet implements DataCon...
    method SFArrowResultSet (line 131) | public SFArrowResultSet(
    method SFArrowResultSet (line 188) | public SFArrowResultSet(
    method fetchNextRow (line 247) | private boolean fetchNextRow() throws SnowflakeSQLException {
    method fetchNextRowUnsorted (line 261) | private boolean fetchNextRowUnsorted() throws SnowflakeSQLException {
    method buildFirstChunk (line 328) | private ArrowResultChunk buildFirstChunk(byte[] firstChunk) throws SQL...
    method getSortedFirstResultChunk (line 353) | private ArrowResultChunk getSortedFirstResultChunk(byte[] firstChunk) ...
    method fetchNextRowSorted (line 365) | private boolean fetchNextRowSorted() throws SnowflakeSQLException {
    method getConverters (line 378) | @Override
    method createSqlInputForColumn (line 383) | @Override
    method convertToDate (line 397) | @Override
    method convertToTime (line 405) | @Override
    method convertToTimestamp (line 413) | @Override
    method next (line 430) | @Override
    method getByte (line 463) | @Override
    method getString (line 471) | @Override
    method getBoolean (line 479) | @Override
    method getPeriod (line 487) | @Override
    method getDuration (line 495) | @Override
    method getShort (line 503) | @Override
    method getInt (line 511) | @Override
    method getLong (line 519) | @Override
    method getFloat (line 527) | @Override
    method getDouble (line 535) | @Override
    method getBytes (line 543) | @Override
    method getDate (line 551) | @Override
    method getTime (line 561) | @Override
    method getTimestamp (line 571) | @Override
    method getObject (line 581) | @Override
    method getObjectWithoutString (line 586) | @Override
    method getObjectRepresentation (line 591) | private StructObjectWrapper getObjectRepresentation(int columnIndex, b...
    method createArrowSqlInput (line 637) | private SQLInput createArrowSqlInput(int columnIndex, Map<String, Obje...
    method isVarcharConvertedStruct (line 646) | private boolean isVarcharConvertedStruct(int type, ArrowVectorConverte...
    method createJsonSqlInput (line 650) | private JsonSqlInput createJsonSqlInput(int columnIndex, Object obj) t...
    method getArray (line 669) | @Override
    method getArrowArray (line 688) | private SfSqlArray getArrowArray(String text, List<Object> elements, i...
    method getSfSqlArray (line 806) | private SfSqlArray getSfSqlArray(String text, int columnSubType, Objec...
    method mapAndConvert (line 810) | private <T> Stream<T> mapAndConvert(List<Object> elements, Converter<T...
    method getBigDecimal (line 822) | @Override
    method getBigDecimal (line 832) | @Override
    method isLast (line 838) | @Override
    method isAfterLast (line 843) | @Override
    method close (line 848) | @Override
    method closeRootAllocator (line 869) | public static void closeRootAllocator(RootAllocator rootAllocator) {
    method getStatementType (line 897) | @Override
    method setStatementType (line 902) | @Override
    method isArrayBindSupported (line 907) | @Override
    method getQueryId (line 912) | @Override
    method logMetric (line 917) | private void logMetric(TelemetryField field, long value) {
    method logChunkDownloaderMetrics (line 922) | private void logChunkDownloaderMetrics(DownloaderMetrics metrics) {
    method getTimestampLTZFormatter (line 930) | @Override
    method getTimestampNTZFormatter (line 935) | @Override
    method getTimestampTZFormatter (line 940) | @Override
    method getDateFormatter (line 945) | @Override
    method getTimeFormatter (line 950) | @Override
    method getBinaryFormatter (line 955) | @Override
    method getScale (line 960) | @Override
    method getTimeZone (line 965) | @Override
    method getHonorClientTZForTimestampNTZ (line 970) | @Override
    method getResultVersion (line 975) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/SFBaseResultSet.java
  class SFBaseResultSet (line 43) | public abstract class SFBaseResultSet {
    method isLast (line 84) | public abstract boolean isLast();
    method isAfterLast (line 86) | public abstract boolean isAfterLast();
    method getString (line 88) | public abstract String getString(int columnIndex) throws SFException;
    method getBoolean (line 90) | public abstract boolean getBoolean(int columnIndex) throws SFException;
    method getByte (line 92) | public abstract byte getByte(int columnIndex) throws SFException;
    method getPeriod (line 94) | public abstract Period getPeriod(int columnIndex) throws SFException;
    method getDuration (line 96) | public abstract Duration getDuration(int columnIndex) throws SFException;
    method getShort (line 98) | public abstract short getShort(int columnIndex) throws SFException;
    method getInt (line 100) | public abstract int getInt(int columnIndex) throws SFException;
    method getLong (line 102) | public abstract long getLong(int columnIndex) throws SFException;
    method getFloat (line 104) | public abstract float getFloat(int columnIndex) throws SFException;
    method getDouble (line 106) | public abstract double getDouble(int columnIndex) throws SFException;
    method getBytes (line 108) | public abstract byte[] getBytes(int columnIndex) throws SFException;
    method getTime (line 110) | public abstract Time getTime(int columnIndex) throws SFException;
    method getTimestamp (line 112) | public abstract Timestamp getTimestamp(int columnIndex, TimeZone tz) t...
    method getDate (line 114) | public abstract Date getDate(int columnIndex, TimeZone tz) throws SFEx...
    method getObject (line 116) | public abstract Object getObject(int columnIndex) throws SFException;
    method getObjectWithoutString (line 118) | public abstract Object getObjectWithoutString(int columnIndex) throws ...
    method getArray (line 120) | public Array getArray(int columnIndex) throws SFException {
    method getBigDecimal (line 124) | public abstract BigDecimal getBigDecimal(int columnIndex) throws SFExc...
    method getBigDecimal (line 126) | public abstract BigDecimal getBigDecimal(int columnIndex, int scale) t...
    method getStatementType (line 128) | public abstract SFStatementType getStatementType();
    method setStatementType (line 132) | public abstract void setStatementType(SFStatementType statementType) t...
    method getQueryId (line 134) | public abstract String getQueryId();
    method setSession (line 136) | public void setSession(SFBaseSession session) {
    method getSession (line 140) | public SFBaseSession getSession() {
    method next (line 145) | public boolean next() throws SFException, SnowflakeSQLException {
    method close (line 150) | public void close() throws SnowflakeSQLException {
    method wasNull (line 158) | public boolean wasNull() {
    method getMetaData (line 164) | public SFResultSetMetaData getMetaData() {
    method getSessionTimezone (line 168) | public TimeZone getSessionTimezone() {
    method getRow (line 172) | public int getRow() throws SQLException {
    method absolute (line 176) | public boolean absolute(int row) throws SFException {
    method relative (line 180) | public boolean relative(int rows) throws SFException {
    method previous (line 184) | public boolean previous() throws SFException {
    method getNumberOfBinds (line 188) | public int getNumberOfBinds() {
    method getMetaDataOfBinds (line 192) | public List<MetaDataOfBinds> getMetaDataOfBinds() {
    method isFirst (line 196) | public boolean isFirst() {
    method isBeforeFirst (line 200) | public boolean isBeforeFirst() {
    method isClosed (line 204) | public boolean isClosed() {
    method isArrayBindSupported (line 208) | public boolean isArrayBindSupported() {
    method getResultSetSerializables (line 224) | public List<SnowflakeResultSetSerializable> getResultSetSerializables(...
    method getConverters (line 229) | public Converters getConverters() {
    method getSessionTimeZone (line 234) | public TimeZone getSessionTimeZone() {
    method createSqlInputForColumn (line 238) | public SQLInput createSqlInputForColumn(
    method convertToDate (line 247) | public Date convertToDate(Object object, TimeZone tz) throws SFExcepti...
    method convertToTime (line 251) | public Time convertToTime(Object object, int scale) throws SFException {
    method convertToTimestamp (line 255) | public Timestamp convertToTimestamp(
    method createJsonSqlInputForColumn (line 260) | protected SQLInput createJsonSqlInputForColumn(
    method getJsonArray (line 272) | protected SfSqlArray getJsonArray(String arrayString, int columnIndex,...
    method convertStringToDate (line 432) | protected Date convertStringToDate(String object, TimeZone tz) throws ...
    method convertStringToTime (line 436) | protected Time convertStringToTime(String object, int scale) throws SF...
    method convertStringToTimestamp (line 440) | protected Timestamp convertStringToTimestamp(
    method getStream (line 448) | private Stream getStream(Iterator nodeElements, Converter converter) {
    method convert (line 461) | private static Object convert(Converter converter, JsonNode node) thro...
    method convertToFixedArray (line 466) | private Object[] convertToFixedArray(Stream inputStream) {

FILE: src/main/java/net/snowflake/client/internal/core/SFBaseSession.java
  class SFBaseSession (line 51) | public abstract class SFBaseSession {
    method SFBaseSession (line 180) | protected SFBaseSession(SFConnectionHandler sfConnectionHandler) {
    method setMemoryLimitForTesting (line 184) | public void setMemoryLimitForTesting(long memLimit) {
    method getMemoryLimitForTesting (line 188) | public long getMemoryLimitForTesting() {
    method getClientInfo (line 199) | public Properties getClientInfo() {
    method setCommonParameters (line 212) | public void setCommonParameters(Map<String, Object> parameters) {
    method getCommonParameters (line 221) | public Map<String, Object> getCommonParameters() {
    method getClientInfo (line 231) | public String getClientInfo(String name) {
    method getSessionId (line 240) | public String getSessionId() {
    method setSessionId (line 249) | public void setSessionId(String sessionId) {
    method isSfSQLMode (line 256) | public boolean isSfSQLMode() {
    method setSfSQLMode (line 265) | public void setSfSQLMode(boolean sfSQLMode) {
    method getDatabaseVersion (line 274) | public String getDatabaseVersion() {
    method setDatabaseVersion (line 283) | public void setDatabaseVersion(String databaseVersion) {
    method getDatabaseMajorVersion (line 292) | public int getDatabaseMajorVersion() {
    method setDatabaseMajorVersion (line 301) | public void setDatabaseMajorVersion(int databaseMajorVersion) {
    method getDatabaseMinorVersion (line 310) | public int getDatabaseMinorVersion() {
    method setDatabaseMinorVersion (line 319) | public void setDatabaseMinorVersion(int databaseMinorVersion) {
    method getPreparedStatementLogging (line 331) | public boolean getPreparedStatementLogging() {
    method setPreparedStatementLogging (line 341) | public void setPreparedStatementLogging(boolean value) {
    method getInjectFileUploadFailure (line 350) | public String getInjectFileUploadFailure() {
    method setInjectFileUploadFailure (line 359) | public void setInjectFileUploadFailure(String fileToFail) {
    method getTimestampMappedType (line 370) | public SnowflakeType getTimestampMappedType() {
    method setTimestampMappedType (line 380) | public void setTimestampMappedType(SnowflakeType timestampMappedType) {
    method isResultColumnCaseInsensitive (line 390) | public boolean isResultColumnCaseInsensitive() {
    method setResultColumnCaseInsensitive (line 401) | public void setResultColumnCaseInsensitive(boolean resultColumnCaseIns...
    method isJdbcTreatDecimalAsInt (line 412) | public boolean isJdbcTreatDecimalAsInt() {
    method setJdbcTreatDecimalAsInt (line 422) | public void setJdbcTreatDecimalAsInt(boolean jdbcTreatDecimalAsInt) {
    method isJdbcArrowTreatDecimalAsInt (line 429) | public boolean isJdbcArrowTreatDecimalAsInt() {
    method setJdbcArrowTreatDecimalAsInt (line 438) | public void setJdbcArrowTreatDecimalAsInt(boolean jdbcArrowTreatDecima...
    method getServerUrl (line 447) | public String getServerUrl() {
    method isStringQuoted (line 459) | public boolean isStringQuoted() {
    method addProperty (line 475) | public void addProperty(SFSessionProperty sfSessionProperty, Object pr...
    method addProperty (line 491) | public void addProperty(String propertyName, Object propertyValue) thr...
    method getConnectionPropertiesMap (line 521) | public Map<SFSessionProperty, Object> getConnectionPropertiesMap() {
    method getHttpClientKey (line 531) | public HttpClientSettingsKey getHttpClientKey() throws SnowflakeSQLExc...
    method logHttpClientInitInfo (line 713) | private void logHttpClientInitInfo(HttpClientSettingsKey key) {
    method unsetInvalidProxyHostAndPort (line 735) | public void unsetInvalidProxyHostAndPort() {
    method getOCSPMode (line 752) | public OCSPMode getOCSPMode() throws SnowflakeSQLException {
    method getCertRevocationCheckMode (line 787) | public CertRevocationCheckMode getCertRevocationCheckMode() throws Sno...
    method getQueryTimeout (line 810) | public Integer getQueryTimeout() {
    method getUser (line 819) | public String getUser() {
    method getUrl (line 828) | public String getUrl() {
    method getInjectWaitInPut (line 837) | public int getInjectWaitInPut() {
    method getMetadataRequestUseSessionDatabase (line 854) | public boolean getMetadataRequestUseSessionDatabase() {
    method setMetadataRequestUseSessionDatabase (line 863) | public void setMetadataRequestUseSessionDatabase(boolean enabled) {
    method getMetadataRequestUseConnectionCtx (line 872) | public boolean getMetadataRequestUseConnectionCtx() {
    method setMetadataRequestUseConnectionCtx (line 881) | public void setMetadataRequestUseConnectionCtx(boolean enabled) {
    method getInjectedDelay (line 890) | AtomicInteger getInjectedDelay() {
    method setInjectedDelay (line 899) | public void setInjectedDelay(int injectedDelay) {
    method getTreatNTZAsUTC (line 908) | public boolean getTreatNTZAsUTC() {
    method setTreatNTZAsUTC (line 917) | public void setTreatNTZAsUTC(boolean treatNTZAsUTC) {
    method getEnableHeartbeat (line 926) | public boolean getEnableHeartbeat() {
    method setEnableHeartbeat (line 935) | public void setEnableHeartbeat(boolean enableHeartbeat) {
    method setHeartbeatFrequency (line 945) | public void setHeartbeatFrequency(int frequency) {
    method getHeartbeatFrequency (line 960) | public int getHeartbeatFrequency() {
    method getAutoCommit (line 973) | public boolean getAutoCommit() {
    method setAutoCommit (line 983) | public void setAutoCommit(boolean autoCommit) {
    method getFormatDateWithTimezone (line 992) | public boolean getFormatDateWithTimezone() {
    method setFormatDateWithTimezone (line 1001) | public void setFormatDateWithTimezone(boolean formatDateWithTimezone) {
    method getUseSessionTimezone (line 1010) | public boolean getUseSessionTimezone() {
    method getDefaultFormatDateWithTimezone (line 1019) | public boolean getDefaultFormatDateWithTimezone() {
    method setUseSessionTimezone (line 1028) | public void setUseSessionTimezone(boolean useSessionTimezone) {
    method setDefaultFormatDateWithTimezone (line 1037) | public void setDefaultFormatDateWithTimezone(boolean defaultFormatDate...
    method getGetDateUseNullTimezone (line 1041) | public boolean getGetDateUseNullTimezone() {
    method setGetDateUseNullTimezone (line 1045) | public void setGetDateUseNullTimezone(boolean getDateUseNullTimezone) {
    method getEnableCombineDescribe (line 1049) | public boolean getEnableCombineDescribe() {
    method setEnableCombineDescribe (line 1053) | public void setEnableCombineDescribe(boolean enableCombineDescribe) {
    method isClientTelemetryEnabled (line 1057) | public boolean isClientTelemetryEnabled() {
    method setClientTelemetryEnabled (line 1061) | public void setClientTelemetryEnabled(boolean clientTelemetryEnabled) {
    method getArrayBindStageThreshold (line 1065) | public int getArrayBindStageThreshold() {
    method setArrayBindStageThreshold (line 1069) | public void setArrayBindStageThreshold(int arrayBindStageThreshold) {
    method getStoreTemporaryCredential (line 1073) | public boolean getStoreTemporaryCredential() {
    method setStoreTemporaryCredential (line 1077) | public void setStoreTemporaryCredential(boolean storeTemporaryCredenti...
    method getServiceName (line 1081) | public String getServiceName() {
    method setServiceName (line 1085) | public void setServiceName(String serviceName) {
    method setEnableConservativeMemoryUsage (line 1089) | public void setEnableConservativeMemoryUsage(boolean enableConservativ...
    method isConservativeMemoryUsageEnabled (line 1093) | public boolean isConservativeMemoryUsageEnabled() {
    method getConservativeMemoryAdjustStep (line 1097) | public int getConservativeMemoryAdjustStep() {
    method setConservativeMemoryAdjustStep (line 1101) | public void setConservativeMemoryAdjustStep(int conservativeMemoryAdju...
    method getClientMemoryLimit (line 1105) | public int getClientMemoryLimit() {
    method setClientMemoryLimit (line 1109) | public void setClientMemoryLimit(int clientMemoryLimit) {
    method getQueryContextCacheSize (line 1113) | public int getQueryContextCacheSize() {
    method setQueryContextCacheSize (line 1117) | public void setQueryContextCacheSize(int queryContextCacheSize) {
    method getJdbcEnablePutGet (line 1121) | public boolean getJdbcEnablePutGet() {
    method setJdbcEnablePutGet (line 1125) | public void setJdbcEnablePutGet(boolean jdbcEnablePutGet) {
    method getEnablePutGet (line 1129) | public boolean getEnablePutGet() {
    method setEnablePutGet (line 1133) | public boolean setEnablePutGet(boolean enablePutGet) {
    method isEnableCopyResultSet (line 1137) | public boolean isEnableCopyResultSet() {
    method setEnableCopyResultSet (line 1141) | public boolean setEnableCopyResultSet(boolean enableCopyResultSet) {
    method getEnablePatternSearch (line 1145) | public boolean getEnablePatternSearch() {
    method setEnablePatternSearch (line 1149) | public void setEnablePatternSearch(boolean enablePatternSearch) {
    method getEnableExactSchemaSearch (line 1153) | public boolean getEnableExactSchemaSearch() {
    method setEnableExactSchemaSearch (line 1157) | void setEnableExactSchemaSearch(boolean enableExactSchemaSearch) {
    method getEnableWildcardsInShowMetadataCommands (line 1161) | public boolean getEnableWildcardsInShowMetadataCommands() {
    method setEnableWildcardsInShowMetadataCommands (line 1165) | void setEnableWildcardsInShowMetadataCommands(boolean enableWildcardsI...
    method getDisableGcsDefaultCredentials (line 1169) | public boolean getDisableGcsDefaultCredentials() {
    method setDisableGcsDefaultCredentials (line 1173) | public void setDisableGcsDefaultCredentials(boolean disableGcsDefaultC...
    method getClientResultChunkSize (line 1177) | public int getClientResultChunkSize() {
    method setClientResultChunkSize (line 1181) | public void setClientResultChunkSize(int clientResultChunkSize) {
    method getOtherParameter (line 1185) | public Object getOtherParameter(String key) {
    method setOtherParameter (line 1189) | public void setOtherParameter(String key, Object value) {
    method getClientPrefetchThreads (line 1193) | public int getClientPrefetchThreads() {
    method setClientPrefetchThreads (line 1197) | public void setClientPrefetchThreads(int clientPrefetchThreads) {
    method getValidateDefaultParameters (line 1201) | public boolean getValidateDefaultParameters() {
    method setValidateDefaultParameters (line 1205) | public void setValidateDefaultParameters(boolean validateDefaultParame...
    method getDatabase (line 1209) | public String getDatabase() {
    method setDatabase (line 1213) | public void setDatabase(String database) {
    method getSchema (line 1219) | public String getSchema() {
    method setSchema (line 1223) | public void setSchema(String schema) {
    method getRole (line 1229) | public String getRole() {
    method setRole (line 1233) | public void setRole(String role) {
    method getWarehouse (line 1237) | public String getWarehouse() {
    method setWarehouse (line 1241) | public void setWarehouse(String warehouse) {
    method setUseRegionalS3EndpointsForPresignedURL (line 1247) | public void setUseRegionalS3EndpointsForPresignedURL(boolean regionalS...
    method getUseRegionalS3EndpointsForPresignedURL (line 1251) | public boolean getUseRegionalS3EndpointsForPresignedURL() {
    method getArrayBindStage (line 1255) | public String getArrayBindStage() {
    method setArrayBindStage (line 1259) | public void setArrayBindStage(String arrayBindStage) {
    method setSessionPropertyByKey (line 1270) | public void setSessionPropertyByKey(String propertyName, Object proper...
    method getSessionPropertyByKey (line 1280) | public Object getSessionPropertyByKey(String propertyName) {
    method isSafeToClose (line 1290) | public abstract boolean isSafeToClose();
    method getQueryStatus (line 1297) | public abstract QueryStatus getQueryStatus(String queryID) throws SQLE...
    method checkProperties (line 1305) | public abstract List<DriverPropertyInfo> checkProperties();
    method close (line 1313) | public void close() throws SFException, SnowflakeSQLException {
    method close (line 1318) | public abstract void close(InternalCallMarker internalCallMarker)
    method getTelemetryClient (line 1325) | public Telemetry getTelemetryClient() {
    method getTelemetryClient (line 1333) | public abstract Telemetry getTelemetryClient(InternalCallMarker intern...
    method callHeartBeat (line 1342) | public abstract void callHeartBeat(int timeout) throws Exception, SFEx...
    method getSqlWarnings (line 1350) | public List<SFException> getSqlWarnings() {
    method clearSqlWarnings (line 1358) | public void clearSqlWarnings() {
    method getSfConnectionHandler (line 1367) | public SFConnectionHandler getSfConnectionHandler() {
    method getNetworkTimeoutInMilli (line 1376) | public abstract int getNetworkTimeoutInMilli();
    method getAuthTimeout (line 1381) | @Deprecated
    method getMaxHttpRetries (line 1387) | public abstract int getMaxHttpRetries();
    method getSnowflakeConnectionString (line 1392) | public abstract SnowflakeConnectString getSnowflakeConnectionString();
    method isAsyncSession (line 1397) | public abstract boolean isAsyncSession();
    method getQueryContextDTO (line 1402) | public abstract QueryContextDTO getQueryContextDTO();
    method setQueryContext (line 1409) | public abstract void setQueryContext(String queryContext);
    method getEnableReturnTimestampWithTimeZone (line 1417) | public boolean getEnableReturnTimestampWithTimeZone() {
    method getImplicitServerSideQueryTimeout (line 1421) | boolean getImplicitServerSideQueryTimeout() {
    method setImplicitServerSideQueryTimeout (line 1425) | void setImplicitServerSideQueryTimeout(boolean value) {
    method setClearBatchOnlyAfterSuccessfulExecution (line 1429) | void setClearBatchOnlyAfterSuccessfulExecution(boolean value) {
    method getClearBatchOnlyAfterSuccessfulExecution (line 1433) | public boolean getClearBatchOnlyAfterSuccessfulExecution() {
    method getTreatTimeAsWallClockTime (line 1437) | public boolean getTreatTimeAsWallClockTime() {
    method setTreatTimeAsWallClockTime (line 1441) | public void setTreatTimeAsWallClockTime(boolean treatTimeAsWallClockTi...
    method isOwnerOnlyStageFilePermissionsEnabled (line 1450) | public boolean isOwnerOnlyStageFilePermissionsEnabled() {
    method setOwnerOnlyStageFilePermissionsEnabled (line 1454) | public void setOwnerOnlyStageFilePermissionsEnabled(boolean booleanVal...
    method isAllowCertificatesWithoutCrlUrl (line 1458) | public boolean isAllowCertificatesWithoutCrlUrl() {
    method setAllowCertificatesWithoutCrlUrl (line 1462) | public void setAllowCertificatesWithoutCrlUrl(boolean allowCertificate...
    method getStickyHttpHeaders (line 1466) | public Map<String, String> getStickyHttpHeaders() {
    method extractAndUpdateStickyHttpHeaders (line 1470) | public void extractAndUpdateStickyHttpHeaders(Map<String, String> allH...
    method filterStickyHeaders (line 1474) | private static Map<String, String> filterStickyHeaders(Map<String, Str...

FILE: src/main/java/net/snowflake/client/internal/core/SFBaseStatement.java
  class SFBaseStatement (line 19) | public abstract class SFBaseStatement {
    method addProperty (line 39) | public void addProperty(String propertyName, Object propertyValue) thr...
    method getStatementParameters (line 52) | public Map<String, Object> getStatementParameters() {
    method describe (line 65) | public abstract SFPreparedStatementMetaData describe(String sql) throw...
    method execute (line 79) | public abstract SFBaseResultSet execute(
    method asyncExecute (line 101) | public abstract SFBaseResultSet asyncExecute(
    method close (line 112) | public abstract void close();
    method cancel (line 121) | @Deprecated
    method cancel (line 131) | public void cancel(CancellationReason cancellationReason) throws SFExc...
    method executeSetProperty (line 140) | public void executeSetProperty(final String sql) {
    method isFileTransfer (line 169) | public static boolean isFileTransfer(String sql) {
    method hasChildren (line 179) | public abstract boolean hasChildren();
    method getSFBaseSession (line 186) | public abstract SFBaseSession getSFBaseSession();
    method getSFBaseSession (line 192) | public abstract SFBaseSession getSFBaseSession(InternalCallMarker inte...
    method getResultSet (line 200) | public abstract SFBaseResultSet getResultSet();
    method getMoreResults (line 211) | public abstract boolean getMoreResults(int current) throws SQLException;
    type CallingMethod (line 214) | public enum CallingMethod {
    method getConservativeMemoryLimit (line 220) | public abstract long getConservativeMemoryLimit();
    method getConservativePrefetchThreads (line 222) | public abstract int getConservativePrefetchThreads();
    method getChildQueryIds (line 229) | public abstract String[] getChildQueryIds(String queryID) throws SQLEx...

FILE: src/main/java/net/snowflake/client/internal/core/SFBasicCrlTrustManager.java
  class SFBasicCrlTrustManager (line 8) | public class SFBasicCrlTrustManager implements X509TrustManager {
    method SFBasicCrlTrustManager (line 12) | public SFBasicCrlTrustManager(
    method checkClientTrusted (line 18) | @Override
    method checkServerTrusted (line 24) | @Override
    method getAcceptedIssuers (line 31) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/SFChildResult.java
  class SFChildResult (line 4) | public class SFChildResult {
    method SFChildResult (line 10) | public SFChildResult(String id, SFStatementType type) {
    method getId (line 16) | public String getId() {
    method getType (line 21) | public SFStatementType getType() {

FILE: src/main/java/net/snowflake/client/internal/core/SFCrlTrustManagerFactory.java
  class SFCrlTrustManagerFactory (line 16) | class SFCrlTrustManagerFactory {
    method createCrlTrustManager (line 19) | static X509TrustManager createCrlTrustManager(HttpClientSettingsKey key)
    method getSystemTrustManager (line 34) | private static X509TrustManager getSystemTrustManager() {

FILE: src/main/java/net/snowflake/client/internal/core/SFException.java
  class SFException (line 8) | public class SFException extends Throwable {
    method SFException (line 28) | @Deprecated
    method SFException (line 40) | @Deprecated
    method SFException (line 52) | @Deprecated
    method SFException (line 63) | public SFException(String queryId, Throwable cause, ErrorCode errorCod...
    method getCause (line 81) | public Throwable getCause() {
    method getQueryId (line 90) | public String getQueryId() {
    method getSqlState (line 99) | public String getSqlState() {
    method getVendorCode (line 108) | public int getVendorCode() {
    method getParams (line 117) | public Object[] getParams() {
    method oneLiner (line 121) | public static String oneLiner(String prefix, Throwable thrown) {
    method toString (line 130) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/SFExtendedCrlTrustManager.java
  class SFExtendedCrlTrustManager (line 10) | public class SFExtendedCrlTrustManager extends X509ExtendedTrustManager {
    method SFExtendedCrlTrustManager (line 14) | public SFExtendedCrlTrustManager(
    method checkClientTrusted (line 20) | @Override
    method checkClientTrusted (line 26) | @Override
    method checkClientTrusted (line 32) | @Override
    method checkServerTrusted (line 38) | @Override
    method checkServerTrusted (line 45) | @Override
    method checkServerTrusted (line 52) | @Override
    method getAcceptedIssuers (line 59) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/SFFixedViewResultSet.java
  class SFFixedViewResultSet (line 23) | public class SFFixedViewResultSet extends SFJsonResultSet {
    method SFFixedViewResultSet (line 31) | public SFFixedViewResultSet(SnowflakeFixedView fixedView, CommandType ...
    method next (line 81) | @Override
    method getObjectInternal (line 111) | @Override
    method close (line 128) | @Override
    method getStatementType (line 136) | @Override
    method setStatementType (line 145) | @Override
    method isLast (line 150) | @Override
    method isAfterLast (line 155) | @Override
    method getQueryId (line 160) | @Override

FILE: src/main/java/net/snowflake/client/internal/core/SFJsonResultSet.java
  class SFJsonResultSet (line 26) | public abstract class SFJsonResultSet extends SFBaseResultSet {
    method SFJsonResultSet (line 32) | protected SFJsonResultSet(TimeZone sessionTimeZone, Converters convert...
    method getObjectInternal (line 45) | protected abstract Object getObjectInternal(int columnIndex) throws SF...
    method getObject (line 47) | public Object getObject(int columnIndex) throws SFException {
    method getObjectWithoutString (line 107) | @Override
    method getBigInt (line 119) | private Object getBigInt(int columnIndex, Object obj) throws SFExcepti...
    method getArray (line 123) | @Override
    method getString (line 132) | @Override
    method getBoolean (line 142) | @Override
    method getByte (line 149) | @Override
    method getPeriod (line 156) | @Override
    method getDuration (line 164) | @Override
    method getShort (line 172) | @Override
    method getInt (line 180) | @Override
    method getLong (line 188) | @Override
    method getBigDecimal (line 196) | @Override
    method getBigDecimal (line 204) | @Override
    method getTime (line 212) | @Override
    method getTimestamp (line 224) | @Override
    method getFloat (line 236) | @Override
    method getDouble (line 244) | @Override
    method getBytes (line 252) | @Override
    method getDate (line 262) | public Date getDate(int columnIndex) throws SFException {
    method getDate (line 266) | @Override
    method createSqlInputForColumn (line 276) | @Override
    method convertToDate (line 286) | @Override
    method convertToTime (line 291) | @Override
    method convertToTimestamp (line 296) | @Override
    method getTimestamp (line 302) | private Timestamp getTimestamp(int columnIndex) throws SFException {
    method getConverters (line 306) | @Override
    method getSqlInput (line 311) | private Object getSqlInput(String input, int columnIndex) throws SFExc...

FILE: src/main/java/net/snowflake/client/internal/core/SFLoginInput.java
  class SFLoginInput (line 18) | public class SFLoginInput {
    method SFLoginInput (line 89) | public SFLoginInput() {}
    method getBrowserResponseTimeout (line 91) | public Duration getBrowserResponseTimeout() {
    method setBrowserResponseTimeout (line 95) | public SFLoginInput setBrowserResponseTimeout(Duration browserResponse...
    method getServerUrl (line 100) | public String getServerUrl() {
    method setServerUrl (line 104) | public SFLoginInput setServerUrl(String serverUrl) {
    method getDisableConsoleLogin (line 109) | public boolean getDisableConsoleLogin() {
    method setDisableConsoleLogin (line 113) | SFLoginInput setDisableConsoleLogin(boolean disableConsoleLogin) {
    method getDatabaseName (line 118) | String getDatabaseName() {
    method setDatabaseName (line 122) | SFLoginInput setDatabaseName(String databaseName) {
    method getSchemaName (line 127) | public String getSchemaName() {
    method setSchemaName (line 131) | public SFLoginInput setSchemaName(String schemaName) {
    method getWarehouse (line 136) | public String getWarehouse() {
    method setWarehouse (line 140) | public SFLoginInput setWarehouse(String warehouse) {
    method getRole (line 145) | public String getRole() {
    method setRole (line 149) | public SFLoginInput setRole(String role) {
    method isValidateDefaultParameters (line 154) | public boolean isValidateDefaultParameters() {
    method setValidateDefaultParameters (line 158) | public SFLoginInput setValidateDefaultParameters(Object v) {
    method getAuthenticator (line 163) | public String getAuthenticator() {
    method setAuthenticator (line 167) | public SFLoginInput setAuthenticator(String authenticator) {
    method getOKTAUserName (line 172) | public String getOKTAUserName() {
    method setOKTAUserName (line 176) | public SFLoginInput setOKTAUserName(String oktaUserName) {
    method getAccountName (line 181) | public String getAccountName() {
    method setAccountName (line 185) | public SFLoginInput setAccountName(String accountName) {
    method getLoginTimeout (line 190) | public int getLoginTimeout() {
    method setLoginTimeout (line 196) | SFLoginInput setLoginTimeout(int loginTimeout) {
    method getRetryTimeout (line 205) | int getRetryTimeout() {
    method setRetryTimeout (line 209) | SFLoginInput setRetryTimeout(int retryTimeout) {
    method getAuthTimeout (line 214) | public int getAuthTimeout() {
    method setAuthTimeout (line 218) | SFLoginInput setAuthTimeout(int authTimeout) {
    method getUserName (line 223) | public String getUserName() {
    method setUserName (line 227) | SFLoginInput setUserName(String userName) {
    method getPassword (line 232) | public String getPassword() {
    method setPassword (line 236) | public SFLoginInput setPassword(String password) {
    method getPasscode (line 241) | String getPasscode() {
    method setPasscode (line 245) | SFLoginInput setPasscode(String passcode) {
    method getToken (line 250) | public String getToken() {
    method setToken (line 254) | public SFLoginInput setToken(String token) {
    method getConnectionTimeoutInMillis (line 259) | int getConnectionTimeoutInMillis() {
    method setConnectionTimeout (line 263) | SFLoginInput setConnectionTimeout(Duration connectionTimeout) {
    method getSocketTimeoutInMillis (line 268) | public int getSocketTimeoutInMillis() {
    method setSocketTimeout (line 272) | public SFLoginInput setSocketTimeout(Duration socketTimeout) {
    method isPasscodeInPassword (line 277) | boolean isPasscodeInPassword() {
    method setPasscodeInPassword (line 281) | SFLoginInput setPasscodeInPassword(boolean passcodeInPassword) {
    method getAppId (line 286) | String getAppId() {
    method setAppId (line 290) | SFLoginInput setAppId(String appId) {
    method getAppVersion (line 295) | String getAppVersion() {
    method setAppVersion (line 299) | SFLoginInput setAppVersion(String appVersion) {
    method getSessionToken (line 304) | public String getSessionToken() {
    method setSessionToken (line 308) | public SFLoginInput setSessionToken(String sessionToken) {
    method getMasterToken (line 313) | String getMasterToken() {
    method setMasterToken (line 317) | SFLoginInput setMasterToken(String masterToken) {
    method getIdToken (line 322) | String getIdToken() {
    method setIdToken (line 326) | SFLoginInput setIdToken(String idToken) {
    method getMfaToken (line 331) | String getMfaToken() {
    method setMfaToken (line 335) | SFLoginInput setMfaToken(String mfaToken) {
    method getOauthAccessToken (line 340) | String getOauthAccessToken() {
    method setOauthAccessToken (line 344) | SFLoginInput setOauthAccessToken(String oauthAccessToken) {
    method getOauthRefreshToken (line 349) | public String getOauthRefreshToken() {
    method setOauthRefreshToken (line 353) | SFLoginInput setOauthRefreshToken(String oauthRefreshToken) {
    method getWorkloadIdentityProvider (line 358) | String getWorkloadIdentityProvider() {
    method setWorkloadIdentityProvider (line 362) | SFLoginInput setWorkloadIdentityProvider(String workloadIdentityProvid...
    method getDPoPPublicKey (line 367) | public String getDPoPPublicKey() {
    method setDPoPPublicKey (line 371) | SFLoginInput setDPoPPublicKey(String dpopPublicKey) {
    method isDPoPEnabled (line 376) | public boolean isDPoPEnabled() {
    method setDPoPEnabled (line 381) | public void setDPoPEnabled(boolean dpopEnabled) {
    method getSessionParameters (line 385) | Map<String, Object> getSessionParameters() {
    method setSessionParameters (line 389) | SFLoginInput setSessionParameters(Map<String, Object> sessionParameter...
    method getPrivateKey (line 394) | PrivateKey getPrivateKey() {
    method setPrivateKey (line 398) | SFLoginInput setPrivateKey(PrivateKey privateKey) {
    method getPrivateKeyBase64 (line 403) | String getPrivateKeyBase64() {
    method setPrivateKeyBase64 (line 407) | SFLoginInput setPrivateKeyBase64(String privateKeyBase64) {
    method setPrivateKeyFile (line 412) | SFLoginInput setPrivateKeyFile(String privateKeyFile) {
    method setPrivateKeyPwd (line 417) | SFLoginInput setPrivateKeyPwd(String privateKeyPwd) {
    method getPrivateKeyFile (line 422) | String getPrivateKeyFile() {
    method getPrivateKeyPwd (line 426) | String getPrivateKeyPwd() {
    method isPrivateKeyProvided (line 430) | boolean isPrivateKeyProvided() {
    method getApplication (line 436) | public String getApplication() {
    method setApplication (line 440) | public SFLoginInput setApplication(String application) {
    method getServiceName (line 445) | String getServiceName() {
    method setServiceName (line 449) | SFLoginInput setServiceName(String serviceName) {
    method getOCSPMode (line 454) | OCSPMode getOCSPMode() {
    method setOCSPMode (line 458) | SFLoginInput setOCSPMode(OCSPMode ocspMode) {
    method getHttpClientSettingsKey (line 463) | public HttpClientSettingsKey getHttpClientSettingsKey() {
    method setHttpClientSettingsKey (line 467) | public SFLoginInput setHttpClientSettingsKey(HttpClientSettingsKey key) {
    method getInFlightCtx (line 473) | String getInFlightCtx() {
    method setInFlightCtx (line 478) | SFLoginInput setInFlightCtx(String inFlightCtx) {
    method getDisableSamlURLCheck (line 483) | boolean getDisableSamlURLCheck() {
    method setDisableSamlURLCheck (line 487) | SFLoginInput setDisableSamlURLCheck(boolean disableSamlURLCheck) {
    method getRedirectUriPort (line 492) | public int getRedirectUriPort() {
    method setRedirectUriPort (line 496) | public SFLoginInput setRedirectUriPort(int redirectUriPort) {
    method getClientId (line 501) | public String getClientId() {
    method setClientId (line 505) | public SFLoginInput setClientId(String clientId) {
    method getClientSecret (line 510) | public String getClientSecret() {
    method setClientSecret (line 514) | public SFLoginInput setClientSecret(String clientSecret) {
    method getAdditionalHttpHeadersForSnowsight (line 519) | Map<String, String> getAdditionalHttpHeadersForSnowsight() {
    method setAdditionalHttpHeadersForSnowsight (line 532) | public SFLoginInput setAdditionalHttpHeadersForSnowsight(
    method getBooleanValue (line 538) | static boolean getBooleanValue(Object v) {
    method getHostFromServerUrl (line 550) | String getHostFromServerUrl() throws SFException {
    method isEnableClientStoreTemporaryCredential (line 565) | boolean isEnableClientStoreTemporaryCredential() {
    method setEnableClientStoreTemporaryCredential (line 569) | SFLoginInput setEnableClientStoreTemporaryCredential(
    method isEnableClientRequestMfaToken (line 575) | boolean isEnableClientRequestMfaToken() {
    method setEnableClientRequestMfaToken (line 579) | SFLoginInput setEnableCl
Condensed preview — 1042 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,248K chars).
[
  {
    "path": ".cursor/skills/graphite-pr-workflow/SKILL.md",
    "chars": 5362,
    "preview": "---\nname: graphite-pr-workflow\ndescription: Create branches, commits, and pull requests using Graphite CLI (gt) for the "
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 220,
    "preview": "* @snowflakedb/Client\n/src/main/java/net/snowflake/client/core/crl/** @snowflakedb/pki-oversight @snowflakedb/Client\n/sr"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/BUG_REPORT.md",
    "chars": 1108,
    "preview": "---\nname: Bug Report 🐞\nabout: Something isn't working as expected? Here is the right place to report.\nlabels: bug\n---\n\n:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/FEATURE_REQUEST.md",
    "chars": 451,
    "preview": "---\nname: Feature Request 💡\nabout: Suggest a new idea for the project.\nlabels: feature\n---\n\n<!--\nIf you need urgent assi"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 1356,
    "preview": "# Overview\n\nSNOW-XXXXX\n\n## Pre-review self checklist\n- [ ] PR branch is updated with all the changes from `master` branc"
  },
  {
    "path": ".github/repo_meta.yaml",
    "chars": 1090,
    "preview": "\n# point_of_contact: the owner of this repository, can be a GitHub user or GitHub team\npoint_of_contact: @snowflakedb/cl"
  },
  {
    "path": ".github/workflows/build-test.yml",
    "chars": 18789,
    "preview": "name: Build and Test\n\non:\n    push:\n        branches:\n            - master\n        tags:\n            - v*\n    pull_reque"
  },
  {
    "path": ".github/workflows/changelog.yml",
    "chars": 589,
    "preview": "name: Changelog Check\npermissions:\n  contents: read\n\non:\n  pull_request:\n    types: [opened, synchronize, labeled, unlab"
  },
  {
    "path": ".github/workflows/check-style.yml",
    "chars": 354,
    "preview": "name: Check Style\n\non:\n    pull_request:\n        branches:\n            - master\njobs:\n    check-style:\n        name: Che"
  },
  {
    "path": ".github/workflows/cla_bot.yml",
    "chars": 1080,
    "preview": "name: \"CLA Assistant\"\non:\n  issue_comment:\n    types: [created]\n  pull_request_target:\n    types: [opened,closed,synchro"
  },
  {
    "path": ".github/workflows/jira_close.yml",
    "chars": 1568,
    "preview": "name: Jira closure\n\non:\n  issues:\n    types: [closed, deleted]\n\njobs:\n  close-issue:\n    runs-on: ubuntu-latest\n    step"
  },
  {
    "path": ".github/workflows/jira_comment.yml",
    "chars": 977,
    "preview": "name: Jira comment\n\non:\n  issue_comment:\n    types: [created]\n\njobs:\n  comment-issue:\n    runs-on: ubuntu-latest\n    ste"
  },
  {
    "path": ".github/workflows/jira_issue.yml",
    "chars": 3736,
    "preview": "name: Jira creation\n\non:\n  issues:\n    types: [opened]\n  issue_comment:\n    types: [created]\n\njobs:\n  create-issue:\n    "
  },
  {
    "path": ".github/workflows/semgrep.yml",
    "chars": 283,
    "preview": "---\nname: Run semgrep checks\n\non:\n  pull_request:\n    branches: [master]\n\npermissions:\n  contents: read\n\njobs:\n  run-sem"
  },
  {
    "path": ".github/workflows/snyk-issue.yml",
    "chars": 865,
    "preview": "name: Snyk Issue\n\non:\n  schedule:\n    - cron: '* */12 * * *'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  issue"
  },
  {
    "path": ".github/workflows/snyk-pr.yml",
    "chars": 947,
    "preview": "name: snyk-pr\non:\n  pull_request:\n    branches:\n      - master\n\npermissions:\n  contents: read\n  issues: write\n  pull-req"
  },
  {
    "path": ".github/workflows/snyk-scan.yml",
    "chars": 5116,
    "preview": "name: Snyk Scan\n\non:\n  pull_request:\n    branches:\n      - master\n  schedule:\n    - cron: '0 6 * * 1'\n  workflow_dispatc"
  },
  {
    "path": ".gitignore",
    "chars": 1372,
    "preview": "# Compiled source #\n###################\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.so\n\n# Exception: Keep minicore native libraries\n"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 1084,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 109,
    "preview": "repos:\n- repo: git@github.com:snowflakedb/casec_precommit.git\n  rev: v1.35.5\n  hooks:\n  - id: secret-scanner\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 14244,
    "preview": "#### For all official JDBC Release Notes please refer to https://docs.snowflake.com/en/release-notes/clients-drivers/jdb"
  },
  {
    "path": "FIPS/.gitignore",
    "chars": 72,
    "preview": ".idea/\nlib/\ntarget/\ndependency-reduced-pom.xml\ngenerated_public_pom.xml\n"
  },
  {
    "path": "FIPS/pom.xml",
    "chars": 42845,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "FIPS/public_pom.xml",
    "chars": 2315,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLoc"
  },
  {
    "path": "FIPS/scripts/check_content.sh",
    "chars": 783,
    "preview": "#!/bin/bash -e\n\n# scripts used to check if all dependencies are shaded into snowflake internal path\n\nset -o pipefail\n\nDI"
  },
  {
    "path": "FIPS/src/test/java/net/snowflake/client/AbstractDriverIT.java",
    "chars": 14262,
    "preview": "package net.snowflake.client;\n\nimport com.google.common.base.Strings;\n\nimport java.net.URL;\nimport java.sql.Connection;\n"
  },
  {
    "path": "FIPS/src/test/java/net/snowflake/client/DontRunOnGCP.java",
    "chars": 443,
    "preview": "package net.snowflake.client;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport ja"
  },
  {
    "path": "FIPS/src/test/java/net/snowflake/client/DontRunOnGithubActions.java",
    "chars": 444,
    "preview": "package net.snowflake.client;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport ja"
  },
  {
    "path": "FIPS/src/test/java/net/snowflake/client/TestUtil.java",
    "chars": 1936,
    "preview": "package net.snowflake.client;\n\nimport net.snowflake.client.internal.core.SFException;\nimport net.snowflake.client.intern"
  },
  {
    "path": "FIPS/src/test/java/net/snowflake/client/category/FipsTestSuite.java",
    "chars": 673,
    "preview": "package net.snowflake.client.category;\n\nimport org.junit.platform.suite.api.IncludeTags;\nimport java.lang.annotation.Ele"
  },
  {
    "path": "FIPS/src/test/java/net/snowflake/client/jdbc/ConnectionFipsIT.java",
    "chars": 15966,
    "preview": "package net.snowflake.client.jdbc;\n\nimport static org.junit.jupiter.api.Assertions.*;\n\nimport java.net.URL;\nimport java."
  },
  {
    "path": "Jenkinsfile",
    "chars": 4742,
    "preview": "@Library('pipeline-utils')\nimport com.snowflake.DevEnvUtils\nimport groovy.json.JsonOutput\n\nclass JdbcJobDefinition {\n  S"
  },
  {
    "path": "LICENSE.txt",
    "chars": 11365,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "README.rst",
    "chars": 8288,
    "preview": "Snowflake JDBC Driver\n*********************\n\n.. image:: https://github.com/snowflakedb/snowflake-jdbc/workflows/Build%20"
  },
  {
    "path": "SECURITY.md",
    "chars": 307,
    "preview": "# Security Policy\n\n\nPlease refer to the Snowflake [HackerOne program](https://hackerone.com/snowflake?type=team) for our"
  },
  {
    "path": "TestOnly/.gitignore",
    "chars": 15,
    "preview": "target/\n.idea/\n"
  },
  {
    "path": "TestOnly/README.rst",
    "chars": 921,
    "preview": "Test Only Maven Project\n***********************\n\nThis directory includes a maven project to run the Snowflake JDBC tests"
  },
  {
    "path": "TestOnly/pom.xml",
    "chars": 19520,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "ci/_init.sh",
    "chars": 2935,
    "preview": "#!/usr/local/bin/env bash\nset -e\n\nexport PLATFORM=$(echo $(uname) | tr '[:upper:]' '[:lower:]')\nexport INTERNAL_REPO=art"
  },
  {
    "path": "ci/build.sh",
    "chars": 204,
    "preview": "#!/usr/bin/env bash\nset -e\n\n#\n# Build JDBC driver\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &"
  },
  {
    "path": "ci/container/build_component.sh",
    "chars": 467,
    "preview": "#!/bin/bash -e\n#\n# Build JDBC driver\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nJDBC"
  },
  {
    "path": "ci/container/change_snowflake_test_pwd.py",
    "chars": 862,
    "preview": "#!/usr/bin/env python\n#\n# Set a complex password for test user snowman\n#\n\nimport os\nimport sys\nimport snowflake.connecto"
  },
  {
    "path": "ci/container/create_schema.py",
    "chars": 380,
    "preview": "#!/usr/bin/env python\n#\n# Create test schema\n#\nimport os\nimport sys\nimport snowflake.connector\n\nimport sf_test_utils\n\nte"
  },
  {
    "path": "ci/container/download_artifact.sh",
    "chars": 1065,
    "preview": "#!/bin/bash -e\n#\n# Download Artifact\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nJDBC"
  },
  {
    "path": "ci/container/drop_schema.py",
    "chars": 377,
    "preview": "#!/usr/bin/env python\n#\n# Create test schema\n#\nimport os\nimport sys\nimport snowflake.connector\n\nimport sf_test_utils\n\nte"
  },
  {
    "path": "ci/container/hang_webserver.py",
    "chars": 1849,
    "preview": "#!/usr/bin/env python3\nimport sys\nfrom http.server import BaseHTTPRequestHandler,HTTPServer\nfrom socketserver import Thr"
  },
  {
    "path": "ci/container/sf_test_utils.py",
    "chars": 2530,
    "preview": "#!/usr/bin/env python\n#\n# Snowflake test utils\n#\nimport os\nimport sys\n\ndef get_test_schema():\n    return os.getenv(\"TARG"
  },
  {
    "path": "ci/container/test_authentication.sh",
    "chars": 860,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\n\nexport WORKSPACE=${WORKSPACE:-/mnt/workspace}\nexport SOURCE_ROOT=${SOURCE_ROOT:-/mnt/ho"
  },
  {
    "path": "ci/container/test_component.sh",
    "chars": 4892,
    "preview": "#!/bin/bash -e\n#\n# Test JDBC for Linux/MAC\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )"
  },
  {
    "path": "ci/container/upload_artifact.sh",
    "chars": 1510,
    "preview": "#!/bin/bash -e\n#\n# Upload jar files to S3\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\""
  },
  {
    "path": "ci/image/.gitignore",
    "chars": 27,
    "preview": "pom.xml\ndependencies/\n*.jar"
  },
  {
    "path": "ci/image/Dockerfile.jdbc-rockylinux-openjdk-test",
    "chars": 3634,
    "preview": "FROM rockylinux:9 AS jdbc-rockylinux-openjdk-base\n\n# update OS\nRUN dnf -y update && \\\n    dnf -y install epel-release\n\n#"
  },
  {
    "path": "ci/image/Dockerfile.jdbc-rockylinux8-openjdk-test",
    "chars": 3648,
    "preview": "FROM rockylinux:8 AS jdbc-rockylinux8-openjdk-base\n\n# update OS\nRUN dnf -y update && \\\n    dnf -y install epel-release\n\n"
  },
  {
    "path": "ci/image/build.sh",
    "chars": 687,
    "preview": "#!/usr/bin/env bash\nset -e\n#\n# Build Docker images\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" "
  },
  {
    "path": "ci/image/scripts/aws.sh",
    "chars": 55,
    "preview": "#!/bin/bash\nsource /opt/rh/rh-python36/enable\naws \"$@\"\n"
  },
  {
    "path": "ci/image/scripts/entrypoint.sh",
    "chars": 284,
    "preview": "#!/bin/bash -x\n# Add local user\n# Either use the LOCAL_USER_ID if passed in at runtime or\n# fallback\n\nUSER_ID=${LOCAL_US"
  },
  {
    "path": "ci/image/scripts/git.sh",
    "chars": 52,
    "preview": "#!/bin/bash\nsource /opt/rh/rh-git29/enable\ngit \"$@\"\n"
  },
  {
    "path": "ci/image/scripts/npmrc",
    "chars": 75,
    "preview": "registry=https://nexus.int.snowflakecomputing.com/repository/sf_npm_proxy/\n"
  },
  {
    "path": "ci/image/scripts/pip.sh",
    "chars": 56,
    "preview": "#!/bin/bash\n\nsource /opt/rh/rh-python36/enable\npip \"$@\"\n"
  },
  {
    "path": "ci/image/scripts/python3.6.sh",
    "chars": 62,
    "preview": "#!/bin/bash\n\nsource /opt/rh/rh-python36/enable\npython3.6 \"$@\"\n"
  },
  {
    "path": "ci/image/update.sh",
    "chars": 944,
    "preview": "#!/usr/bin/env bash\nset -e\n\n#\n# Build Docker images\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\""
  },
  {
    "path": "ci/log_analyze_setup.sh",
    "chars": 2939,
    "preview": "#!/bin/bash -e\n#\n# preparation for log analyze\n#\n\n# Note, this need to be consistent with docker bind parameter. Might n"
  },
  {
    "path": "ci/scripts/check_content.sh",
    "chars": 1110,
    "preview": "#!/bin/bash -e\n\n# scripts used to check if all dependency is shaded into snowflake internal path\n\npackage_modifier=$1\n\ns"
  },
  {
    "path": "ci/scripts/check_no_raw_system_calls.sh",
    "chars": 962,
    "preview": "#!/usr/bin/env bash\n#\n# Architectural guard: ensures no raw System.getProperty(), System.getenv(),\n# or System.setProper"
  },
  {
    "path": "ci/scripts/login_docker.sh",
    "chars": 331,
    "preview": "#!/bin/bash -e\n#\n# Login the Docker Hub\n#\necho \"[INFO] Login the Docker Hub\"\nif [[ -z \"$DOCKER_HUB_USER\" ]] || [[ -z \"$D"
  },
  {
    "path": "ci/scripts/set_git_info.sh",
    "chars": 1632,
    "preview": "#!/bin/bash -e\n#\n# Set GIT info\n#\nif [[ -z \"$GITHUB_ACTIONS\" ]]; then\n    #\n    # set Jenkins GIT parameters propagated "
  },
  {
    "path": "ci/scripts/setup_gpg.sh",
    "chars": 401,
    "preview": "#!/bin/bash\n# GPG setup script for creating unique GPG home directory\nsetup_gpg_home() {\n  # Create unique GPG home dire"
  },
  {
    "path": "ci/test.sh",
    "chars": 1985,
    "preview": "#!/bin/bash -e\n#\n# Test JDBC\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nJDBC_ROOT=\"$"
  },
  {
    "path": "ci/test_authentication.sh",
    "chars": 1005,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\nexport THIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nsource \"$THIS_DIR/sc"
  },
  {
    "path": "ci/test_mac.sh",
    "chars": 442,
    "preview": "#!/bin/bash -e\n#\n# Test JDBC for Mac\n#\n\necho \"DOWNLOADED\"\nset -o pipefail\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}"
  },
  {
    "path": "ci/test_revocation.sh",
    "chars": 3023,
    "preview": "#!/bin/bash -e\n#\n# Test certificate revocation validation using the revocation-validation framework.\n#\n\nset -o pipefail\n"
  },
  {
    "path": "ci/test_wif.sh",
    "chars": 5815,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\n\nexport THIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nexport RSA_KEY_PATH"
  },
  {
    "path": "ci/test_windows.bat",
    "chars": 6354,
    "preview": "REM \nREM Tests JDBC Driver on Windows\nREM\nsetlocal\nsetlocal EnableDelayedExpansion\npython -m venv venv\ncall venv\\scripts"
  },
  {
    "path": "ci/wif/aws-lambda/README.md",
    "chars": 322,
    "preview": "# AWS Lambda Function for WIF E2E Testing\n\n## Deployment Steps\n1. Install AWS CLI\n2. Configure AWS credentials: `aws con"
  },
  {
    "path": "ci/wif/aws-lambda/pom.xml",
    "chars": 4977,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
  },
  {
    "path": "ci/wif/aws-lambda/src/main/java/com/snowflake/wif/aws/WifLambdaFunctionE2e.java",
    "chars": 4576,
    "preview": "package com.snowflake.wif.aws;\n\nimport com.amazonaws.services.lambda.runtime.Context;\nimport com.amazonaws.services.lamb"
  },
  {
    "path": "ci/wif/aws-lambda/test.sh",
    "chars": 3089,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\n\nTHIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\nrun_aws_function() {\n  if"
  },
  {
    "path": "ci/wif/azure-function/Dockerfile",
    "chars": 922,
    "preview": "# Build stage\nFROM --platform=linux/amd64 mcr.microsoft.com/azure-functions/java:4-java17-build AS build\n\nCOPY azure-fun"
  },
  {
    "path": "ci/wif/azure-function/README.md",
    "chars": 166,
    "preview": "# Azure Function for WIF E2E Testing\n\n## Deployment Steps\n1. Install Azure CLI\n2. Authenticate: `az login`, login in bro"
  },
  {
    "path": "ci/wif/azure-function/host.json",
    "chars": 348,
    "preview": "{\n  \"version\": \"2.0\",\n  \"extensionBundle\": {\n    \"id\": \"Microsoft.Azure.Functions.ExtensionBundle\",\n    \"version\": \"[4.0"
  },
  {
    "path": "ci/wif/azure-function/pom.xml",
    "chars": 4477,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
  },
  {
    "path": "ci/wif/azure-function/src/main/java/com/snowflake/wif/azure/WifAzureFunctionE2e.java",
    "chars": 2751,
    "preview": "package com.snowflake.wif.azure;\n\nimport com.microsoft.azure.functions.*;\nimport com.microsoft.azure.functions.annotatio"
  },
  {
    "path": "ci/wif/azure-function/test.sh",
    "chars": 753,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\n\nrun_azure_function() {\n  echo \"Running Azure Function E2E test...\"\n  \n  local url=\"${AZ"
  },
  {
    "path": "ci/wif/gcp-function/README.md",
    "chars": 264,
    "preview": "# GCP Cloud Function for WIF E2E Testing\n\n## Deployment Steps\n1. Install Google Cloud SDK.\n2. Authenticate: `gcloud auth"
  },
  {
    "path": "ci/wif/gcp-function/pom.xml",
    "chars": 5320,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
  },
  {
    "path": "ci/wif/gcp-function/src/main/java/com/snowflake/wif/gcp/WifGcpFunctionE2e.java",
    "chars": 6433,
    "preview": "package com.snowflake.wif.gcp;\n\nimport com.google.cloud.functions.HttpFunction;\nimport com.google.cloud.functions.HttpRe"
  },
  {
    "path": "ci/wif/gcp-function/test.sh",
    "chars": 2361,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\n\ngenerate_gcp_jwt() {\n  # For ID token request, aud should be Google's token endpoint, t"
  },
  {
    "path": "ci/wif/parameters/rsa_wif_aws_azure.gpg",
    "chars": 209,
    "preview": "\r\u0004\t\u0003\b髃6K\u00015%܇ټ飐\u000f|eRk]n\u000fc-TloB,\u0011ܐ͒R7B]<ER-|\u00044u'K2<\u0013:BC&fԳeX%i9\u00060@LG\u0011$a\u0004hOnTejB@\u001a)~Nto&\u0003Ȍ\u0012\u0013ru/i\u001cuq%0\u0012!]ݮ2-lw\u0018`!ʚgF߬\u0019i\u0010DDĘX"
  },
  {
    "path": "ci/wif/parameters/rsa_wif_gcp.gpg",
    "chars": 209,
    "preview": "\r\u0004\t\u0003\b髃6K\u00015%܇ټ飐\u000f|eRk]n\u000fc-TloB,\u0011ܐ͒R7B]<ER-|\u00044u'K2<\u0013:BC&fԳeX%i9\u00060@LG\u0011$a\u0004hOnTejB@\u001a)~Nto&\u0003Ȍ\u0012\u0013ru/i\u001cuq%0\u0012!]ݮ2-lw\u0018`!ʚgF߬\u0019i\u0010DDĘX"
  },
  {
    "path": "ci/wif/shared/com/snowflake/wif/common/WifTestHelper.java",
    "chars": 20637,
    "preview": "package com.snowflake.wif.common;\n\nimport java.io.BufferedReader;\nimport java.io.File;\nimport java.io.FileOutputStream;\n"
  },
  {
    "path": "ci/wif/test_wif.sh",
    "chars": 630,
    "preview": "#!/bin/bash -e\n\nset -o pipefail\n\nexport SF_ENABLE_EXPERIMENTAL_AUTHENTICATION=true\n\n./mvnw -Dmaven.repo.local=/tmp/maven"
  },
  {
    "path": "codecov/codecov.SHA256SUM",
    "chars": 73,
    "preview": "0c9b79119b0d8dbe7aaf460dc3bd7c3094ceda06e5ae32b0d11a8ff56e2cc5c5  codecov"
  },
  {
    "path": "codecov/codecov.SHA256SUM.sig",
    "chars": 833,
    "preview": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEJwNOf9uFDgu8LGL/gGuyiu13mGkFAmSRyEgACgkQgGuyiu13\nmGnHdQ//WMx0TS7fJlgo04LC"
  },
  {
    "path": "codecov.yml",
    "chars": 45,
    "preview": "parsers:\n  jacoco:\n    partials_as_hits: true"
  },
  {
    "path": "dependencies/Readme.md",
    "chars": 157,
    "preview": "Arrow dependencies are built from internal branch `upgradeTo17.0.0-v3`. This build was applied the AIX fix and the custo"
  },
  {
    "path": "dependencies/arrow-memory-17.0.0.pom",
    "chars": 1426,
    "preview": "<?xml version=\"1.0\"?>\n<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor\n  license agre"
  },
  {
    "path": "fat-jar-test-app/pom.xml",
    "chars": 5560,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "fat-jar-test-app/run.sh",
    "chars": 2795,
    "preview": "#!/bin/bash -ex\n#\n# Test fat jar by running a sample app that connects to Snowflake\n#\nset -o pipefail\nTHIS_DIR=\"$( cd \"$"
  },
  {
    "path": "fat-jar-test-app/src/main/fips-java/net/snowflake/FipsInitializer.java",
    "chars": 4429,
    "preview": "package net.snowflake;\n\nimport java.security.Provider;\nimport java.security.Security;\nimport java.util.Arrays;\nimport ja"
  },
  {
    "path": "fat-jar-test-app/src/main/java/net/snowflake/FatJarTestApp.java",
    "chars": 6364,
    "preview": "package net.snowflake;\n\nimport java.io.File;\nimport java.io.InputStream;\nimport java.net.URISyntaxException;\nimport java"
  },
  {
    "path": "fat-jar-test-app/src/main/resources/logback.xml",
    "chars": 644,
    "preview": "<configuration>\n    <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <encoder>\n            <"
  },
  {
    "path": "fat-jar-test-app/src/main/resources/logging.properties",
    "chars": 234,
    "preview": "handlers = java.util.logging.FileHandler\n.level = FINE\n\njava.util.logging.FileHandler.pattern = %t/fat-jar-test.log\njava"
  },
  {
    "path": "fat-jar-test-app/src/main/resources/test.csv",
    "chars": 11,
    "preview": "abc,1\ndef,2"
  },
  {
    "path": "linkage-checker-exclusion-rules.xml",
    "chars": 7979,
    "preview": "<LinkageCheckerFilter>\n    <LinkageError>\n        <Target><Package name=\"org.graalvm.nativeimage\"/></Target>\n        <So"
  },
  {
    "path": "mvnw",
    "chars": 11289,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "mvnw.cmd",
    "chars": 7796,
    "preview": "@REM ----------------------------------------------------------------------------\r\n@REM Licensed to the Apache Software "
  },
  {
    "path": "output.json",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "parent-pom.xml",
    "chars": 35788,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "pom.xml",
    "chars": 68006,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "prepareNewVersion.sh",
    "chars": 600,
    "preview": "#!/bin/bash -e\n\nif [[ -z \"$1\" ]]; then\n    echo First argument must be new version to set\n    exit 1\nfi\n\nversion=$1\nvers"
  },
  {
    "path": "prober/Dockerfile",
    "chars": 3537,
    "preview": "FROM ubuntu:25.10\n\n# boilerplate labels required by validation when pushing to ACR, ECR & GCR\nLABEL org.opencontainers.i"
  },
  {
    "path": "prober/Jenkinsfile.groovy",
    "chars": 1909,
    "preview": "pipeline {\n    agent { label 'regular-memory-node' }\n\n    options {\n        ansiColor('xterm')\n        timestamps()\n    "
  },
  {
    "path": "prober/entrypoint.sh",
    "chars": 1337,
    "preview": "#!/bin/bash\n\n# Exit immediately if a command exits with a non-zero status\nset -e\n\nJAVA_VERSION_ID=\"\"\nJDBC_VERSION=\"\"\n\nif"
  },
  {
    "path": "prober/src/main/java/com/snowflake/client/jdbc/prober/Prober.java",
    "chars": 17407,
    "preview": "package com.snowflake.client.jdbc.prober;\n\nimport net.snowflake.client.api.connection.SnowflakeConnection;\n\nimport java."
  },
  {
    "path": "public_pom.xml",
    "chars": 1724,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLoc"
  },
  {
    "path": "settings.json",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/main/java/net/snowflake/client/api/auth/AuthenticatorType.java",
    "chars": 1676,
    "preview": "package net.snowflake.client.api.auth;\n\n/**\n * Enumeration of authentication methods supported by the Snowflake JDBC dri"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/connection/DownloadStreamConfig.java",
    "chars": 3089,
    "preview": "package net.snowflake.client.api.connection;\n\n/**\n * Optional configuration for downloading files from a Snowflake stage"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/connection/SnowflakeConnection.java",
    "chars": 6245,
    "preview": "package net.snowflake.client.api.connection;\n\nimport java.io.InputStream;\nimport java.sql.ResultSet;\nimport java.sql.SQL"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/connection/SnowflakeDatabaseMetaData.java",
    "chars": 2790,
    "preview": "package net.snowflake.client.api.connection;\n\nimport java.sql.DatabaseMetaData;\nimport java.sql.ResultSet;\nimport java.s"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/connection/UploadStreamConfig.java",
    "chars": 4526,
    "preview": "package net.snowflake.client.api.connection;\n\n/**\n * Optional configuration for uploading data to a Snowflake stage from"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/datasource/SnowflakeDataSource.java",
    "chars": 6085,
    "preview": "package net.snowflake.client.api.datasource;\n\nimport java.security.PrivateKey;\nimport java.util.List;\nimport java.util.P"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/datasource/SnowflakeDataSourceFactory.java",
    "chars": 1509,
    "preview": "package net.snowflake.client.api.datasource;\n\nimport net.snowflake.client.internal.api.implementation.datasource.Snowfla"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/driver/SnowflakeDriver.java",
    "chars": 4962,
    "preview": "package net.snowflake.client.api.driver;\n\nimport java.sql.Connection;\nimport java.sql.Driver;\nimport java.sql.DriverMana"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/exception/ErrorCode.java",
    "chars": 6385,
    "preview": "package net.snowflake.client.api.exception;\n\nimport net.snowflake.common.core.SqlState;\n\n/** Internal JDBC driver error "
  },
  {
    "path": "src/main/java/net/snowflake/client/api/exception/SnowflakeSQLException.java",
    "chars": 5058,
    "preview": "package net.snowflake.client.api.exception;\n\nimport java.sql.SQLException;\nimport net.snowflake.client.internal.core.SFE"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/http/HttpHeadersCustomizer.java",
    "chars": 1645,
    "preview": "package net.snowflake.client.api.http;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Allows programmatic customi"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/loader/LoadResultListener.java",
    "chars": 2176,
    "preview": "package net.snowflake.client.api.loader;\n\n/** Callback API for processing errors and statistics of upload operation */\np"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/loader/Loader.java",
    "chars": 2615,
    "preview": "package net.snowflake.client.api.loader;\n\n/**\n * Bulk loader for Snowflake.\n *\n * <p>This interface extends {@link AutoC"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/loader/LoaderFactory.java",
    "chars": 427,
    "preview": "package net.snowflake.client.api.loader;\n\nimport java.sql.Connection;\nimport java.util.Map;\nimport net.snowflake.client."
  },
  {
    "path": "src/main/java/net/snowflake/client/api/loader/LoaderProperty.java",
    "chars": 2611,
    "preview": "package net.snowflake.client.api.loader;\n\n/** Configuration parameters for Loader */\npublic enum LoaderProperty {\n  tabl"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/loader/LoadingError.java",
    "chars": 5132,
    "preview": "package net.snowflake.client.api.loader;\n\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.Hash"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/loader/Operation.java",
    "chars": 627,
    "preview": "package net.snowflake.client.api.loader;\n\n/**\n * Operations supported by the Snowflake Loader API.\n *\n * <p>These operat"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/pooling/SnowflakeConnectionPoolDataSource.java",
    "chars": 451,
    "preview": "package net.snowflake.client.api.pooling;\n\nimport javax.sql.ConnectionPoolDataSource;\nimport net.snowflake.client.api.da"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/pooling/SnowflakeConnectionPoolDataSourceFactory.java",
    "chars": 1434,
    "preview": "package net.snowflake.client.api.pooling;\n\nimport net.snowflake.client.internal.api.implementation.pooling.SnowflakeConn"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/FieldMetadata.java",
    "chars": 1615,
    "preview": "package net.snowflake.client.api.resultset;\n\nimport java.util.List;\n\n/**\n * Metadata describing a field in a structured "
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/QueryStatus.java",
    "chars": 8847,
    "preview": "package net.snowflake.client.api.resultset;\n\nimport java.util.Arrays;\n\n/**\n * Represents detailed status information for"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/SnowflakeAsyncResultSet.java",
    "chars": 750,
    "preview": "package net.snowflake.client.api.resultset;\n\nimport java.sql.SQLException;\n\n/** This interface defines Snowflake specifi"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/SnowflakeResultSet.java",
    "chars": 2993,
    "preview": "package net.snowflake.client.api.resultset;\n\nimport java.sql.SQLException;\nimport java.util.List;\nimport java.util.Map;\n"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/SnowflakeResultSetMetaData.java",
    "chars": 1022,
    "preview": "package net.snowflake.client.api.resultset;\n\nimport java.sql.SQLException;\nimport java.util.List;\n\npublic interface Snow"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/SnowflakeResultSetSerializable.java",
    "chars": 2955,
    "preview": "package net.snowflake.client.api.resultset;\n\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.P"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/resultset/SnowflakeType.java",
    "chars": 3296,
    "preview": "package net.snowflake.client.api.resultset;\n\n/**\n * Enumeration of Snowflake data types.\n *\n * <p>This enum represents t"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/statement/SnowflakePreparedStatement.java",
    "chars": 1197,
    "preview": "package net.snowflake.client.api.statement;\n\nimport java.math.BigInteger;\nimport java.sql.ResultSet;\nimport java.sql.SQL"
  },
  {
    "path": "src/main/java/net/snowflake/client/api/statement/SnowflakeStatement.java",
    "chars": 1608,
    "preview": "package net.snowflake.client.api.statement;\n\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.L"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/connection/SnowflakeConnectionImpl.java",
    "chars": 39297,
    "preview": "package net.snowflake.client.internal.api.implementation.connection;\n\nimport static net.snowflake.client.api.exception.E"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/datasource/SnowflakeBasicDataSource.java",
    "chars": 15782,
    "preview": "package net.snowflake.client.internal.api.implementation.datasource;\n\nimport static net.snowflake.client.internal.jdbc.S"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/metadata/SnowflakeDatabaseMetaDataImpl.java",
    "chars": 137544,
    "preview": "package net.snowflake.client.internal.api.implementation.metadata;\n\nimport static net.snowflake.client.internal.jdbc.DBM"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/pooling/LogicalConnection.java",
    "chars": 17657,
    "preview": "package net.snowflake.client.internal.api.implementation.pooling;\n\nimport java.sql.Array;\nimport java.sql.Blob;\nimport j"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/pooling/SnowflakeConnectionPoolDataSourceImpl.java",
    "chars": 891,
    "preview": "package net.snowflake.client.internal.api.implementation.pooling;\n\nimport java.sql.Connection;\nimport java.sql.SQLExcept"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/pooling/SnowflakePooledConnection.java",
    "chars": 3289,
    "preview": "package net.snowflake.client.internal.api.implementation.pooling;\n\nimport java.sql.Connection;\nimport java.sql.SQLExcept"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/resultset/FieldMetadataImpl.java",
    "chars": 2660,
    "preview": "package net.snowflake.client.internal.api.implementation.resultset;\n\nimport java.util.ArrayList;\nimport java.util.List;\n"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/resultset/SnowflakeBaseResultSet.java",
    "chars": 65916,
    "preview": "package net.snowflake.client.internal.api.implementation.resultset;\n\nimport static net.snowflake.client.internal.jdbc.Sn"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/statement/SnowflakeCallableStatementImpl.java",
    "chars": 27677,
    "preview": "package net.snowflake.client.internal.api.implementation.statement;\n\nimport static net.snowflake.client.internal.jdbc.te"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/statement/SnowflakePreparedStatementImpl.java",
    "chars": 46678,
    "preview": "package net.snowflake.client.internal.api.implementation.statement;\n\nimport static net.snowflake.client.internal.jdbc.te"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/api/implementation/statement/SnowflakeStatementImpl.java",
    "chars": 44058,
    "preview": "package net.snowflake.client.internal.api.implementation.statement;\n\nimport static net.snowflake.client.api.exception.Er"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/common/core/SFBinary.java",
    "chars": 7162,
    "preview": "package net.snowflake.client.internal.common.core;\n\nimport java.util.Arrays;\nimport java.util.Objects;\nimport org.apache"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/common/core/SFBinaryFormat.java",
    "chars": 4395,
    "preview": "package net.snowflake.client.internal.common.core;\n\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java."
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/config/ConnectionParameters.java",
    "chars": 398,
    "preview": "package net.snowflake.client.internal.config;\n\nimport java.util.Properties;\n\npublic class ConnectionParameters {\n  priva"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/config/SFClientConfig.java",
    "chars": 3142,
    "preview": "package net.snowflake.client.internal.config;\n\nimport com.fasterxml.jackson.annotation.JsonAnySetter;\nimport com.fasterx"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/config/SFClientConfigParser.java",
    "chars": 7949,
    "preview": "package net.snowflake.client.internal.config;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.systemGetE"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/config/SFConnectionConfigParser.java",
    "chars": 14354,
    "preview": "package net.snowflake.client.internal.config;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.convertSys"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/ArrowSqlInput.java",
    "chars": 9890,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.mapSFExcepti"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/AssertUtil.java",
    "chars": 662,
    "preview": "package net.snowflake.client.internal.core;\n\nimport net.snowflake.client.api.exception.ErrorCode;\n\npublic class AssertUt"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/AttributeEnhancingHttpRequestRetryHandler.java",
    "chars": 1137,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.io.IOException;\nimport org.apache.http.impl.client.DefaultHttpR"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/BaseSqlInput.java",
    "chars": 6246,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.mapSFExcepti"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/BasicEvent.java",
    "chars": 1976,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.systemGetPro"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/CachedCredentialType.java",
    "chars": 503,
    "preview": "package net.snowflake.client.internal.core;\n\nenum CachedCredentialType {\n  ID_TOKEN(\"ID_TOKEN\"),\n  MFA_TOKEN(\"MFATOKEN\")"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/CancellationReason.java",
    "chars": 121,
    "preview": "package net.snowflake.client.internal.core;\n\npublic enum CancellationReason {\n  UNKNOWN,\n  CLIENT_REQUESTED,\n  TIMEOUT\n}"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/ChunkDownloader.java",
    "chars": 1049,
    "preview": "package net.snowflake.client.internal.core;\n\nimport net.snowflake.client.api.exception.SnowflakeSQLException;\nimport net"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/ColumnTypeHelper.java",
    "chars": 779,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.sql.Types;\nimport net.snowflake.client.api.resultset.SnowflakeT"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/Constants.java",
    "chars": 3665,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.systemGetPro"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/CredentialManager.java",
    "chars": 15689,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.isNullOrEmpt"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/DataConversionContext.java",
    "chars": 1488,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.util.TimeZone;\nimport net.snowflake.client.internal.common.core"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/DefaultFileCacheManager.java",
    "chars": 7255,
    "preview": "package net.snowflake.client.internal.core;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackso"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/DownloaderMetrics.java",
    "chars": 875,
    "preview": "package net.snowflake.client.internal.core;\n\n/** Metrics related to chunk downloader performance */\npublic class Downloa"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/Event.java",
    "chars": 3320,
    "preview": "package net.snowflake.client.internal.core;\n\nimport com.google.common.base.Preconditions;\nimport java.io.File;\nimport ja"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/EventHandler.java",
    "chars": 13736,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.systemGetPro"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/EventUtil.java",
    "chars": 2840,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.systemGetPro"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/FieldSchemaCreator.java",
    "chars": 4689,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.sql.SQLException;\nimport java.sql.Types;\nimport java.util.Optio"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/FileCacheManager.java",
    "chars": 395,
    "preview": "package net.snowflake.client.internal.core;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport java.io.File;\nimport"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/FileCacheManagerBuilder.java",
    "chars": 5264,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.isWindows;\ni"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/FileCacheUtil.java",
    "chars": 1599,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.core.FileUtil.isWritable;\nimpor"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/FileTypeDetector.java",
    "chars": 417,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.io.IOException;\nimport java.nio.file.Path;\nimport org.apache.ti"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/FileUtil.java",
    "chars": 8104,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.isNullOrEmpt"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HeaderCustomizerHttpRequestInterceptor.java",
    "chars": 7624,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Ha"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HeartbeatIntervalSelector.java",
    "chars": 2529,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.util.Set;\n\n/**\n * Selects the best existing heartbeat interval "
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HeartbeatRegistry.java",
    "chars": 14489,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.telemetry.InternalApiTelem"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HeartbeatThread.java",
    "chars": 9054,
    "preview": "package net.snowflake.client.internal.core;\n\nimport com.google.common.annotations.VisibleForTesting;\nimport java.time.Cl"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpClientSettingsKey.java",
    "chars": 7707,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.isNullOrEmpt"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpExecutingContext.java",
    "chars": 8263,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.util.concurrent.atomic.AtomicBoolean;\nimport net.snowflake.clie"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpExecutingContextBuilder.java",
    "chars": 9525,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.util.concurrent.atomic.AtomicBoolean;\n\n/**\n * Builder class for"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpProtocol.java",
    "chars": 258,
    "preview": "package net.snowflake.client.internal.core;\n\npublic enum HttpProtocol {\n  HTTP(\"http\"),\n\n  HTTPS(\"https\");\n\n  private fi"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpResponseContextDto.java",
    "chars": 1392,
    "preview": "package net.snowflake.client.internal.core;\n\nimport org.apache.http.client.methods.CloseableHttpResponse;\n\npublic class "
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpResponseWithHeaders.java",
    "chars": 1125,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.util.Collections;\nimport java.util.Map;\n\n/**\n * Simple containe"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/HttpUtil.java",
    "chars": 60349,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.jdbc.SnowflakeUtil.isNullOrEmpt"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/JsonSqlInput.java",
    "chars": 12817,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.core.SFBaseResultSet.OBJECT_MAP"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/JsonSqlOutput.java",
    "chars": 14120,
    "preview": "package net.snowflake.client.internal.core;\n\nimport static net.snowflake.client.internal.core.FieldSchemaCreator.buildSc"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/MetaDataOfBinds.java",
    "chars": 1340,
    "preview": "package net.snowflake.client.internal.core;\n\nimport java.io.Serializable;\n\n/**\n * Class that creates constructor used fo"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/NoOpFileCacheManager.java",
    "chars": 1148,
    "preview": "package net.snowflake.client.internal.core;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport java.io.File;\nimport"
  },
  {
    "path": "src/main/java/net/snowflake/client/internal/core/OCSPMode.java",
    "chars": 952,
    "preview": "package net.snowflake.client.internal.core;\n\n/** OCSP mode */\npublic enum OCSPMode {\n  /**\n   * Fail closed, aka. hard f"
  }
]

// ... and 842 more files (download for full content)

About this extraction

This page contains the full source code of the snowflakedb/snowflake-jdbc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1042 files (87.1 MB), approximately 1.8M tokens, and a symbol index with 9696 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.

Copied to clipboard!