Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
186e8ab
CI config changes (version, test triggers) + .props
okramarenko Mar 30, 2026
cc2a684
update .csproj files
okramarenko Mar 31, 2026
e34c6e8
update SingleStoreConnector.Authentication.Ed25519
okramarenko Mar 31, 2026
af4cb81
grab block of updates for Authentication, ColumnReaders and Core folders
okramarenko Mar 31, 2026
b9968b9
grab another block of changes
okramarenko Apr 1, 2026
4fcc208
grab Protocol changes
okramarenko Apr 2, 2026
af6dd57
grab the last block of changes for the connector
okramarenko Apr 2, 2026
c75f384
grab first block of changes for the tests
okramarenko Apr 2, 2026
b357581
grab the last block of changes for tests
okramarenko Apr 3, 2026
dfb6ad7
make it build
okramarenko Apr 6, 2026
18c172b
fix dotnet version in CI
okramarenko Apr 6, 2026
77d5340
update config.yml
okramarenko Apr 6, 2026
5ef8f81
update Directory.Build.props
okramarenko Apr 6, 2026
45e9cbd
fix typo
okramarenko Apr 6, 2026
a007803
fix SingleStoreConnector.Tests and resolve Vector fixture creation
okramarenko Apr 6, 2026
501f031
get rid of the specific MySQL protocol mechanism (COM_STMT_SEND_LONG_…
okramarenko Apr 22, 2026
78aee2e
resolve issue with log4net package
okramarenko Apr 22, 2026
85899ab
minor fixes
okramarenko Apr 23, 2026
7c55285
implement bulk loading tests for Geography types
okramarenko Apr 24, 2026
712308a
get rid of Vector type support (need to reimplement it)
okramarenko Apr 24, 2026
082c9a4
resolve small issues
okramarenko Apr 24, 2026
ceef53a
regenerate docs
okramarenko May 12, 2026
8780d13
update version and release notes
okramarenko May 12, 2026
9842511
Make EnableResultSetHeaderEvent opt in
okramarenko May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/SideBySide/config-ssl.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Data": {
"ConnectionString": "server=SINGLESTORE_HOST;user id=SQL_USER_NAME;password=SQL_USER_PASSWORD;port=3306;database=singlestoretest;sslmode=Required;certificate file=../../../../.ci/server/certs/ssl-client.pfx;",
"UnsupportedFeatures": "CachingSha2Password,Ed25519,QueryAttributes,Tls11,Tls13,UuidToBin,UnixDomainSocket,Sha256Password,GlobalLog,Redirection,CancelSleepSuccessfully,TlsFingerprintValidation",
"UnsupportedFeatures": "CachingSha2Password,Ed25519,QueryAttributes,Tls11,Tls13,UuidToBin,UnixDomainSocket,Sha256Password,GlobalLog,Redirection,CancelSleepSuccessfully,TlsFingerprintValidation,Vector",
"CertificatesPath": "../../../../.ci/server/certs"
}
}
4 changes: 2 additions & 2 deletions .github/workflows/SideBySide/config.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Data": {
"ConnectionString": "server=SINGLESTORE_HOST;user id=SQL_USER_NAME;password=SQL_USER_PASSWORD;port=3306;database=singlestoretest;sslmode=None",
"UnsupportedFeatures": "CachingSha2Password,Ed25519,QueryAttributes,Tls11,Tls13,UuidToBin,UnixDomainSocket,Sha256Password,GlobalLog,Redirection,CancelSleepSuccessfully,TlsFingerprintValidation",
"ConnectionString": "server=SINGLESTORE_HOST;user id=SQL_USER_NAME;password=SQL_USER_PASSWORD;port=3306;database=singlestoretest;sslmode=disabled;",
"UnsupportedFeatures": "CachingSha2Password,Ed25519,QueryAttributes,Tls11,Tls13,UuidToBin,UnixDomainSocket,Sha256Password,GlobalLog,Redirection,CancelSleepSuccessfully,TlsFingerprintValidation,ParsecAuthentication,Vector",
"ManagedService": true
}
}
41 changes: 24 additions & 17 deletions .github/workflows/config.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
name: SingleStore .NET Connector

