diff --git a/.github/workflows/legacy-tests.yml b/.github/workflows/legacy-tests.yml index 6f99931d..ec1665dd 100644 --- a/.github/workflows/legacy-tests.yml +++ b/.github/workflows/legacy-tests.yml @@ -70,8 +70,11 @@ jobs: timeout_minutes: 7 shell: pwsh command: | - $mysqlJob = Start-Job -ScriptBlock { - choco install mysql --no-progress --version=8.4.6 -y --params "/serviceName:MySQL" + $mysqlJob = Start-Job -ScriptBlock { + # choco has no working 8.4.x mysql package (8.4.6's zip was pulled from cdn.mysql.com, + # no 8.4.7+ package exists), so we track the latest available. If this 404s again, + # switch to a dedicated setup action (shogo82148/actions-setup-mysql) for version pinning. + choco install mysql --no-progress --version=9.6.0 -y --params "/serviceName:MySQL" return $LASTEXITCODE } @@ -114,4 +117,4 @@ jobs: run: | $path = vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop Microsoft.VisualStudio.Workload.Web -requiresAny -property installationPath $path = join-path $path 'Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe' - & $path ./end2end/EndToEndTestsLegacy/bin/Release/net472/EndToEndTestsLegacy.dll \ No newline at end of file + & $path ./end2end/EndToEndTestsLegacy/bin/Release/net472/EndToEndTestsLegacy.dll diff --git a/Drivers/DbDriver.cs b/Drivers/DbDriver.cs index b111eaea..c02f116c 100644 --- a/Drivers/DbDriver.cs +++ b/Drivers/DbDriver.cs @@ -1,5 +1,6 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using Plugin; +using SqlcGenCsharp.Drivers.Generators; using System; using System.Collections.Generic; using System.Linq; @@ -42,6 +43,8 @@ public abstract class DbDriver public Options Options { get; } + public CancellationGen Cancellation => new(Options.WithCancellationToken); + public string DefaultSchema { get; } public abstract string TransactionClassName { get; } @@ -296,7 +299,7 @@ public virtual string[] GetLastIdStatement(Query query) var convertFuncCall = convertFunc(Variable.Result.AsVarName()); return [ - $"var {Variable.Result.AsVarName()} = await {Variable.Command.AsVarName()}.ExecuteScalarAsync();", + $"var {Variable.Result.AsVarName()} = await {Variable.Command.AsVarName()}.ExecuteScalarAsync({Cancellation.Argument()});", $"return {convertFuncCall};" ]; } diff --git a/Drivers/Generators/CancellationGen.cs b/Drivers/Generators/CancellationGen.cs new file mode 100644 index 00000000..e6dea96d --- /dev/null +++ b/Drivers/Generators/CancellationGen.cs @@ -0,0 +1,38 @@ +namespace SqlcGenCsharp.Drivers.Generators; + +// Owns every way an optional CancellationToken shows up in generated code. +// When disabled, every fragment is empty / a pass-through, so output is unchanged. +public class CancellationGen(bool enabled) +{ + private static string TokenName => Variable.CancellationToken.AsVarName(); + + // Trailing optional parameter for a generated method signature. + public string MethodParameter() + { + return enabled ? $"CancellationToken {TokenName} = default" : string.Empty; + } + + // Trailing optional parameter appended after an existing parameter list, e.g. (List args{TrailingMethodParameter()}). + public string TrailingMethodParameter() + { + return enabled ? $", CancellationToken {TokenName} = default" : string.Empty; + } + + // Sole argument for an otherwise parameterless async call, e.g. ReadAsync(Argument()). + public string Argument() + { + return enabled ? TokenName : string.Empty; + } + + // Trailing argument appended after existing call arguments, e.g. WriteAsync(value{TrailingArgument()}). + public string TrailingArgument() + { + return enabled ? $", {TokenName}" : string.Empty; + } + + // Wraps flat Dapper call arguments in a CommandDefinition carrying the token; pass-through when disabled. + public string WrapDapperArgs(string flatArgs) + { + return enabled ? $"new CommandDefinition({flatArgs}, cancellationToken: {TokenName})" : flatArgs; + } +} \ No newline at end of file diff --git a/Drivers/Generators/CommonGen.cs b/Drivers/Generators/CommonGen.cs index 7dcd9e59..5db41c1e 100644 --- a/Drivers/Generators/CommonGen.cs +++ b/Drivers/Generators/CommonGen.cs @@ -6,11 +6,13 @@ namespace SqlcGenCsharp.Drivers.Generators; public class CommonGen(DbDriver dbDriver) { - public static string GetMethodParameterList(string argInterface, IEnumerable parameters) + public static string GetMethodParameterList(string argInterface, IEnumerable parameters, + string cancellationParam = "") { - return $"{(string.IsNullOrEmpty(argInterface) || !parameters.Any() + var argsParam = string.IsNullOrEmpty(argInterface) || !parameters.Any() ? string.Empty - : $"{argInterface} {Variable.Args.AsVarName()}")}"; + : $"{argInterface} {Variable.Args.AsVarName()}"; + return string.Join(", ", new[] { argsParam, cancellationParam }.Where(s => !string.IsNullOrEmpty(s))); } public static string GetDapperArgs(Query query) @@ -52,14 +54,14 @@ public string ConstructDapperParamsDict(Query query) """; } - public static string AwaitReaderRow() + public static string AwaitReaderRow(string cancellationArg) { - return $"await {Variable.Reader.AsVarName()}.ReadAsync()"; + return $"await {Variable.Reader.AsVarName()}.ReadAsync({cancellationArg})"; } - public static string InitDataReader() + public static string InitDataReader(string cancellationArg) { - return $"var {Variable.Reader.AsVarName()} = await {Variable.Command.AsVarName()}.ExecuteReaderAsync()"; + return $"var {Variable.Reader.AsVarName()} = await {Variable.Command.AsVarName()}.ExecuteReaderAsync({cancellationArg})"; } public static string GetSqlTransformations(Query query, string queryTextConstant) diff --git a/Drivers/Generators/CopyFromDeclareGen.cs b/Drivers/Generators/CopyFromDeclareGen.cs index 19c557e7..a79ab029 100644 --- a/Drivers/Generators/CopyFromDeclareGen.cs +++ b/Drivers/Generators/CopyFromDeclareGen.cs @@ -9,7 +9,7 @@ public class CopyFromDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, Query query) { return ParseMemberDeclaration($$""" - public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}(List<{{argInterface}}> args) + public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}(List<{{argInterface}}> args{{dbDriver.Cancellation.TrailingMethodParameter()}}) { {{((ICopyFrom)dbDriver).GetCopyFromImpl(query, queryTextConstant)}} } diff --git a/Drivers/Generators/ExecDeclareGen.cs b/Drivers/Generators/ExecDeclareGen.cs index 27fa4312..8131fcf5 100644 --- a/Drivers/Generators/ExecDeclareGen.cs +++ b/Drivers/Generators/ExecDeclareGen.cs @@ -10,7 +10,7 @@ public class ExecDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, Query query) { - var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params); + var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) { @@ -46,9 +46,10 @@ private string GetDapperNoTxBody(string sqlVar, Query query) { var connectionCommands = dbDriver.EstablishConnection(query); var dapperArgs = CommonGen.GetDapperArgs(query); + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}"); return connectionCommands.GetConnectionOrDataSource.WrapBlock( $""" - await {Variable.Connection.AsVarName()}.ExecuteAsync({sqlVar}{dapperArgs}); + await {Variable.Connection.AsVarName()}.ExecuteAsync({callArgs}); return; """ ); @@ -58,6 +59,15 @@ private string GetDapperWithTxBody(string sqlVar, Query query) { var transactionProperty = Variable.Transaction.AsPropertyName(); var dapperArgs = CommonGen.GetDapperArgs(query); + if (dbDriver.Options.WithCancellationToken) + { + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}, transaction: this.{transactionProperty}"); + return $$""" + {{dbDriver.TransactionConnectionNullExcetionThrow}} + await this.{{transactionProperty}}.Connection.ExecuteAsync({{callArgs}}); + """; + } + return $$""" {{dbDriver.TransactionConnectionNullExcetionThrow}} await this.{{transactionProperty}}.Connection.ExecuteAsync( @@ -75,7 +85,7 @@ private string GetDriverNoTxBody(string sqlVar, Query query) {sqlCommands.SetCommandText.AppendSemicolonUnlessEmpty()} {dbDriver.AddParametersToCommand(query)} {sqlCommands.PrepareCommand.AppendSemicolonUnlessEmpty()} - await {Variable.Command.AsVarName()}.ExecuteNonQueryAsync(); + await {Variable.Command.AsVarName()}.ExecuteNonQueryAsync({dbDriver.Cancellation.Argument()}); """ ); return connectionCommands.GetConnectionOrDataSource.WrapBlock( @@ -99,7 +109,7 @@ private string GetDriverWithTxBody(string sqlVar, Query query) {{commandVar}}.CommandText = {{sqlVar}}; {{commandVar}}.Transaction = this.{{transactionProperty}}; {{dbDriver.AddParametersToCommand(query)}} - await {{commandVar}}.ExecuteNonQueryAsync(); + await {{commandVar}}.ExecuteNonQueryAsync({{dbDriver.Cancellation.Argument()}}); } """; } diff --git a/Drivers/Generators/ExecLastIdDeclareGen.cs b/Drivers/Generators/ExecLastIdDeclareGen.cs index 10e9d260..544f3435 100644 --- a/Drivers/Generators/ExecLastIdDeclareGen.cs +++ b/Drivers/Generators/ExecLastIdDeclareGen.cs @@ -11,7 +11,7 @@ public class ExecLastIdDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, Query query) { - var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params); + var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" public async Task<{{dbDriver.GetIdColumnType(query)}}> {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) { @@ -48,8 +48,9 @@ private string GetDapperNoTxBody(string sqlVar, Query query) var connectionCommands = dbDriver.EstablishConnection(query); var dapperArgs = CommonGen.GetDapperArgs(query); var idColumnType = dbDriver.GetIdColumnType(query); + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}"); return connectionCommands.GetConnectionOrDataSource.WrapBlock($""" - return await {Variable.Connection.AsVarName()}.QuerySingleAsync<{idColumnType}>({sqlVar}{dapperArgs}); + return await {Variable.Connection.AsVarName()}.QuerySingleAsync<{idColumnType}>({callArgs}); """); } @@ -57,9 +58,10 @@ private string GetDapperWithTxBody(string sqlVar, Query query) { var transactionProperty = Variable.Transaction.AsPropertyName(); var dapperArgs = query.Params.Any() ? $", {Variable.QueryParams.AsVarName()}" : string.Empty; + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}, transaction: this.{transactionProperty}"); return $$""" {{dbDriver.TransactionConnectionNullExcetionThrow}} - return await this.{{transactionProperty}}.Connection.QuerySingleAsync<{{dbDriver.GetIdColumnType(query)}}>({{sqlVar}}{{dapperArgs}}, transaction: this.{{transactionProperty}}); + return await this.{{transactionProperty}}.Connection.QuerySingleAsync<{{dbDriver.GetIdColumnType(query)}}>({{callArgs}}); """; } diff --git a/Drivers/Generators/ExecRowsDeclareGen.cs b/Drivers/Generators/ExecRowsDeclareGen.cs index 701c68d4..bce0e956 100644 --- a/Drivers/Generators/ExecRowsDeclareGen.cs +++ b/Drivers/Generators/ExecRowsDeclareGen.cs @@ -10,7 +10,7 @@ public class ExecRowsDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, Query query) { - var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params); + var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" public async Task {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) { @@ -46,8 +46,9 @@ private string GetDapperNoTxBody(string sqlVar, Query query) { var connectionCommands = dbDriver.EstablishConnection(query); var dapperArgs = CommonGen.GetDapperArgs(query); + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}"); return connectionCommands.GetConnectionOrDataSource.WrapBlock( - $"return await {Variable.Connection.AsVarName()}.ExecuteAsync({sqlVar}{dapperArgs});" + $"return await {Variable.Connection.AsVarName()}.ExecuteAsync({callArgs});" ); } @@ -55,6 +56,15 @@ private string GetDapperWithTxBody(string sqlVar, Query query) { var transactionProperty = Variable.Transaction.AsPropertyName(); var dapperArgs = CommonGen.GetDapperArgs(query); + if (dbDriver.Options.WithCancellationToken) + { + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}, transaction: this.{transactionProperty}"); + return $$""" + {{dbDriver.TransactionConnectionNullExcetionThrow}} + return await this.{{transactionProperty}}.Connection.ExecuteAsync({{callArgs}}); + """; + } + return $$""" {{dbDriver.TransactionConnectionNullExcetionThrow}} return await this.{{transactionProperty}}.Connection.ExecuteAsync( @@ -72,7 +82,7 @@ private string GetDriverNoTxBody(string sqlVar, Query query) {sqlCommands.SetCommandText.AppendSemicolonUnlessEmpty()} {dbDriver.AddParametersToCommand(query)} {sqlCommands.PrepareCommand.AppendSemicolonUnlessEmpty()} - return await {Variable.Command.AsVarName()}.ExecuteNonQueryAsync(); + return await {Variable.Command.AsVarName()}.ExecuteNonQueryAsync({dbDriver.Cancellation.Argument()}); """ ); return connectionCommands.GetConnectionOrDataSource.WrapBlock( @@ -95,7 +105,7 @@ private string GetDriverWithTxBody(string sqlVar, Query query) {{commandVar}}.CommandText = {{sqlVar}}; {{commandVar}}.Transaction = this.{{transactionProperty}}; {{dbDriver.AddParametersToCommand(query)}} - return await {{commandVar}}.ExecuteNonQueryAsync(); + return await {{commandVar}}.ExecuteNonQueryAsync({{dbDriver.Cancellation.Argument()}}); } """; } diff --git a/Drivers/Generators/ManyDeclareGen.cs b/Drivers/Generators/ManyDeclareGen.cs index 4371b455..53e39940 100644 --- a/Drivers/Generators/ManyDeclareGen.cs +++ b/Drivers/Generators/ManyDeclareGen.cs @@ -12,7 +12,7 @@ public class ManyDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, string returnInterface, Query query) { - var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params); + var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); var returnType = $"Task>"; return ParseMemberDeclaration($$""" public async {{returnType}} {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) @@ -52,9 +52,10 @@ private string GetDapperNoTxBody(string sqlVar, string returnInterface, Query qu var dapperArgs = CommonGen.GetDapperArgs(query); var returnType = dbDriver.AddNullableSuffixIfNeeded(returnInterface, true); var resultVar = Variable.Result.AsVarName(); + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}"); return connectionCommands.GetConnectionOrDataSource.WrapBlock( $""" - var {resultVar} = await {Variable.Connection.AsVarName()}.QueryAsync<{returnType}>({sqlVar}{dapperArgs}); + var {resultVar} = await {Variable.Connection.AsVarName()}.QueryAsync<{returnType}>({callArgs}); return {resultVar}.AsList(); """ ); @@ -66,6 +67,15 @@ private string GetDapperWithTxBody(string sqlVar, string returnInterface, Query var dapperArgs = CommonGen.GetDapperArgs(query); var returnType = dbDriver.AddNullableSuffixIfNeeded(returnInterface, true); + if (dbDriver.Options.WithCancellationToken) + { + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}, transaction: this.{transactionProperty}"); + return $$""" + {{dbDriver.TransactionConnectionNullExcetionThrow}} + return (await this.{{transactionProperty}}.Connection.QueryAsync<{{returnType}}>({{callArgs}})).AsList(); + """; + } + return $$""" {{dbDriver.TransactionConnectionNullExcetionThrow}} return (await this.{{transactionProperty}}.Connection.QueryAsync<{{returnType}}>( @@ -80,7 +90,7 @@ private string GetDriverNoTxBody(string sqlVar, string returnInterface, Query qu var dataclassInit = CommonGen.InstantiateDataclass([.. query.Columns], returnInterface, query); var resultVar = Variable.Result.AsVarName(); var readWhileExists = $$""" - while ({{CommonGen.AwaitReaderRow()}}) + while ({{CommonGen.AwaitReaderRow(dbDriver.Cancellation.Argument())}}) {{resultVar}}.Add({{dataclassInit}}); """; var sqlCommands = dbDriver.CreateSqlCommand(sqlVar); @@ -89,7 +99,7 @@ private string GetDriverNoTxBody(string sqlVar, string returnInterface, Query qu {{sqlCommands.SetCommandText.AppendSemicolonUnlessEmpty()}} {{dbDriver.AddParametersToCommand(query)}} {{sqlCommands.PrepareCommand.AppendSemicolonUnlessEmpty()}} - using ({{CommonGen.InitDataReader()}}) + using ({{CommonGen.InitDataReader(dbDriver.Cancellation.Argument())}}) { var {{resultVar}} = new List<{{returnInterface}}>(); {{readWhileExists}} @@ -118,10 +128,10 @@ private string GetDriverWithTxBody(string sqlVar, string returnInterface, Query {{commandVar}}.CommandText = {{sqlVar}}; {{commandVar}}.Transaction = this.{{transactionProperty}}; {{dbDriver.AddParametersToCommand(query)}} - using ({{CommonGen.InitDataReader()}}) + using ({{CommonGen.InitDataReader(dbDriver.Cancellation.Argument())}}) { var {{resultVar}} = new List<{{returnInterface}}>(); - while ({{CommonGen.AwaitReaderRow()}}) + while ({{CommonGen.AwaitReaderRow(dbDriver.Cancellation.Argument())}}) {{resultVar}}.Add({{CommonGen.InstantiateDataclass([.. query.Columns], returnInterface, query)}}); return {{resultVar}}; } diff --git a/Drivers/Generators/OneDeclareGen.cs b/Drivers/Generators/OneDeclareGen.cs index 47c25b15..422dff2a 100644 --- a/Drivers/Generators/OneDeclareGen.cs +++ b/Drivers/Generators/OneDeclareGen.cs @@ -13,7 +13,7 @@ public class OneDeclareGen(DbDriver dbDriver) public MemberDeclarationSyntax Generate(string queryTextConstant, string argInterface, string returnInterface, Query query) { var returnType = $"Task<{dbDriver.AddNullableSuffixIfNeeded(returnInterface, false)}>"; - var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params); + var parametersStr = CommonGen.GetMethodParameterList(argInterface, query.Params, dbDriver.Cancellation.MethodParameter()); return ParseMemberDeclaration($$""" public async {{returnType}} {{query.Name.ToMethodName(dbDriver.Options.WithAsyncSuffix)}}({{parametersStr}}) { @@ -53,8 +53,9 @@ private string GetDapperNoTxBody(string sqlVar, string returnInterface, Query qu var returnType = dbDriver.AddNullableSuffixIfNeeded(returnInterface, false); var connectionVar = Variable.Connection.AsVarName(); var resultVar = Variable.Result.AsVarName(); + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}"); return connectionCommands.GetConnectionOrDataSource.WrapBlock($$""" - var {{resultVar}} = await {{connectionVar}}.QueryFirstOrDefaultAsync<{{returnType}}>({{sqlVar}}{{dapperArgs}}); + var {{resultVar}} = await {{connectionVar}}.QueryFirstOrDefaultAsync<{{returnType}}>({{callArgs}}); return {{resultVar}}; """); } @@ -65,6 +66,15 @@ private string GetDapperWithTxBody(string sqlVar, string returnInterface, Query var dapperArgs = CommonGen.GetDapperArgs(query); var returnType = dbDriver.AddNullableSuffixIfNeeded(returnInterface, false); + if (dbDriver.Options.WithCancellationToken) + { + var callArgs = dbDriver.Cancellation.WrapDapperArgs($"{sqlVar}{dapperArgs}, transaction: this.{transactionProperty}"); + return $$""" + {{dbDriver.TransactionConnectionNullExcetionThrow}} + return await this.{{transactionProperty}}.Connection.QueryFirstOrDefaultAsync<{{returnType}}>({{callArgs}}); + """; + } + return $$""" {{dbDriver.TransactionConnectionNullExcetionThrow}} return await this.{{transactionProperty}}.Connection.QueryFirstOrDefaultAsync<{{returnType}}>( @@ -83,9 +93,9 @@ private string GetDriverNoTxBody(string sqlVar, string returnInterface, Query qu {{sqlCommands.SetCommandText.AppendSemicolonUnlessEmpty()}} {{dbDriver.AddParametersToCommand(query)}} {{sqlCommands.PrepareCommand.AppendSemicolonUnlessEmpty()}} - using ({{CommonGen.InitDataReader()}}) + using ({{CommonGen.InitDataReader(dbDriver.Cancellation.Argument())}}) { - if ({{CommonGen.AwaitReaderRow()}}) + if ({{CommonGen.AwaitReaderRow(dbDriver.Cancellation.Argument())}}) { return {{returnDataclass}}; } @@ -116,9 +126,9 @@ private string GetDriverWithTxBody(string sqlVar, string returnInterface, Query {{commandVar}}.CommandText = {{sqlVar}}; {{commandVar}}.Transaction = this.{{transactionProperty}}; {{dbDriver.AddParametersToCommand(query)}} - using ({{CommonGen.InitDataReader()}}) + using ({{CommonGen.InitDataReader(dbDriver.Cancellation.Argument())}}) { - if ({{CommonGen.AwaitReaderRow()}}) + if ({{CommonGen.AwaitReaderRow(dbDriver.Cancellation.Argument())}}) { return {{CommonGen.InstantiateDataclass([.. query.Columns], returnInterface, query)}}; } diff --git a/Drivers/MySqlConnectorDriver.cs b/Drivers/MySqlConnectorDriver.cs index 1a4115a0..18e9fcda 100644 --- a/Drivers/MySqlConnectorDriver.cs +++ b/Drivers/MySqlConnectorDriver.cs @@ -474,7 +474,7 @@ public override ConnectionGenCommands EstablishConnection(Query query) { return new( GetConnectionOrDataSource: new( - $"var {Variable.Connection.AsVarName()} = await GetDataSource().OpenConnectionAsync()", + $"var {Variable.Connection.AsVarName()} = await GetDataSource().OpenConnectionAsync({Cancellation.Argument()})", true) // ConnectionOpen: string.Empty ); @@ -606,7 +606,7 @@ public string GetCopyFromImpl(Query query, string queryTextConstant) LineTerminator = "\n" }; {{loaderVar}}.Columns.AddRange(new List { {{loaderColumns}} }); - await {{loaderVar}}.LoadAsync(); + await {{loaderVar}}.LoadAsync({{Cancellation.Argument()}}); """; return $$""" diff --git a/Drivers/NpgsqlDriver.cs b/Drivers/NpgsqlDriver.cs index 323185fc..5e2275d4 100644 --- a/Drivers/NpgsqlDriver.cs +++ b/Drivers/NpgsqlDriver.cs @@ -540,7 +540,7 @@ public override ConnectionGenCommands EstablishConnection(Query query) { var connectionVar = Variable.Connection.AsVarName(); return new( - GetConnectionOrDataSource: new($"var {connectionVar} = await GetDataSource().OpenConnectionAsync()", true) + GetConnectionOrDataSource: new($"var {connectionVar} = await GetDataSource().OpenConnectionAsync({Cancellation.Argument()})", true) // ConnectionOpen: string.Empty ); } @@ -634,14 +634,14 @@ string GetCopyCommand() public string GetCopyFromImpl(Query query, string queryTextConstant) { var connectionCommands = EstablishConnection(query); - var beginBinaryImport = $"{Variable.Connection.AsVarName()}.BeginBinaryImportAsync({queryTextConstant}"; + var beginBinaryImport = $"{Variable.Connection.AsVarName()}.BeginBinaryImportAsync({queryTextConstant}{Cancellation.TrailingArgument()}"; var connectionVar = Variable.Connection.AsVarName(); var writerVar = Variable.Writer.AsVarName(); var commandBlock = $$""" using (var {{writerVar}} = await {{beginBinaryImport}})) { {{AddRowsToCopyCommand()}} - await {{writerVar}}.CompleteAsync(); + await {{writerVar}}.CompleteAsync({{Cancellation.Argument()}}); } """; return connectionCommands.GetConnectionOrDataSource.WrapBlock( @@ -669,14 +669,14 @@ string AddRowsToCopyCommand() var partialStmt = $"await {writerVar}.WriteAsync({paramToWrite}"; var typeOverride = GetColumnDbTypeOverride(p.Column); return typeOverride is null - ? $"{partialStmt});" - : $"{partialStmt}, {typeOverride});"; + ? $"{partialStmt}{Cancellation.TrailingArgument()});" + : $"{partialStmt}, {typeOverride}{Cancellation.TrailingArgument()});"; }) .JoinByNewLine(); return $$""" foreach (var {{rowVar}} in args) { - await {{writerVar}}.StartRowAsync(); + await {{writerVar}}.StartRowAsync({{Cancellation.Argument()}}); {{constructRowFields}} } """; diff --git a/Drivers/SqliteDriver.cs b/Drivers/SqliteDriver.cs index 092141bb..7b5c7a8e 100644 --- a/Drivers/SqliteDriver.cs +++ b/Drivers/SqliteDriver.cs @@ -261,7 +261,7 @@ public override ConnectionGenCommands EstablishConnection(Query query) $"var {Variable.Connection.AsVarName()} = new SqliteConnection({Variable.ConnectionString.AsPropertyName()})", true ), - ConnectionOpen: $"await {Variable.Connection.AsVarName()}.OpenAsync()" + ConnectionOpen: $"await {Variable.Connection.AsVarName()}.OpenAsync({Cancellation.Argument()})" ); } @@ -311,7 +311,7 @@ public string GetCopyFromImpl(Query query, string queryTextConstant) $""" {commandParameters} {createSqlCommands.PrepareCommand.AppendSemicolonUnlessEmpty()} - await {Variable.Command.AsVarName()}.ExecuteScalarAsync(); + await {Variable.Command.AsVarName()}.ExecuteScalarAsync({Cancellation.Argument()}); """ ); return connectionCommands.GetConnectionOrDataSource.WrapBlock( diff --git a/Drivers/Variable.cs b/Drivers/Variable.cs index 59ceca91..57844e82 100644 --- a/Drivers/Variable.cs +++ b/Drivers/Variable.cs @@ -9,6 +9,7 @@ public enum Variable DataSource, Connection, Command, + CancellationToken, Reader, Writer, diff --git a/PluginOptions/Options.cs b/PluginOptions/Options.cs index 65c06c58..a07b4741 100644 --- a/PluginOptions/Options.cs +++ b/PluginOptions/Options.cs @@ -24,6 +24,7 @@ public Options(GenerateRequest generateRequest) DotnetFramework = DotnetFrameworkExtensions.ParseName(rawOptions.TargetFramework); Overrides = rawOptions.Overrides ?? []; WithAsyncSuffix = rawOptions.WithAsyncSuffix; + WithCancellationToken = rawOptions.WithCancellationToken; UseCentralPackageManagement = rawOptions.UseCentralPackageManagement; if (rawOptions.DebugRequest && generateRequest.Settings.Codegen.Wasm is not null) @@ -57,6 +58,11 @@ public Options(GenerateRequest generateRequest) public bool WithAsyncSuffix { get; } + /// + /// When true, generated methods take an optional CancellationToken threaded into every async DB call. + /// + public bool WithCancellationToken { get; } + private static readonly Dictionary EngineToDriverMapping = new() { { "mysql", DriverName.MySqlConnector }, diff --git a/PluginOptions/RawOptions.cs b/PluginOptions/RawOptions.cs index 7697dbce..29742e6c 100644 --- a/PluginOptions/RawOptions.cs +++ b/PluginOptions/RawOptions.cs @@ -34,6 +34,9 @@ public record RawOptions [JsonPropertyName("withAsyncSuffix")] public bool WithAsyncSuffix { get; init; } = true; + + [JsonPropertyName("withCancellationToken")] + public bool WithCancellationToken { get; init; } } public class OverrideOption diff --git a/README.md b/README.md index 0740acac..a4a8d498 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ sql: | Override | values: A nested override value like [this](#override-option). | Yes | Allows you to override the generated C# data types for specific columns in specific queries. This option accepts a `query_name:column_name` mapping and the overriden data type. | | | useCentralPackageManagement | default: `false`
values: `false`,`true` | Yes | If true, the code is generated to support central package management. | | withAsyncSuffix | default: `true`
values: `false`,`true` | Yes | When true, async methods will have the "Async" suffix appended to their names (e.g., `GetAuthorAsync`). When false, async methods will not have the suffix (e.g., `GetAuthor`). | +| withCancellationToken | default: `false`
values: `false`,`true` | Yes | When true, every generated method takes an optional trailing `CancellationToken cancellationToken = default`, threaded into every async DB call so in-flight queries can be cancelled. See [Cancellation](#cancellation). When false (default), generated output is unchanged. | ### Override option Override for a specific query: @@ -157,6 +158,34 @@ public async Task ExampleTransaction(IDbConnection connection) ``` More info can be found in [here](https://docs.sqlc.dev/en/stable/howto/transactions.html). + +### Cancellation +Set `withCancellationToken: true` to make every generated method accept an optional +`CancellationToken`. The token is threaded into every async database call, so a cancelled +token interrupts the in-flight query and releases the locks that statement holds. The +option is off by default; when off, generated output is identical to before. + +```C# +using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)); +try +{ + var author = await queries.GetAuthor(authorId, cts.Token); +} +catch (OperationCanceledException) +{ + // the query was cancelled; its statement-level locks are released +} +``` + +Notes: +- **PostgreSQL & MySQL** interrupt the running statement server-side (Npgsql sends a cancel + request; MySqlConnector issues `KILL QUERY`), releasing that statement's locks immediately. +- **SQLite** runs synchronously and only honours the token *before* the statement starts; + an already-running SQLite statement is not interrupted. +- **Transactions:** cancelling a query inside a `WithTransaction(...)` flow releases only that + statement's locks. Locks held by earlier statements in the transaction (and, on PostgreSQL, + the aborted-transaction state) are released when **you** roll back — the generated code never + rolls back for you. # PostgresSQL
:execlastid - Implementation diff --git a/examples/MySqlConnectorDapperExample/request.json b/examples/MySqlConnectorDapperExample/request.json index 6ba785c6..2de11fa6 100644 --- a/examples/MySqlConnectorDapperExample/request.json +++ b/examples/MySqlConnectorDapperExample/request.json @@ -3807,5 +3807,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRGFwcGVyRXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWV9" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRGFwcGVyRXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2V9" } \ No newline at end of file diff --git a/examples/MySqlConnectorDapperExample/request.message b/examples/MySqlConnectorDapperExample/request.message index 8ed17f64..d472a436 100644 Binary files a/examples/MySqlConnectorDapperExample/request.message and b/examples/MySqlConnectorDapperExample/request.message differ diff --git a/examples/MySqlConnectorDapperLegacyExample/request.json b/examples/MySqlConnectorDapperLegacyExample/request.json index 75d416cd..f2e85bb6 100644 --- a/examples/MySqlConnectorDapperLegacyExample/request.json +++ b/examples/MySqlConnectorDapperLegacyExample/request.json @@ -3807,5 +3807,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JEYXBwZXJMZWdhY3lFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjp0cnVlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF9pbnQiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZX0=" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JEYXBwZXJMZWdhY3lFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjp0cnVlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF9pbnQiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZSwid2l0aENhbmNlbGxhdGlvblRva2VuIjpmYWxzZX0=" } \ No newline at end of file diff --git a/examples/MySqlConnectorDapperLegacyExample/request.message b/examples/MySqlConnectorDapperLegacyExample/request.message index 6573ce32..09b2c840 100644 Binary files a/examples/MySqlConnectorDapperLegacyExample/request.message and b/examples/MySqlConnectorDapperLegacyExample/request.message differ diff --git a/examples/MySqlConnectorExample/request.json b/examples/MySqlConnectorExample/request.json index d9cbf272..b5be7bdb 100644 --- a/examples/MySqlConnectorExample/request.json +++ b/examples/MySqlConnectorExample/request.json @@ -3807,5 +3807,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X2ludCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190aW1lc3RhbXBfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik15U3FsQ29ubmVjdG9yRXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X2ludCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldE15c3FsRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190aW1lc3RhbXBfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/MySqlConnectorExample/request.message b/examples/MySqlConnectorExample/request.message index 97fd7f75..671866ff 100644 Binary files a/examples/MySqlConnectorExample/request.message and b/examples/MySqlConnectorExample/request.message differ diff --git a/examples/MySqlConnectorLegacyExample/request.json b/examples/MySqlConnectorLegacyExample/request.json index 2f441ef9..de006b2c 100644 --- a/examples/MySqlConnectorLegacyExample/request.json +++ b/examples/MySqlConnectorLegacyExample/request.json @@ -3807,5 +3807,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JMZWdhY3lFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjpmYWxzZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWV9" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTXlTcWxDb25uZWN0b3JMZWdhY3lFeGFtcGxlR2VuIiwidXNlRGFwcGVyIjpmYWxzZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfaW50IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRNeXNxbEZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0TXlzcWxGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2V9" } \ No newline at end of file diff --git a/examples/MySqlConnectorLegacyExample/request.message b/examples/MySqlConnectorLegacyExample/request.message index 9c17d9c4..801c793c 100644 Binary files a/examples/MySqlConnectorLegacyExample/request.message and b/examples/MySqlConnectorLegacyExample/request.message differ diff --git a/examples/NpgsqlDapperExample/request.json b/examples/NpgsqlDapperExample/request.json index 5506c5e1..24684fc7 100644 --- a/examples/NpgsqlDapperExample/request.json +++ b/examples/NpgsqlDapperExample/request.json @@ -36232,5 +36232,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik5wZ3NxbERhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZX0=" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik5wZ3NxbERhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZSwid2l0aENhbmNlbGxhdGlvblRva2VuIjpmYWxzZX0=" } \ No newline at end of file diff --git a/examples/NpgsqlDapperExample/request.message b/examples/NpgsqlDapperExample/request.message index 4f4573de..8ebf1b12 100644 --- a/examples/NpgsqlDapperExample/request.message +++ b/examples/NpgsqlDapperExample/request.message @@ -10917,4 +10917,4 @@ hSELECT c_point, c_line, c_lseg, c_box, c_path, c_polygon, c_circle FROM postgre c_path0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbpathzc_path"H c_polygon0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesb polygonz c_polygon"E c_circle0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbcirclezc_circle: query.sqlU -'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*º{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"NpgsqlDapperExampleGen","useDapper":true,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file +'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*Ø{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"NpgsqlDapperExampleGen","useDapper":true,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file diff --git a/examples/NpgsqlDapperLegacyExample/request.json b/examples/NpgsqlDapperLegacyExample/request.json index 5284a64d..00301b12 100644 --- a/examples/NpgsqlDapperLegacyExample/request.json +++ b/examples/NpgsqlDapperLegacyExample/request.json @@ -36232,5 +36232,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTnBnc3FsRGFwcGVyTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfaW50ZWdlciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc1NwZWNpYWxUeXBlc0NudDpjX2pzb24iLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uYiIsImNzaGFycF90eXBlIjp7InR5cGUiOiJKc29uRWxlbWVudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y194bWxfc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfbWFjYWRkcjgiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190aW1lc3RhbXBfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTnBnc3FsRGFwcGVyTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfaW50ZWdlciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF90aW1lc3RhbXAiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjp0cnVlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc1NwZWNpYWxUeXBlc0NudDpjX2pzb24iLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uYiIsImNzaGFycF90eXBlIjp7InR5cGUiOiJKc29uRWxlbWVudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfanNvbl9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y194bWxfc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfbWFjYWRkcjgiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190aW1lc3RhbXBfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/NpgsqlDapperLegacyExample/request.message b/examples/NpgsqlDapperLegacyExample/request.message index ffaf95f7..910f1f6c 100644 --- a/examples/NpgsqlDapperLegacyExample/request.message +++ b/examples/NpgsqlDapperLegacyExample/request.message @@ -10917,4 +10917,4 @@ hSELECT c_point, c_line, c_lseg, c_box, c_path, c_polygon, c_circle FROM postgre c_path0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbpathzc_path"H c_polygon0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesb polygonz c_polygon"E c_circle0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbcirclezc_circle: query.sqlU -'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*È{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"netstandard2.0","namespaceName":"NpgsqlDapperLegacyExampleGen","useDapper":true,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file +'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*æ{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"netstandard2.0","namespaceName":"NpgsqlDapperLegacyExampleGen","useDapper":true,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file diff --git a/examples/NpgsqlExample/request.json b/examples/NpgsqlExample/request.json index c359bd43..785b8b2e 100644 --- a/examples/NpgsqlExample/request.json +++ b/examples/NpgsqlExample/request.json @@ -36232,5 +36232,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik5wZ3NxbEV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOmZhbHNlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbiIsImNzaGFycF90eXBlIjp7InR5cGUiOiJKc29uRWxlbWVudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc1NwZWNpYWxUeXBlc0NudDpjX2pzb25iIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3htbF9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19tYWNhZGRyOCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWV9" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6Ik5wZ3NxbEV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOmZhbHNlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X3RpbWVzdGFtcCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOnRydWV9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbiIsImNzaGFycF90eXBlIjp7InR5cGUiOiJKc29uRWxlbWVudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc1NwZWNpYWxUeXBlc0NudDpjX2pzb25iIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19qc29uX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3htbF9zdHJpbmdfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19tYWNhZGRyOCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RpbWVzdGFtcF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2V9" } \ No newline at end of file diff --git a/examples/NpgsqlExample/request.message b/examples/NpgsqlExample/request.message index b46e6595..fa579995 100644 --- a/examples/NpgsqlExample/request.message +++ b/examples/NpgsqlExample/request.message @@ -10917,4 +10917,4 @@ hSELECT c_point, c_line, c_lseg, c_box, c_path, c_polygon, c_circle FROM postgre c_path0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbpathzc_path"H c_polygon0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesb polygonz c_polygon"E c_circle0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbcirclezc_circle: query.sqlU -'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*µ{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"NpgsqlExampleGen","useDapper":false,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file +'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*Ó{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"NpgsqlExampleGen","useDapper":false,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file diff --git a/examples/NpgsqlLegacyExample/request.json b/examples/NpgsqlLegacyExample/request.json index bc5a8311..251a7458 100644 --- a/examples/NpgsqlLegacyExample/request.json +++ b/examples/NpgsqlLegacyExample/request.json @@ -36232,5 +36232,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTnBnc3FsTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZX0=" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiTnBnc3FsTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0UG9zdGdyZXNGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRQb3N0Z3Jlc0Z1bmN0aW9uczptYXhfdGltZXN0YW1wIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6dHJ1ZX19LHsiY29sdW1uIjoiR2V0UG9zdGdyZXNTcGVjaWFsVHlwZXNDbnQ6Y19qc29uIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikpzb25FbGVtZW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFBvc3RncmVzU3BlY2lhbFR5cGVzQ250OmNfanNvbmIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSnNvbkVsZW1lbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2pzb25fc3RyaW5nX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfeG1sX3N0cmluZ19vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX21hY2FkZHI4IiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGltZXN0YW1wX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZSwid2l0aENhbmNlbGxhdGlvblRva2VuIjpmYWxzZX0=" } \ No newline at end of file diff --git a/examples/NpgsqlLegacyExample/request.message b/examples/NpgsqlLegacyExample/request.message index 51759dfb..ede1b205 100644 --- a/examples/NpgsqlLegacyExample/request.message +++ b/examples/NpgsqlLegacyExample/request.message @@ -10917,4 +10917,4 @@ hSELECT c_point, c_line, c_lseg, c_box, c_path, c_polygon, c_circle FROM postgre c_path0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbpathzc_path"H c_polygon0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesb polygonz c_polygon"E c_circle0ÿÿÿÿÿÿÿÿÿRpostgres_geometric_typesbcirclezc_circle: query.sqlU -'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*Ã{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"netstandard2.0","namespaceName":"NpgsqlLegacyExampleGen","useDapper":false,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file +'TRUNCATE TABLE postgres_geometric_typesTruncatePostgresGeoTypes:exec: query.sql"v1.30.0*á{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"netstandard2.0","namespaceName":"NpgsqlLegacyExampleGen","useDapper":false,"overrideDapperVersion":"","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"type":"int","notNull":false}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"type":"string","notNull":false}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"type":"DateTime","notNull":true}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"type":"JsonElement","notNull":false}},{"column":"*:c_json_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_xml_string_override","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_macaddr8","csharp_type":{"type":"string","notNull":false}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"type":"Instant","notNull":false}}],"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file diff --git a/examples/QuickStartMySqlDalGen/request.json b/examples/QuickStartMySqlDalGen/request.json index 60686250..6f6503b0 100644 --- a/examples/QuickStartMySqlDalGen/request.json +++ b/examples/QuickStartMySqlDalGen/request.json @@ -1045,5 +1045,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/QuickStartMySqlDalGen/request.message b/examples/QuickStartMySqlDalGen/request.message index 9923489e..3f8a09bc 100644 Binary files a/examples/QuickStartMySqlDalGen/request.message and b/examples/QuickStartMySqlDalGen/request.message differ diff --git a/examples/QuickStartPostgresDalGen/request.json b/examples/QuickStartPostgresDalGen/request.json index 1de65223..41c485a5 100644 --- a/examples/QuickStartPostgresDalGen/request.json +++ b/examples/QuickStartPostgresDalGen/request.json @@ -32907,5 +32907,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/QuickStartPostgresDalGen/request.message b/examples/QuickStartPostgresDalGen/request.message index e30de7ae..fea873c7 100644 --- a/examples/QuickStartPostgresDalGen/request.message +++ b/examples/QuickStartPostgresDalGen/request.message @@ -10244,4 +10244,4 @@ pg_catalogvarcharz author_name"B pg_catalogvarcharzname"G bio_type0ÿÿÿÿÿÿÿÿÿRextendedbiosbextendedbio_typezbio_type*JF bio_type0ÿÿÿÿÿÿÿÿÿRextendedbiosbextended.bio_typezbio_type: query.sqlF -TRUNCATE TABLE extended.biosTruncateExtendedBios:exec: query.sql"v1.30.0*î{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file +TRUNCATE TABLE extended.biosTruncateExtendedBios:exec: query.sql"v1.30.0*Œ{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file diff --git a/examples/QuickStartSqliteDalGen/request.json b/examples/QuickStartSqliteDalGen/request.json index 377ae51f..64ad34ac 100644 --- a/examples/QuickStartSqliteDalGen/request.json +++ b/examples/QuickStartSqliteDalGen/request.json @@ -920,5 +920,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/QuickStartSqliteDalGen/request.message b/examples/QuickStartSqliteDalGen/request.message index c0dd4f71..726be6b6 100644 Binary files a/examples/QuickStartSqliteDalGen/request.message and b/examples/QuickStartSqliteDalGen/request.message differ diff --git a/examples/SqliteDapperExample/request.json b/examples/SqliteDapperExample/request.json index 1c6dc562..31f5f96b 100644 --- a/examples/SqliteDapperExample/request.json +++ b/examples/SqliteDapperExample/request.json @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZURhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfcmVhbCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJkZWNpbWFsIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZURhcHBlckV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOnRydWUsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfcmVhbCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJkZWNpbWFsIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/SqliteDapperExample/request.message b/examples/SqliteDapperExample/request.message index 6d63bf6b..54d8647b 100644 Binary files a/examples/SqliteDapperExample/request.message and b/examples/SqliteDapperExample/request.message differ diff --git a/examples/SqliteDapperLegacyExample/request.json b/examples/SqliteDapperLegacyExample/request.json index 5bd7d803..3f8f5f32 100644 --- a/examples/SqliteDapperLegacyExample/request.json +++ b/examples/SqliteDapperLegacyExample/request.json @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlRGFwcGVyTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9yZWFsIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImRlY2ltYWwiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWV9" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlRGFwcGVyTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6dHJ1ZSwib3ZlcnJpZGVEYXBwZXJWZXJzaW9uIjoiIiwib3ZlcnJpZGVzIjpbeyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X2ludGVnZXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiaW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfdmFyY2hhciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJzdHJpbmciLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9yZWFsIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImRlY2ltYWwiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfZGF0ZXRpbWVfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiRGF0ZVRpbWUiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ub2RhX2luc3RhbnRfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiSW5zdGFudCIsIm5vdE51bGwiOmZhbHNlfX1dLCJkZWJ1Z1JlcXVlc3QiOmZhbHNlLCJ1c2VDZW50cmFsUGFja2FnZU1hbmFnZW1lbnQiOmZhbHNlLCJ3aXRoQXN5bmNTdWZmaXgiOnRydWUsIndpdGhDYW5jZWxsYXRpb25Ub2tlbiI6ZmFsc2V9" } \ No newline at end of file diff --git a/examples/SqliteDapperLegacyExample/request.message b/examples/SqliteDapperLegacyExample/request.message index c0c8e0f9..d0ce419e 100644 Binary files a/examples/SqliteDapperLegacyExample/request.message and b/examples/SqliteDapperLegacyExample/request.message differ diff --git a/examples/SqliteExample/request.json b/examples/SqliteExample/request.json index 662c6466..4ef02a3d 100644 --- a/examples/SqliteExample/request.json +++ b/examples/SqliteExample/request.json @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZUV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOmZhbHNlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfaW50ZWdlciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9kYXRldGltZV9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9kYXRldGltZV9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZX0=" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IlNxbGl0ZUV4YW1wbGVHZW4iLCJ1c2VEYXBwZXIiOmZhbHNlLCJvdmVycmlkZURhcHBlclZlcnNpb24iOiIiLCJvdmVycmlkZXMiOlt7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfaW50ZWdlciIsImNzaGFycF90eXBlIjp7InR5cGUiOiJpbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF92YXJjaGFyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6InN0cmluZyIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3JlYWwiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiZGVjaW1hbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9kYXRldGltZV9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9kYXRldGltZV9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJEYXRlVGltZSIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfdGV4dF9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfYm9vbF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJib29sIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX25vZGFfaW5zdGFudF9vdmVycmlkZSIsImNzaGFycF90eXBlIjp7InR5cGUiOiJJbnN0YW50Iiwibm90TnVsbCI6ZmFsc2V9fV0sImRlYnVnUmVxdWVzdCI6ZmFsc2UsInVzZUNlbnRyYWxQYWNrYWdlTWFuYWdlbWVudCI6ZmFsc2UsIndpdGhBc3luY1N1ZmZpeCI6dHJ1ZSwid2l0aENhbmNlbGxhdGlvblRva2VuIjpmYWxzZX0=" } \ No newline at end of file diff --git a/examples/SqliteExample/request.message b/examples/SqliteExample/request.message index 7e01765d..c2b6c009 100644 Binary files a/examples/SqliteExample/request.message and b/examples/SqliteExample/request.message differ diff --git a/examples/SqliteLegacyExample/request.json b/examples/SqliteLegacyExample/request.json index a9050f55..8c9663cd 100644 --- a/examples/SqliteLegacyExample/request.json +++ b/examples/SqliteLegacyExample/request.json @@ -1463,5 +1463,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfcmVhbCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJkZWNpbWFsIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0c3RhbmRhcmQyLjAiLCJuYW1lc3BhY2VOYW1lIjoiU3FsaXRlTGVnYWN5RXhhbXBsZUdlbiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6W3siY29sdW1uIjoiR2V0U3FsaXRlRnVuY3Rpb25zOm1heF9pbnRlZ2VyIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImludCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiJHZXRTcWxpdGVGdW5jdGlvbnM6bWF4X3ZhcmNoYXIiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6IkdldFNxbGl0ZUZ1bmN0aW9uczptYXhfcmVhbCIsImNzaGFycF90eXBlIjp7InR5cGUiOiJkZWNpbWFsIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y19pbnRlZ2VyX2RhdGV0aW1lX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6IkRhdGVUaW1lIiwibm90TnVsbCI6ZmFsc2V9fSx7ImNvbHVtbiI6Iio6Y190ZXh0X2Jvb2xfb3ZlcnJpZGUiLCJjc2hhcnBfdHlwZSI6eyJ0eXBlIjoiYm9vbCIsIm5vdE51bGwiOmZhbHNlfX0seyJjb2x1bW4iOiIqOmNfaW50ZWdlcl9ib29sX292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6ImJvb2wiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX3RleHRfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19LHsiY29sdW1uIjoiKjpjX2ludGVnZXJfbm9kYV9pbnN0YW50X292ZXJyaWRlIiwiY3NoYXJwX3R5cGUiOnsidHlwZSI6Ikluc3RhbnQiLCJub3ROdWxsIjpmYWxzZX19XSwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/examples/SqliteLegacyExample/request.message b/examples/SqliteLegacyExample/request.message index 8c1fae68..21d06e39 100644 Binary files a/examples/SqliteLegacyExample/request.message and b/examples/SqliteLegacyExample/request.message differ diff --git a/unit-tests/CodegenTests/CancellationGenTests.cs b/unit-tests/CodegenTests/CancellationGenTests.cs new file mode 100644 index 00000000..4b043579 --- /dev/null +++ b/unit-tests/CodegenTests/CancellationGenTests.cs @@ -0,0 +1,79 @@ +using NUnit.Framework; +using SqlcGenCsharp.Drivers.Generators; + +namespace CodegenTests; + +public class CancellationGenTests +{ + [Test] + public void EnabledEmitsOptionalTokenParameter() + { + var cancellation = new CancellationGen(enabled: true); + Assert.That(cancellation.MethodParameter(), Is.EqualTo("CancellationToken cancellationToken = default")); + } + + [Test] + public void DisabledEmitsNoTokenParameter() + { + var cancellation = new CancellationGen(enabled: false); + Assert.That(cancellation.MethodParameter(), Is.Empty); + } + + [Test] + public void EnabledAppendsTokenAfterExistingParameters() + { + var cancellation = new CancellationGen(enabled: true); + Assert.That(cancellation.TrailingMethodParameter(), Is.EqualTo(", CancellationToken cancellationToken = default")); + } + + [Test] + public void DisabledAppendsNoParameter() + { + var cancellation = new CancellationGen(enabled: false); + Assert.That(cancellation.TrailingMethodParameter(), Is.Empty); + } + + [Test] + public void EnabledPassesTokenAsSoleArgument() + { + var cancellation = new CancellationGen(enabled: true); + Assert.That(cancellation.Argument(), Is.EqualTo("cancellationToken")); + } + + [Test] + public void DisabledPassesNoArgument() + { + var cancellation = new CancellationGen(enabled: false); + Assert.That(cancellation.Argument(), Is.Empty); + } + + [Test] + public void EnabledAppendsTokenAfterExistingArguments() + { + var cancellation = new CancellationGen(enabled: true); + Assert.That(cancellation.TrailingArgument(), Is.EqualTo(", cancellationToken")); + } + + [Test] + public void DisabledAppendsNothing() + { + var cancellation = new CancellationGen(enabled: false); + Assert.That(cancellation.TrailingArgument(), Is.Empty); + } + + [Test] + public void EnabledWrapsDapperArgsInCommandDefinitionCarryingToken() + { + var cancellation = new CancellationGen(enabled: true); + Assert.That( + cancellation.WrapDapperArgs("SqlText, queryParams"), + Is.EqualTo("new CommandDefinition(SqlText, queryParams, cancellationToken: cancellationToken)")); + } + + [Test] + public void DisabledLeavesDapperArgsUntouched() + { + var cancellation = new CancellationGen(enabled: false); + Assert.That(cancellation.WrapDapperArgs("SqlText, queryParams"), Is.EqualTo("SqlText, queryParams")); + } +} \ No newline at end of file diff --git a/unit-tests/CodegenTests/CodegenCancellationTests.cs b/unit-tests/CodegenTests/CodegenCancellationTests.cs new file mode 100644 index 00000000..163d2fc4 --- /dev/null +++ b/unit-tests/CodegenTests/CodegenCancellationTests.cs @@ -0,0 +1,195 @@ +using Google.Protobuf; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using NUnit.Framework; +using Plugin; +using SqlcGenCsharp; +using System.Text; +using System.Text.Json.Nodes; + +namespace CodegenTests; + +public class CodegenCancellationTests +{ + private CodeGenerator CodeGenerator { get; } = new(); + + private static readonly Catalog EmptyCatalog = new() + { + Schemas = { new Schema { Name = string.Empty, Tables = { Capacity = 0 }, Enums = { Capacity = 0 } } } + }; + + private static Query OneQuery() => new() + { + Filename = "query.sql", + Cmd = ":one", + Name = "GetAuthor", + Columns = { new Column { Name = "name", Type = new Identifier { Name = "text" }, NotNull = true } }, + Params = { new Parameter { Number = 1, Column = new Column { Name = "id", Type = new Identifier { Name = "integer" }, NotNull = true } } }, + Text = "SELECT name FROM authors WHERE id = $1" + }; + + private static Query CopyFromQuery() => new() + { + Filename = "query.sql", + Cmd = ":copyfrom", + Name = "CopyFromAuthors", + Columns = { new Column { Name = "name", Type = new Identifier { Name = "text" } } }, + Params = { new Parameter { Column = new Column { Name = "name", Type = new Identifier { Name = "text" } } } }, + InsertIntoTable = new Identifier { Name = "authors" } + }; + + private static Query ExecQuery() => new() + { + Filename = "query.sql", + Cmd = ":exec", + Name = "DeleteAuthor", + Params = { new Parameter { Number = 1, Column = new Column { Name = "id", Type = new Identifier { Name = "integer" }, NotNull = true } } }, + Text = "DELETE FROM authors WHERE id = $1" + }; + + // Returns the full source of the generated method, found by name across all generated files. + private string GenerateMethod(string engine, bool withCancellationToken, Query query, string methodName, bool useDapper = false) + { + var flags = new List(); + if (withCancellationToken) flags.Add("\"withCancellationToken\":true"); + if (useDapper) flags.Add("\"useDapper\":true"); + var options = "{" + string.Join(",", flags) + "}"; + var request = new GenerateRequest + { + Settings = new Settings { Engine = engine, Codegen = new Codegen { Out = "DummyProject" } }, + Catalog = EmptyCatalog, + Queries = { query }, + PluginOptions = ByteString.CopyFrom(options, Encoding.UTF8) + }; + + var response = CodeGenerator.Generate(request); + foreach (var file in response.Result.Files) + { + var unit = CSharpSyntaxTree.ParseText(file.Contents.ToStringUtf8()).GetCompilationUnitRoot(); + var method = unit.DescendantNodes().OfType() + .FirstOrDefault(m => m.Identifier.Text == methodName); + if (method is not null) + return method.ToFullString(); + } + + throw new AssertionException($"method {methodName} not found in generated files"); + } + + [Test] + public void EnabledAddsOptionalTokenToOneQuerySignature() + { + var method = GenerateMethod("postgresql", withCancellationToken: true, OneQuery(), "GetAuthorAsync"); + Assert.That(method, Does.Contain("CancellationToken cancellationToken = default")); + } + + [Test] + public void DisabledLeavesOneQuerySignatureWithoutToken() + { + var method = GenerateMethod("postgresql", withCancellationToken: false, OneQuery(), "GetAuthorAsync"); + Assert.That(method, Does.Not.Contain("CancellationToken")); + } + + [Test] + public void EnabledThreadsTokenIntoReaderCalls() + { + var method = GenerateMethod("postgresql", withCancellationToken: true, OneQuery(), "GetAuthorAsync"); + Assert.That(method, Does.Contain("ExecuteReaderAsync(cancellationToken)")); + Assert.That(method, Does.Contain("ReadAsync(cancellationToken)")); + Assert.That(method, Does.Contain("OpenConnectionAsync(cancellationToken)")); + } + + [Test] + public void EnabledAddsOptionalTokenToCopyFromSignature() + { + var method = GenerateMethod("postgresql", withCancellationToken: true, CopyFromQuery(), "CopyFromAuthorsAsync"); + Assert.That(method, Does.Contain("CancellationToken cancellationToken = default")); + } + + [Test] + public void EnabledThreadsTokenIntoNonQueryExecution() + { + var method = GenerateMethod("postgresql", withCancellationToken: true, ExecQuery(), "DeleteAuthorAsync"); + Assert.That(method, Does.Contain("ExecuteNonQueryAsync(cancellationToken)")); + } + + [Test] + public void DisabledLeavesAsyncCallsWithoutToken() + { + var method = GenerateMethod("postgresql", withCancellationToken: false, OneQuery(), "GetAuthorAsync"); + Assert.That(method, Does.Contain("ExecuteReaderAsync()")); + Assert.That(method, Does.Contain("ReadAsync()")); + } + + [Test] + public void EnabledWrapsDapperCallsInCommandDefinitionWithToken() + { + var method = GenerateMethod("postgresql", withCancellationToken: true, OneQuery(), "GetAuthorAsync", useDapper: true); + Assert.That(method, Does.Contain("new CommandDefinition(")); + Assert.That(method, Does.Contain("cancellationToken: cancellationToken")); + } + + [Test] + public void DisabledLeavesDapperCallsWithoutCommandDefinition() + { + var method = GenerateMethod("postgresql", withCancellationToken: false, OneQuery(), "GetAuthorAsync", useDapper: true); + Assert.That(method, Does.Not.Contain("CommandDefinition")); + } + + // The example requests cover every annotation (:one/:many/:exec/:execrows/:execlastid/:copyfrom) + // across all engines and both the driver and Dapper paths. + private static readonly string[] ExampleRequests = + [ + "NpgsqlExampleRequest.message", + "NpgsqlDapperExampleRequest.message", + "MySqlConnectorExampleRequest.message", + "MySqlConnectorDapperExampleRequest.message", + "SqliteExampleRequest.message", + "SqliteDapperExampleRequest.message" + ]; + + private static GenerateRequest ExampleRequestWith(string requestFile, bool withCancellationToken) + { + var path = Path.Combine(AppContext.BaseDirectory, requestFile); + var request = GenerateRequest.Parser.ParseFrom(System.IO.File.ReadAllBytes(path)); + var raw = request.PluginOptions.ToStringUtf8(); + var options = (JsonObject)(JsonNode.Parse(string.IsNullOrWhiteSpace(raw) ? "{}" : raw) ?? new JsonObject()); + options["withCancellationToken"] = withCancellationToken; + request.PluginOptions = ByteString.CopyFrom(options.ToJsonString(), Encoding.UTF8); + return request; + } + + private static IEnumerable GeneratedCsharpFiles(GenerateRequest request) + { + return new CodeGenerator().Generate(request).Result.Files.Where(f => f.Name.EndsWith(".cs")); + } + + [TestCaseSource(nameof(ExampleRequests))] + public void EnabledGeneratesSyntacticallyValidCodeForEveryAnnotation(string requestFile) + { + var files = GeneratedCsharpFiles(ExampleRequestWith(requestFile, withCancellationToken: true)).ToList(); + + foreach (var file in files) + { + var errors = CSharpSyntaxTree.ParseText(file.Contents.ToStringUtf8()) + .GetDiagnostics() + .Where(d => d.Severity == DiagnosticSeverity.Error) + .ToList(); + Assert.That(errors, Is.Empty, $"syntax errors in {file.Name}: {string.Join("; ", errors)}"); + } + + Assert.That(files.Any(f => f.Contents.ToStringUtf8().Contains("cancellationToken")), + "expected the generated queries to mention cancellationToken"); + } + + [TestCaseSource(nameof(ExampleRequests))] + public void DisabledMentionsNoCancellationConstructs(string requestFile) + { + foreach (var file in GeneratedCsharpFiles(ExampleRequestWith(requestFile, withCancellationToken: false))) + { + var contents = file.Contents.ToStringUtf8(); + Assert.That(contents, Does.Not.Contain("cancellationToken"), file.Name); + Assert.That(contents, Does.Not.Contain("CommandDefinition"), file.Name); + } + } +} \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json index 0949ae3d..fed6a77f 100644 --- a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json +++ b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.json @@ -101,5 +101,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message index 16cc1423..20f17f79 100644 --- a/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message +++ b/unit-tests/CodegenTests/test-requests/DefaultSchemaEnum/request.message @@ -10,4 +10,4 @@ dummy_column0R  dummy_tablebdummy_table_dummy_columnz dummy_column: query.sql· 1INSERT INTO dummy_table (dummy_column) VALUES (?) TestInsert:exec*UQ - dummy_column0Rpublic dummy_tablebdummy_table_dummy_columnz dummy_column: query.sqlB  dummy_table"v1.30.0*î{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file + dummy_column0Rpublic dummy_tablebdummy_table_dummy_columnz dummy_column: query.sqlB  dummy_table"v1.30.0*Œ{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json index 16b6af70..c528eeaa 100644 --- a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json +++ b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.json @@ -81,5 +81,5 @@ } ], "sqlc_version": "v1.30.0", - "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlfQ==" + "plugin_options": "eyJvdmVycmlkZURyaXZlclZlcnNpb24iOiIiLCJnZW5lcmF0ZUNzcHJvaiI6dHJ1ZSwidGFyZ2V0RnJhbWV3b3JrIjoibmV0OC4wIiwibmFtZXNwYWNlTmFtZSI6IiIsInVzZURhcHBlciI6ZmFsc2UsIm92ZXJyaWRlRGFwcGVyVmVyc2lvbiI6IiIsIm92ZXJyaWRlcyI6bnVsbCwiZGVidWdSZXF1ZXN0IjpmYWxzZSwidXNlQ2VudHJhbFBhY2thZ2VNYW5hZ2VtZW50IjpmYWxzZSwid2l0aEFzeW5jU3VmZml4Ijp0cnVlLCJ3aXRoQ2FuY2VsbGF0aW9uVG9rZW4iOmZhbHNlfQ==" } \ No newline at end of file diff --git a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message index b2bf51c0..4de8fcb3 100644 --- a/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message +++ b/unit-tests/CodegenTests/test-requests/SchemaScopedEnum/request.message @@ -7,4 +7,4 @@  dummy_schema dummy_tableI dummy_column0R dummy_schema dummy_tablebdummy_table_dummy_column« 9SELECT dummy_column FROM dummy_schema.dummy_table LIMIT 1Test:one"W - dummy_column0R dummy_schema dummy_tablebdummy_table_dummy_columnz dummy_column: query.sql"v1.30.0*î{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true} \ No newline at end of file + dummy_column0R dummy_schema dummy_tablebdummy_table_dummy_columnz dummy_column: query.sql"v1.30.0*Œ{"overrideDriverVersion":"","generateCsproj":true,"targetFramework":"net8.0","namespaceName":"","useDapper":false,"overrideDapperVersion":"","overrides":null,"debugRequest":false,"useCentralPackageManagement":false,"withAsyncSuffix":true,"withCancellationToken":false} \ No newline at end of file