on: [push]
on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches: [main]
tags:
- 'v*'
workflow_call:
workflow_dispatch:

env:
DOTNET_VERSION: 9.0.303
TARGET_FRAMEWORK: net9.0
CONNECTOR_VERSION: 1.3.0
DOTNET_VERSION: 10.0.x
TARGET_FRAMEWORK: net10.0
CONNECTOR_VERSION: 1.4.0
LICENSE_KEY: ${{ secrets.LICENSE_KEY }}
SQL_USER_PASSWORD: ${{ secrets.SQL_USER_PASSWORD }}
S2MS_API_KEY: ${{ secrets.S2MS_API_KEY }}
Expand Down Expand Up @@ -51,13 +59,13 @@ jobs:

test-ubuntu:
name: ${{ matrix.name }}
runs-on: ubuntu-22.04
needs: build-matrix
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Remove unnecessary pre-installed toolchains for free disk spaces
run: |
Expand All @@ -77,18 +85,16 @@ jobs:
df -h

- name: Set up .NET
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y mariadb-client-core-10.6
sudo apt-get install -y mariadb-client-10.6
sudo apt-get install -y mariadb-client-core
sudo apt-get install -y mariadb-client
sudo apt-get update
sudo apt-get install -y dotnet-sdk-9.0
dotnet --info

- name: Start SingleStore Cluster
Expand Down Expand Up @@ -138,18 +144,19 @@ jobs:
dotnet test -f ${{ env.TARGET_FRAMEWORK }} -c Release --no-build
cd ../../


test-windows:
runs-on: windows-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install Python dependencies
run: pip install singlestoredb

- name: Install .NET
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

Expand All @@ -161,7 +168,7 @@ jobs:

- name: Fill test config
run: python .github\workflows\fill_test_config.py

- name: Export full connection string
shell: bash
run: echo "CONNECTION_STRING=$(< $HOME/CONNECTION_STRING)" >> $GITHUB_ENV
Expand Down Expand Up @@ -189,10 +196,10 @@ jobs:
if: startsWith(github.ref, 'refs/tags/')
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install .NET
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

Expand All @@ -206,7 +213,7 @@ jobs:
run: dotnet pack -c Release --output net_connector -p:PackageVersion=${{ env.CONNECTOR_VERSION }}

- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: net_connector
path: net_connector/
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/fill_test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import os
from s2ms_cluster import WORKSPACE_ENDPOINT_FILE

NET_FRAMEWORKS = ["net462", "net472", "net6.0", "net7.0", "net8.0", "net9.0"]
NET_FRAMEWORKS = ["net462", "net472", "net6.0", "net7.0", "net8.0", "net10.0"]


if __name__ == "__main__":
Expand Down
8 changes: 5 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<LangVersion>preview</LangVersion>
<LangVersion>14.0</LangVersion>
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
<NoWarn>$(NoWarn);1591;CA1708;CA1835;CA2215;CA5397;NU5105;SYSLIB0039</NoWarn>

<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);15731591;CA1708;CA1835;CA2215;CA5397;NU5105;SYSLIB0039</NoWarn>
Comment thread
cursor[bot] marked this conversation as resolved.
Outdated

<ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
<NuGetAudit>true</NuGetAudit>
<NuGetAuditLevel>low</NuGetAuditLevel>
<NuGetAuditMode>all</NuGetAuditMode>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
Expand Down
13 changes: 7 additions & 6 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,28 @@
<PackageVersion Include="Dapper.StrongName" Version="2.1.35" />
<PackageVersion Include="IndexRange" Version="1.0.3" />
<PackageVersion Include="log4net" Version="2.0.17" />
<PackageVersion Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.16" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageVersion Include="MySql.Data" Version="9.1.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageVersion Include="MySql.Data" Version="9.5.0" />
<PackageVersion Include="NLog" Version="4.7.15" />
<PackageVersion Include="Serilog" Version="2.12.0" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="8.0.1" />
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
<PackageVersion Include="System.Text.Json" Version="9.0.1" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
<PackageVersion Include="xunit" Version="2.9.2" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
<PackageVersion Include="YamlDotNet" Version="16.1.3" />
<PackageVersion Include="YamlDotNet" Version="16.3.0" />
</ItemGroup>

<ItemGroup>
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<GlobalPackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
MIT License

Copyright (c) 2016-2021 Bradley Grainger
Copyright (c) 2022-2025 SingleStore, Inc.
Copyright (c) 2022-2026 SingleStore, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
17 changes: 17 additions & 0 deletions SingleStoreConnector.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Solution>
<Folder Name="/tools/">
<Project Path="tools/SchemaCollectionGenerator/SchemaCollectionGenerator.csproj" />
</Folder>
<Project Path="src/SingleStoreConnector.Authentication.Ed25519/SingleStoreConnector.Authentication.Ed25519.csproj" />
<Project Path="src/SingleStoreConnector.DependencyInjection/SingleStoreConnector.DependencyInjection.csproj" />
<Project Path="src/SingleStoreConnector.Logging.log4net/SingleStoreConnector.Logging.log4net.csproj" />
<Project Path="src/SingleStoreConnector.Logging.Microsoft.Extensions.Logging/SingleStoreConnector.Logging.Microsoft.Extensions.Logging.csproj" />
<Project Path="src/SingleStoreConnector.Logging.NLog/SingleStoreConnector.Logging.NLog.csproj" />
<Project Path="src/SingleStoreConnector.Logging.Serilog/SingleStoreConnector.Logging.Serilog.csproj" />
<Project Path="src/SingleStoreConnector/SingleStoreConnector.csproj" />
<Project Path="tests/Conformance.Tests/Conformance.Tests.csproj" />
<Project Path="tests/SideBySide/SideBySide.csproj" />
<Project Path="tests/SingleStoreConnector.DependencyInjection.Tests/SingleStoreConnector.DependencyInjection.Tests.csproj" />
<Project Path="tests/SingleStoreConnector.NativeAot.Tests/SingleStoreConnector.NativeAot.Tests.csproj" />
<Project Path="tests/SingleStoreConnector.Tests/SingleStoreConnector.Tests.csproj" />
</Solution>
96 changes: 0 additions & 96 deletions SingleStoreNETConnector.sln

This file was deleted.

7 changes: 0 additions & 7 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,6 @@
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="StyleCop.Analyzers">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<None Include="..\..\docs\static\img\singlestore_logo.png" Pack="true" PackagePath="\" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using System;
using System.Runtime.CompilerServices;

namespace Chaos.NaCl
{
internal static class CryptoBytes
{
public static void Wipe(byte[] data)
{
if (data == null)
throw new ArgumentNullException("data");
InternalWipe(data, 0, data.Length);
}

// Secure wiping is hard
// * the GC can move around and copy memory
// Perhaps this can be avoided by using unmanaged memory or by fixing the position of the array in memory
// * Swap files and error dumps can contain secret information
// It seems possible to lock memory in RAM, no idea about error dumps
// * Compiler could optimize out the wiping if it knows that data won't be read back
// I hope this is enough, suppressing inlining
// but perhaps `RtlSecureZeroMemory` is needed
[MethodImpl(MethodImplOptions.NoInlining)]
internal static void InternalWipe(byte[] data, int offset, int count)
{
Array.Clear(data, offset, count);
}

// shallow wipe of structs
[MethodImpl(MethodImplOptions.NoInlining)]
internal static void InternalWipe<T>(ref T data)
where T : struct
{
data = default(T);
}
}
}
Loading
Loading