diff --git a/.github/workflows/legacy-tests.yml b/.github/workflows/legacy-tests.yml index 6f99931d..d791e5f2 100644 --- a/.github/workflows/legacy-tests.yml +++ b/.github/workflows/legacy-tests.yml @@ -71,7 +71,7 @@ jobs: shell: pwsh command: | $mysqlJob = Start-Job -ScriptBlock { - choco install mysql --no-progress --version=8.4.6 -y --params "/serviceName:MySQL" + choco install mysql --no-progress -y --params "/serviceName:MySQL" return $LASTEXITCODE } diff --git a/Drivers/NpgsqlDriver.cs b/Drivers/NpgsqlDriver.cs index 323185fc..46f95436 100644 --- a/Drivers/NpgsqlDriver.cs +++ b/Drivers/NpgsqlDriver.cs @@ -730,7 +730,7 @@ public override string AddParametersToCommand(Query query) }).JoinByNewLine(); } - private static (string, string) GetEnumSchemaAndName(Column column) + private (string, string) GetEnumSchemaAndName(Column column) { var schemaName = column.Type.Schema; var enumName = column.Type.Name; @@ -740,6 +740,8 @@ private static (string, string) GetEnumSchemaAndName(Column column) schemaName = schemaAndEnum[0]; enumName = schemaAndEnum[1]; } + if (schemaName == DefaultSchema) + schemaName = string.Empty; return (schemaName, enumName); } diff --git a/examples/NpgsqlDapperExample/Models.cs b/examples/NpgsqlDapperExample/Models.cs index c04761d9..94893736 100644 --- a/examples/NpgsqlDapperExample/Models.cs +++ b/examples/NpgsqlDapperExample/Models.cs @@ -85,6 +85,7 @@ public class PostgresSpecialType { public Guid? CUuid { get; init; } public CEnum? CEnum { get; init; } + public CEnum? CQualifiedEnum { get; init; } public JsonElement? CJson { get; init; } public JsonElement? CJsonStringOverride { get; init; } public JsonElement? CJsonb { get; init; } diff --git a/examples/NpgsqlDapperExample/QuerySql.cs b/examples/NpgsqlDapperExample/QuerySql.cs index 9312d8c8..43470dd8 100644 --- a/examples/NpgsqlDapperExample/QuerySql.cs +++ b/examples/NpgsqlDapperExample/QuerySql.cs @@ -1358,7 +1358,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( @c_json, @@ -1368,7 +1369,8 @@ INSERT INTO postgres_special_types @c_xml::xml, @c_xml_string_override::xml, @c_uuid, - @c_enum::c_enum + @c_enum::c_enum, + @c_qualified_enum::c_enum )"; public class InsertPostgresSpecialTypesArgs { @@ -1380,6 +1382,7 @@ public class InsertPostgresSpecialTypesArgs public string? CXmlStringOverride { get; init; } public Guid? CUuid { get; init; } public CEnum? CEnum { get; init; } + public CEnum? CQualifiedEnum { get; init; } }; public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs args) { @@ -1392,6 +1395,7 @@ public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs queryParams.Add("c_xml_string_override", args.CXmlStringOverride); queryParams.Add("c_uuid", args.CUuid); queryParams.Add("c_enum", args.CEnum != null ? args.CEnum.Value.Stringify() : null); + queryParams.Add("c_qualified_enum", args.CQualifiedEnum != null ? args.CQualifiedEnum.Value.Stringify() : null); if (this.Transaction == null) { using (var connection = await GetDataSource().OpenConnectionAsync()) @@ -1484,7 +1488,8 @@ public async Task TruncatePostgresNotNullTypesAsync() c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1"; public class GetPostgresSpecialTypesRow @@ -1497,6 +1502,7 @@ public class GetPostgresSpecialTypesRow public string? CXmlStringOverride { get; init; } public Guid? CUuid { get; init; } public CEnum? CEnum { get; init; } + public CEnum? CQualifiedEnum { get; init; } }; public async Task GetPostgresSpecialTypesAsync() { diff --git a/examples/NpgsqlDapperExample/request.json b/examples/NpgsqlDapperExample/request.json index 5506c5e1..bc4d922d 100644 --- a/examples/NpgsqlDapperExample/request.json +++ b/examples/NpgsqlDapperExample/request.json @@ -605,6 +605,17 @@ "name": "c_enum" } }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + } + }, { "name": "c_json", "length": -1, @@ -35090,7 +35101,7 @@ } }, { - "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum\n)", + "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum,\n $9::c_enum\n)", "name": "InsertPostgresSpecialTypes", "cmd": ":exec", "parameters": [ @@ -35192,6 +35203,16 @@ "name": "c_enum" } } + }, + { + "number": 9, + "column": { + "name": "c_qualified_enum", + "length": -1, + "type": { + "name": "c_enum" + } + } } ], "comments": [ @@ -35251,7 +35272,7 @@ "filename": "query.sql" }, { - "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\nFROM postgres_special_types \nLIMIT 1", + "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\nFROM postgres_special_types \nLIMIT 1", "name": "GetPostgresSpecialTypes", "cmd": ":one", "columns": [ @@ -35344,6 +35365,18 @@ "name": "c_enum" }, "originalName": "c_enum" + }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + }, + "originalName": "c_qualified_enum" } ], "filename": "query.sql" diff --git a/examples/NpgsqlDapperExample/request.message b/examples/NpgsqlDapperExample/request.message index 4f4573de..5336a450 100644 --- a/examples/NpgsqlDapperExample/request.message +++ b/examples/NpgsqlDapperExample/request.message @@ -3,7 +3,7 @@ 2 postgresql-examples/config/postgresql/authors/schema.sql+examples/config/postgresql/types/schema.sql",examples/config/postgresql/authors/query.sql"*examples/config/postgresql/types/query.sqlb‡ examples/NpgsqlDapperExamplecsharpШ{"debugRequest":true,"generateCsproj":true,"namespaceName":"NpgsqlDapperExampleGen","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"notNull":false,"type":"int"}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"notNull":false,"type":"string"}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"notNull":true,"type":"DateTime"}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"*:c_json_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_xml_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_macaddr8","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"notNull":false,"type":"Instant"}}],"targetFramework":"net8.0","useDapper":true}* -./dist/LocalRunnerЁю public"уpublicƒ +./dist/LocalRunnerью public"Ўpublicƒ authors) id0џџџџџџџџџR authorsb  bigserial& name0џџџџџџџџџR authorsbtext# @@ -83,10 +83,11 @@ pg_catalog timestamp c_box0џџџџџџџџџRpostgres_geometric_typesbbox7 c_path0џџџџџџџџџRpostgres_geometric_typesbpath= c_polygon0џџџџџџџџџRpostgres_geometric_typesb polygon; -c_circle0џџџџџџџџџRpostgres_geometric_typesbcircle’ +c_circle0џџџџџџџџџRpostgres_geometric_typesbcircleн postgres_special_types5 c_uuid0џџџџџџџџџRpostgres_special_typesbuuid7 -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumA +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumI +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumA c_json0џџџџџџџџџRpostgres_special_typesb pg_catalogjsonQ c_json_string_override0џџџџџџџџџRpostgres_special_typesb @@ -10680,8 +10681,8 @@ LIMIT 1GetPostgresNetworkTypesCnt:one"= ) VALUES ($1, $2, $3)InsertPostgresNetworkTypesBatch :copyfrom*IE c_cidr0џџџџџџџџџR publicpostgres_network_typesbcidrzc_cidr*IE c_inet0џџџџџџџџџR publicpostgres_network_typesbinetzc_inet*RN - c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_typesП -— + c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_types’ +Н INSERT INTO postgres_special_types ( c_json, @@ -10691,7 +10692,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( $1, @@ -10701,7 +10703,8 @@ VALUES ( $5::xml, $6::xml, $7, - $8::c_enum + $8::c_enum, + $9::c_enum )InsertPostgresSpecialTypes:exec*VR c_json0џџџџџџџџџ8R publicpostgres_special_typesbpg_catalog.jsonzc_json*;7 c_json_string_override0џџџџџџџџџb @@ -10713,7 +10716,8 @@ c_jsonpath0 c_xml0џџџџџџџџџbxml*-) c_xml_string_override0џџџџџџџџџbxml*KG c_uuid0џџџџџџџџџ8R publicpostgres_special_typesbuuidzc_uuid*! -c_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ +c_enum0џџџџџџџџџbc_enum*+ ' +c_qualified_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ UINSERT INTO postgres_not_null_types ( c_enum_not_null @@ -10727,8 +10731,8 @@ VALUES ( FROM postgres_not_null_types LIMIT 1GetPostgresNotNullTypes:one"T c_enum_not_null0џџџџџџџџџRpostgres_not_null_typesbc_enumzc_enum_not_null: query.sqlX -&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЕ -­SELECT +&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЈ +УSELECT c_json, c_json_string_override, c_jsonb, @@ -10736,7 +10740,8 @@ LIMIT 1GetPostgresNotNullTypes:one"T c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1GetPostgresSpecialTypes:one"I c_json0џџџџџџџџџRpostgres_special_typesb @@ -10751,7 +10756,8 @@ c_jsonpath": c_xml0џџџџџџџџџRpostgres_special_typesbxmlzc_xml"Z c_xml_string_override0џџџџџџџџџRpostgres_special_typesbxmlzc_xml_string_override"= c_uuid0џџџџџџџџџRpostgres_special_typesbuuidzc_uuid"? -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum: query.sqlW +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum"[ +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumzc_qualified_enum: query.sqlW %TRUNCATE TABLE postgres_special_typesTruncatePostgresSpecialTypes:exec: query.sqlЎ lINSERT INTO postgres_special_types ( diff --git a/examples/NpgsqlDapperLegacyExample/Models.cs b/examples/NpgsqlDapperLegacyExample/Models.cs index 879d51d1..5371ec8e 100644 --- a/examples/NpgsqlDapperLegacyExample/Models.cs +++ b/examples/NpgsqlDapperLegacyExample/Models.cs @@ -86,6 +86,7 @@ public class PostgresSpecialType { public Guid? CUuid { get; set; } public CEnum? CEnum { get; set; } + public CEnum? CQualifiedEnum { get; set; } public JsonElement? CJson { get; set; } public JsonElement? CJsonStringOverride { get; set; } public JsonElement? CJsonb { get; set; } diff --git a/examples/NpgsqlDapperLegacyExample/QuerySql.cs b/examples/NpgsqlDapperLegacyExample/QuerySql.cs index 39ab5771..e1671b22 100644 --- a/examples/NpgsqlDapperLegacyExample/QuerySql.cs +++ b/examples/NpgsqlDapperLegacyExample/QuerySql.cs @@ -1359,7 +1359,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( @c_json, @@ -1369,7 +1370,8 @@ INSERT INTO postgres_special_types @c_xml::xml, @c_xml_string_override::xml, @c_uuid, - @c_enum::c_enum + @c_enum::c_enum, + @c_qualified_enum::c_enum )"; public class InsertPostgresSpecialTypesArgs { @@ -1381,6 +1383,7 @@ public class InsertPostgresSpecialTypesArgs public string CXmlStringOverride { get; set; } public Guid? CUuid { get; set; } public CEnum? CEnum { get; set; } + public CEnum? CQualifiedEnum { get; set; } }; public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs args) { @@ -1393,6 +1396,7 @@ public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs queryParams.Add("c_xml_string_override", args.CXmlStringOverride); queryParams.Add("c_uuid", args.CUuid); queryParams.Add("c_enum", args.CEnum != null ? args.CEnum.Value.Stringify() : null); + queryParams.Add("c_qualified_enum", args.CQualifiedEnum != null ? args.CQualifiedEnum.Value.Stringify() : null); if (this.Transaction == null) { using (var connection = await GetDataSource().OpenConnectionAsync()) @@ -1485,7 +1489,8 @@ public async Task TruncatePostgresNotNullTypesAsync() c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1"; public class GetPostgresSpecialTypesRow @@ -1498,6 +1503,7 @@ public class GetPostgresSpecialTypesRow public string CXmlStringOverride { get; set; } public Guid? CUuid { get; set; } public CEnum? CEnum { get; set; } + public CEnum? CQualifiedEnum { get; set; } }; public async Task GetPostgresSpecialTypesAsync() { diff --git a/examples/NpgsqlDapperLegacyExample/request.json b/examples/NpgsqlDapperLegacyExample/request.json index 5284a64d..a5048fe8 100644 --- a/examples/NpgsqlDapperLegacyExample/request.json +++ b/examples/NpgsqlDapperLegacyExample/request.json @@ -605,6 +605,17 @@ "name": "c_enum" } }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + } + }, { "name": "c_json", "length": -1, @@ -35090,7 +35101,7 @@ } }, { - "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum\n)", + "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum,\n $9::c_enum\n)", "name": "InsertPostgresSpecialTypes", "cmd": ":exec", "parameters": [ @@ -35192,6 +35203,16 @@ "name": "c_enum" } } + }, + { + "number": 9, + "column": { + "name": "c_qualified_enum", + "length": -1, + "type": { + "name": "c_enum" + } + } } ], "comments": [ @@ -35251,7 +35272,7 @@ "filename": "query.sql" }, { - "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\nFROM postgres_special_types \nLIMIT 1", + "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\nFROM postgres_special_types \nLIMIT 1", "name": "GetPostgresSpecialTypes", "cmd": ":one", "columns": [ @@ -35344,6 +35365,18 @@ "name": "c_enum" }, "originalName": "c_enum" + }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + }, + "originalName": "c_qualified_enum" } ], "filename": "query.sql" diff --git a/examples/NpgsqlDapperLegacyExample/request.message b/examples/NpgsqlDapperLegacyExample/request.message index ffaf95f7..d5e41b0e 100644 --- a/examples/NpgsqlDapperLegacyExample/request.message +++ b/examples/NpgsqlDapperLegacyExample/request.message @@ -3,7 +3,7 @@ 2 postgresql-examples/config/postgresql/authors/schema.sql+examples/config/postgresql/types/schema.sql",examples/config/postgresql/authors/query.sql"*examples/config/postgresql/types/query.sqlb› "examples/NpgsqlDapperLegacyExamplecsharpж{"debugRequest":true,"generateCsproj":true,"namespaceName":"NpgsqlDapperLegacyExampleGen","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"notNull":false,"type":"int"}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"notNull":false,"type":"string"}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"notNull":true,"type":"DateTime"}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"*:c_json_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_xml_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_macaddr8","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"notNull":false,"type":"Instant"}}],"targetFramework":"netstandard2.0","useDapper":true}* -./dist/LocalRunnerЁю public"уpublicƒ +./dist/LocalRunnerью public"Ўpublicƒ authors) id0џџџџџџџџџR authorsb  bigserial& name0џџџџџџџџџR authorsbtext# @@ -83,10 +83,11 @@ pg_catalog timestamp c_box0џџџџџџџџџRpostgres_geometric_typesbbox7 c_path0џџџџџџџџџRpostgres_geometric_typesbpath= c_polygon0џџџџџџџџџRpostgres_geometric_typesb polygon; -c_circle0џџџџџџџџџRpostgres_geometric_typesbcircle’ +c_circle0џџџџџџџџџRpostgres_geometric_typesbcircleн postgres_special_types5 c_uuid0џџџџџџџџџRpostgres_special_typesbuuid7 -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumA +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumI +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumA c_json0џџџџџџџџџRpostgres_special_typesb pg_catalogjsonQ c_json_string_override0џџџџџџџџџRpostgres_special_typesb @@ -10680,8 +10681,8 @@ LIMIT 1GetPostgresNetworkTypesCnt:one"= ) VALUES ($1, $2, $3)InsertPostgresNetworkTypesBatch :copyfrom*IE c_cidr0џџџџџџџџџR publicpostgres_network_typesbcidrzc_cidr*IE c_inet0џџџџџџџџџR publicpostgres_network_typesbinetzc_inet*RN - c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_typesП -— + c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_types’ +Н INSERT INTO postgres_special_types ( c_json, @@ -10691,7 +10692,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( $1, @@ -10701,7 +10703,8 @@ VALUES ( $5::xml, $6::xml, $7, - $8::c_enum + $8::c_enum, + $9::c_enum )InsertPostgresSpecialTypes:exec*VR c_json0џџџџџџџџџ8R publicpostgres_special_typesbpg_catalog.jsonzc_json*;7 c_json_string_override0џџџџџџџџџb @@ -10713,7 +10716,8 @@ c_jsonpath0 c_xml0џџџџџџџџџbxml*-) c_xml_string_override0џџџџџџџџџbxml*KG c_uuid0џџџџџџџџџ8R publicpostgres_special_typesbuuidzc_uuid*! -c_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ +c_enum0џџџџџџџџџbc_enum*+ ' +c_qualified_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ UINSERT INTO postgres_not_null_types ( c_enum_not_null @@ -10727,8 +10731,8 @@ VALUES ( FROM postgres_not_null_types LIMIT 1GetPostgresNotNullTypes:one"T c_enum_not_null0џџџџџџџџџRpostgres_not_null_typesbc_enumzc_enum_not_null: query.sqlX -&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЕ -­SELECT +&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЈ +УSELECT c_json, c_json_string_override, c_jsonb, @@ -10736,7 +10740,8 @@ LIMIT 1GetPostgresNotNullTypes:one"T c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1GetPostgresSpecialTypes:one"I c_json0џџџџџџџџџRpostgres_special_typesb @@ -10751,7 +10756,8 @@ c_jsonpath": c_xml0џџџџџџџџџRpostgres_special_typesbxmlzc_xml"Z c_xml_string_override0џџџџџџџџџRpostgres_special_typesbxmlzc_xml_string_override"= c_uuid0џџџџџџџџџRpostgres_special_typesbuuidzc_uuid"? -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum: query.sqlW +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum"[ +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumzc_qualified_enum: query.sqlW %TRUNCATE TABLE postgres_special_typesTruncatePostgresSpecialTypes:exec: query.sqlЎ lINSERT INTO postgres_special_types ( diff --git a/examples/NpgsqlExample/Models.cs b/examples/NpgsqlExample/Models.cs index 966152d7..f5ef582f 100644 --- a/examples/NpgsqlExample/Models.cs +++ b/examples/NpgsqlExample/Models.cs @@ -19,7 +19,7 @@ namespace NpgsqlExampleGen; public readonly record struct PostgresNetworkType(NpgsqlCidr? CCidr, IPAddress? CInet, PhysicalAddress? CMacaddr, string? CMacaddr8); public readonly record struct PostgresArrayType(byte[]? CBytea, bool[]? CBooleanArray, string[]? CTextArray, int[]? CIntegerArray, decimal[]? CDecimalArray, DateTime[]? CDateArray, DateTime[]? CTimestampArray); public readonly record struct PostgresGeometricType(NpgsqlPoint? CPoint, NpgsqlLine? CLine, NpgsqlLSeg? CLseg, NpgsqlBox? CBox, NpgsqlPath? CPath, NpgsqlPolygon? CPolygon, NpgsqlCircle? CCircle); -public readonly record struct PostgresSpecialType(Guid? CUuid, CEnum? CEnum, JsonElement? CJson, JsonElement? CJsonStringOverride, JsonElement? CJsonb, string? CJsonpath, XmlDocument? CXml, XmlDocument? CXmlStringOverride); +public readonly record struct PostgresSpecialType(Guid? CUuid, CEnum? CEnum, CEnum? CQualifiedEnum, JsonElement? CJson, JsonElement? CJsonStringOverride, JsonElement? CJsonb, string? CJsonpath, XmlDocument? CXml, XmlDocument? CXmlStringOverride); public readonly record struct PostgresNotNullType(CEnum CEnumNotNull); public readonly record struct ExtendedBio(string AuthorName, string Name, ExtendedBioType? BioType); public enum CEnum diff --git a/examples/NpgsqlExample/QuerySql.cs b/examples/NpgsqlExample/QuerySql.cs index 29011982..9fcf3439 100644 --- a/examples/NpgsqlExample/QuerySql.cs +++ b/examples/NpgsqlExample/QuerySql.cs @@ -1891,7 +1891,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( @c_json, @@ -1901,9 +1902,10 @@ INSERT INTO postgres_special_types @c_xml::xml, @c_xml_string_override::xml, @c_uuid, - @c_enum::c_enum + @c_enum::c_enum, + @c_qualified_enum::c_enum )"; - public readonly record struct InsertPostgresSpecialTypesArgs(JsonElement? CJson, string? CJsonStringOverride, JsonElement? CJsonb, string? CJsonpath, XmlDocument? CXml, string? CXmlStringOverride, Guid? CUuid, CEnum? CEnum); + public readonly record struct InsertPostgresSpecialTypesArgs(JsonElement? CJson, string? CJsonStringOverride, JsonElement? CJsonb, string? CJsonpath, XmlDocument? CXml, string? CXmlStringOverride, Guid? CUuid, CEnum? CEnum, CEnum? CQualifiedEnum); public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs args) { if (this.Transaction == null) @@ -1921,6 +1923,7 @@ public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs command.Parameters.AddWithValue("@c_xml_string_override", NpgsqlDbType.Xml, args.CXmlStringOverride ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_uuid", args.CUuid ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_enum", args.CEnum != null ? args.CEnum.Value.Stringify() : (object)DBNull.Value); + command.Parameters.AddWithValue("@c_qualified_enum", args.CQualifiedEnum != null ? args.CQualifiedEnum.Value.Stringify() : (object)DBNull.Value); await command.ExecuteNonQueryAsync(); } @@ -1942,6 +1945,7 @@ public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs command.Parameters.AddWithValue("@c_xml_string_override", NpgsqlDbType.Xml, args.CXmlStringOverride ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_uuid", args.CUuid ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_enum", args.CEnum != null ? args.CEnum.Value.Stringify() : (object)DBNull.Value); + command.Parameters.AddWithValue("@c_qualified_enum", args.CQualifiedEnum != null ? args.CQualifiedEnum.Value.Stringify() : (object)DBNull.Value); await command.ExecuteNonQueryAsync(); } } @@ -2067,10 +2071,11 @@ public async Task TruncatePostgresNotNullTypesAsync() c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1"; - public readonly record struct GetPostgresSpecialTypesRow(JsonElement? CJson, string? CJsonStringOverride, JsonElement? CJsonb, string? CJsonpath, XmlDocument? CXml, string? CXmlStringOverride, Guid? CUuid, CEnum? CEnum); + public readonly record struct GetPostgresSpecialTypesRow(JsonElement? CJson, string? CJsonStringOverride, JsonElement? CJsonb, string? CJsonpath, XmlDocument? CXml, string? CXmlStringOverride, Guid? CUuid, CEnum? CEnum, CEnum? CQualifiedEnum); public async Task GetPostgresSpecialTypesAsync() { if (this.Transaction == null) @@ -2098,7 +2103,8 @@ FROM postgres_special_types }))(reader, 4), CXmlStringOverride = reader.IsDBNull(5) ? null : reader.GetString(5), CUuid = reader.IsDBNull(6) ? null : reader.GetFieldValue(6), - CEnum = reader.IsDBNull(7) ? null : reader.GetString(7).ToCEnum() + CEnum = reader.IsDBNull(7) ? null : reader.GetString(7).ToCEnum(), + CQualifiedEnum = reader.IsDBNull(8) ? null : reader.GetString(8).ToCEnum() }; } } @@ -2131,7 +2137,8 @@ FROM postgres_special_types }))(reader, 4), CXmlStringOverride = reader.IsDBNull(5) ? null : reader.GetString(5), CUuid = reader.IsDBNull(6) ? null : reader.GetFieldValue(6), - CEnum = reader.IsDBNull(7) ? null : reader.GetString(7).ToCEnum() + CEnum = reader.IsDBNull(7) ? null : reader.GetString(7).ToCEnum(), + CQualifiedEnum = reader.IsDBNull(8) ? null : reader.GetString(8).ToCEnum() }; } } diff --git a/examples/NpgsqlExample/request.json b/examples/NpgsqlExample/request.json index c359bd43..26b5e72b 100644 --- a/examples/NpgsqlExample/request.json +++ b/examples/NpgsqlExample/request.json @@ -605,6 +605,17 @@ "name": "c_enum" } }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + } + }, { "name": "c_json", "length": -1, @@ -35090,7 +35101,7 @@ } }, { - "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum\n)", + "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum,\n $9::c_enum\n)", "name": "InsertPostgresSpecialTypes", "cmd": ":exec", "parameters": [ @@ -35192,6 +35203,16 @@ "name": "c_enum" } } + }, + { + "number": 9, + "column": { + "name": "c_qualified_enum", + "length": -1, + "type": { + "name": "c_enum" + } + } } ], "comments": [ @@ -35251,7 +35272,7 @@ "filename": "query.sql" }, { - "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\nFROM postgres_special_types \nLIMIT 1", + "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\nFROM postgres_special_types \nLIMIT 1", "name": "GetPostgresSpecialTypes", "cmd": ":one", "columns": [ @@ -35344,6 +35365,18 @@ "name": "c_enum" }, "originalName": "c_enum" + }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + }, + "originalName": "c_qualified_enum" } ], "filename": "query.sql" diff --git a/examples/NpgsqlExample/request.message b/examples/NpgsqlExample/request.message index b46e6595..5e1dd48e 100644 --- a/examples/NpgsqlExample/request.message +++ b/examples/NpgsqlExample/request.message @@ -3,7 +3,7 @@ 2 postgresql-examples/config/postgresql/authors/schema.sql+examples/config/postgresql/types/schema.sql",examples/config/postgresql/authors/query.sql"*examples/config/postgresql/types/query.sqlbќ examples/NpgsqlExamplecsharpУ{"debugRequest":true,"generateCsproj":true,"namespaceName":"NpgsqlExampleGen","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"notNull":false,"type":"int"}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"notNull":false,"type":"string"}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"notNull":true,"type":"DateTime"}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"*:c_json_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_xml_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_macaddr8","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"notNull":false,"type":"Instant"}}],"targetFramework":"net8.0","useDapper":false}* -./dist/LocalRunnerЁю public"уpublicƒ +./dist/LocalRunnerью public"Ўpublicƒ authors) id0џџџџџџџџџR authorsb  bigserial& name0џџџџџџџџџR authorsbtext# @@ -83,10 +83,11 @@ pg_catalog timestamp c_box0џџџџџџџџџRpostgres_geometric_typesbbox7 c_path0џџџџџџџџџRpostgres_geometric_typesbpath= c_polygon0џџџџџџџџџRpostgres_geometric_typesb polygon; -c_circle0џџџџџџџџџRpostgres_geometric_typesbcircle’ +c_circle0џџџџџџџџџRpostgres_geometric_typesbcircleн postgres_special_types5 c_uuid0џџџџџџџџџRpostgres_special_typesbuuid7 -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumA +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumI +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumA c_json0џџџџџџџџџRpostgres_special_typesb pg_catalogjsonQ c_json_string_override0џџџџџџџџџRpostgres_special_typesb @@ -10680,8 +10681,8 @@ LIMIT 1GetPostgresNetworkTypesCnt:one"= ) VALUES ($1, $2, $3)InsertPostgresNetworkTypesBatch :copyfrom*IE c_cidr0џџџџџџџџџR publicpostgres_network_typesbcidrzc_cidr*IE c_inet0џџџџџџџџџR publicpostgres_network_typesbinetzc_inet*RN - c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_typesП -— + c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_types’ +Н INSERT INTO postgres_special_types ( c_json, @@ -10691,7 +10692,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( $1, @@ -10701,7 +10703,8 @@ VALUES ( $5::xml, $6::xml, $7, - $8::c_enum + $8::c_enum, + $9::c_enum )InsertPostgresSpecialTypes:exec*VR c_json0џџџџџџџџџ8R publicpostgres_special_typesbpg_catalog.jsonzc_json*;7 c_json_string_override0џџџџџџџџџb @@ -10713,7 +10716,8 @@ c_jsonpath0 c_xml0џџџџџџџџџbxml*-) c_xml_string_override0џџџџџџџџџbxml*KG c_uuid0џџџџџџџџџ8R publicpostgres_special_typesbuuidzc_uuid*! -c_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ +c_enum0џџџџџџџџџbc_enum*+ ' +c_qualified_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ UINSERT INTO postgres_not_null_types ( c_enum_not_null @@ -10727,8 +10731,8 @@ VALUES ( FROM postgres_not_null_types LIMIT 1GetPostgresNotNullTypes:one"T c_enum_not_null0џџџџџџџџџRpostgres_not_null_typesbc_enumzc_enum_not_null: query.sqlX -&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЕ -­SELECT +&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЈ +УSELECT c_json, c_json_string_override, c_jsonb, @@ -10736,7 +10740,8 @@ LIMIT 1GetPostgresNotNullTypes:one"T c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1GetPostgresSpecialTypes:one"I c_json0џџџџџџџџџRpostgres_special_typesb @@ -10751,7 +10756,8 @@ c_jsonpath": c_xml0џџџџџџџџџRpostgres_special_typesbxmlzc_xml"Z c_xml_string_override0џџџџџџџџџRpostgres_special_typesbxmlzc_xml_string_override"= c_uuid0џџџџџџџџџRpostgres_special_typesbuuidzc_uuid"? -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum: query.sqlW +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum"[ +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumzc_qualified_enum: query.sqlW %TRUNCATE TABLE postgres_special_typesTruncatePostgresSpecialTypes:exec: query.sqlЎ lINSERT INTO postgres_special_types ( diff --git a/examples/NpgsqlLegacyExample/Models.cs b/examples/NpgsqlLegacyExample/Models.cs index 67d27bf2..413490ec 100644 --- a/examples/NpgsqlLegacyExample/Models.cs +++ b/examples/NpgsqlLegacyExample/Models.cs @@ -86,6 +86,7 @@ public class PostgresSpecialType { public Guid? CUuid { get; set; } public CEnum? CEnum { get; set; } + public CEnum? CQualifiedEnum { get; set; } public JsonElement? CJson { get; set; } public JsonElement? CJsonStringOverride { get; set; } public JsonElement? CJsonb { get; set; } diff --git a/examples/NpgsqlLegacyExample/QuerySql.cs b/examples/NpgsqlLegacyExample/QuerySql.cs index 788c25a6..e6c80edf 100644 --- a/examples/NpgsqlLegacyExample/QuerySql.cs +++ b/examples/NpgsqlLegacyExample/QuerySql.cs @@ -2148,7 +2148,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( @c_json, @@ -2158,7 +2159,8 @@ INSERT INTO postgres_special_types @c_xml::xml, @c_xml_string_override::xml, @c_uuid, - @c_enum::c_enum + @c_enum::c_enum, + @c_qualified_enum::c_enum )"; public class InsertPostgresSpecialTypesArgs { @@ -2170,6 +2172,7 @@ public class InsertPostgresSpecialTypesArgs public string CXmlStringOverride { get; set; } public Guid? CUuid { get; set; } public CEnum? CEnum { get; set; } + public CEnum? CQualifiedEnum { get; set; } }; public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs args) { @@ -2188,6 +2191,7 @@ public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs command.Parameters.AddWithValue("@c_xml_string_override", NpgsqlDbType.Xml, args.CXmlStringOverride ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_uuid", args.CUuid ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_enum", args.CEnum != null ? args.CEnum.Value.Stringify() : (object)DBNull.Value); + command.Parameters.AddWithValue("@c_qualified_enum", args.CQualifiedEnum != null ? args.CQualifiedEnum.Value.Stringify() : (object)DBNull.Value); await command.ExecuteNonQueryAsync(); } @@ -2209,6 +2213,7 @@ public async Task InsertPostgresSpecialTypesAsync(InsertPostgresSpecialTypesArgs command.Parameters.AddWithValue("@c_xml_string_override", NpgsqlDbType.Xml, args.CXmlStringOverride ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_uuid", args.CUuid ?? (object)DBNull.Value); command.Parameters.AddWithValue("@c_enum", args.CEnum != null ? args.CEnum.Value.Stringify() : (object)DBNull.Value); + command.Parameters.AddWithValue("@c_qualified_enum", args.CQualifiedEnum != null ? args.CQualifiedEnum.Value.Stringify() : (object)DBNull.Value); await command.ExecuteNonQueryAsync(); } } @@ -2340,7 +2345,8 @@ public async Task TruncatePostgresNotNullTypesAsync() c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1"; public class GetPostgresSpecialTypesRow @@ -2353,6 +2359,7 @@ public class GetPostgresSpecialTypesRow public string CXmlStringOverride { get; set; } public Guid? CUuid { get; set; } public CEnum? CEnum { get; set; } + public CEnum? CQualifiedEnum { get; set; } }; public async Task GetPostgresSpecialTypesAsync() { @@ -2381,7 +2388,8 @@ public async Task GetPostgresSpecialTypesAsync() }))(reader, 4), CXmlStringOverride = reader.IsDBNull(5) ? null : reader.GetString(5), CUuid = reader.IsDBNull(6) ? (Guid? )null : reader.GetFieldValue(6), - CEnum = reader.IsDBNull(7) ? (CEnum? )null : reader.GetString(7).ToCEnum() + CEnum = reader.IsDBNull(7) ? (CEnum? )null : reader.GetString(7).ToCEnum(), + CQualifiedEnum = reader.IsDBNull(8) ? (CEnum? )null : reader.GetString(8).ToCEnum() }; } } @@ -2414,7 +2422,8 @@ public async Task GetPostgresSpecialTypesAsync() }))(reader, 4), CXmlStringOverride = reader.IsDBNull(5) ? null : reader.GetString(5), CUuid = reader.IsDBNull(6) ? (Guid? )null : reader.GetFieldValue(6), - CEnum = reader.IsDBNull(7) ? (CEnum? )null : reader.GetString(7).ToCEnum() + CEnum = reader.IsDBNull(7) ? (CEnum? )null : reader.GetString(7).ToCEnum(), + CQualifiedEnum = reader.IsDBNull(8) ? (CEnum? )null : reader.GetString(8).ToCEnum() }; } } diff --git a/examples/NpgsqlLegacyExample/request.json b/examples/NpgsqlLegacyExample/request.json index bc5a8311..bb5d6f71 100644 --- a/examples/NpgsqlLegacyExample/request.json +++ b/examples/NpgsqlLegacyExample/request.json @@ -605,6 +605,17 @@ "name": "c_enum" } }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + } + }, { "name": "c_json", "length": -1, @@ -35090,7 +35101,7 @@ } }, { - "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum\n)", + "text": "\nINSERT INTO postgres_special_types\n(\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\n)\nVALUES (\n $1, \n $2::json, \n $3,\n $4::jsonpath,\n $5::xml,\n $6::xml,\n $7,\n $8::c_enum,\n $9::c_enum\n)", "name": "InsertPostgresSpecialTypes", "cmd": ":exec", "parameters": [ @@ -35192,6 +35203,16 @@ "name": "c_enum" } } + }, + { + "number": 9, + "column": { + "name": "c_qualified_enum", + "length": -1, + "type": { + "name": "c_enum" + } + } } ], "comments": [ @@ -35251,7 +35272,7 @@ "filename": "query.sql" }, { - "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum\nFROM postgres_special_types \nLIMIT 1", + "text": "SELECT\n c_json,\n c_json_string_override,\n c_jsonb,\n c_jsonpath,\n c_xml,\n c_xml_string_override,\n c_uuid,\n c_enum,\n c_qualified_enum\nFROM postgres_special_types \nLIMIT 1", "name": "GetPostgresSpecialTypes", "cmd": ":one", "columns": [ @@ -35344,6 +35365,18 @@ "name": "c_enum" }, "originalName": "c_enum" + }, + { + "name": "c_qualified_enum", + "length": -1, + "table": { + "name": "postgres_special_types" + }, + "type": { + "schema": "public", + "name": "c_enum" + }, + "originalName": "c_qualified_enum" } ], "filename": "query.sql" diff --git a/examples/NpgsqlLegacyExample/request.message b/examples/NpgsqlLegacyExample/request.message index 51759dfb..ed99c5dd 100644 --- a/examples/NpgsqlLegacyExample/request.message +++ b/examples/NpgsqlLegacyExample/request.message @@ -3,7 +3,7 @@ 2 postgresql-examples/config/postgresql/authors/schema.sql+examples/config/postgresql/types/schema.sql",examples/config/postgresql/authors/query.sql"*examples/config/postgresql/types/query.sqlb examples/NpgsqlLegacyExamplecsharpб{"debugRequest":true,"generateCsproj":true,"namespaceName":"NpgsqlLegacyExampleGen","overrides":[{"column":"GetPostgresFunctions:max_integer","csharp_type":{"notNull":false,"type":"int"}},{"column":"GetPostgresFunctions:max_varchar","csharp_type":{"notNull":false,"type":"string"}},{"column":"GetPostgresFunctions:max_timestamp","csharp_type":{"notNull":true,"type":"DateTime"}},{"column":"GetPostgresSpecialTypesCnt:c_json","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"GetPostgresSpecialTypesCnt:c_jsonb","csharp_type":{"notNull":false,"type":"JsonElement"}},{"column":"*:c_json_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_xml_string_override","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_macaddr8","csharp_type":{"notNull":false,"type":"string"}},{"column":"*:c_timestamp_noda_instant_override","csharp_type":{"notNull":false,"type":"Instant"}}],"targetFramework":"netstandard2.0","useDapper":false}* -./dist/LocalRunnerЁю public"уpublicƒ +./dist/LocalRunnerью public"Ўpublicƒ authors) id0џџџџџџџџџR authorsb  bigserial& name0џџџџџџџџџR authorsbtext# @@ -83,10 +83,11 @@ pg_catalog timestamp c_box0џџџџџџџџџRpostgres_geometric_typesbbox7 c_path0џџџџџџџџџRpostgres_geometric_typesbpath= c_polygon0џџџџџџџџџRpostgres_geometric_typesb polygon; -c_circle0џџџџџџџџџRpostgres_geometric_typesbcircle’ +c_circle0џџџџџџџџџRpostgres_geometric_typesbcircleн postgres_special_types5 c_uuid0џџџџџџџџџRpostgres_special_typesbuuid7 -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumA +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumI +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumA c_json0џџџџџџџџџRpostgres_special_typesb pg_catalogjsonQ c_json_string_override0џџџџџџџџџRpostgres_special_typesb @@ -10680,8 +10681,8 @@ LIMIT 1GetPostgresNetworkTypesCnt:one"= ) VALUES ($1, $2, $3)InsertPostgresNetworkTypesBatch :copyfrom*IE c_cidr0џџџџџџџџџR publicpostgres_network_typesbcidrzc_cidr*IE c_inet0џџџџџџџџџR publicpostgres_network_typesbinetzc_inet*RN - c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_typesП -— + c_macaddr0џџџџџџџџџR publicpostgres_network_typesb macaddrz c_macaddr: query.sqlBpostgres_network_types’ +Н INSERT INTO postgres_special_types ( c_json, @@ -10691,7 +10692,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( $1, @@ -10701,7 +10703,8 @@ VALUES ( $5::xml, $6::xml, $7, - $8::c_enum + $8::c_enum, + $9::c_enum )InsertPostgresSpecialTypes:exec*VR c_json0џџџџџџџџџ8R publicpostgres_special_typesbpg_catalog.jsonzc_json*;7 c_json_string_override0џџџџџџџџџb @@ -10713,7 +10716,8 @@ c_jsonpath0 c_xml0џџџџџџџџџbxml*-) c_xml_string_override0џџџџџџџџџbxml*KG c_uuid0џџџџџџџџџ8R publicpostgres_special_typesbuuidzc_uuid*! -c_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ +c_enum0џџџџџџџџџbc_enum*+ ' +c_qualified_enum0џџџџџџџџџbc_enum2 Special types : query.sqlBpostgres_special_typesЮ UINSERT INTO postgres_not_null_types ( c_enum_not_null @@ -10727,8 +10731,8 @@ VALUES ( FROM postgres_not_null_types LIMIT 1GetPostgresNotNullTypes:one"T c_enum_not_null0џџџџџџџџџRpostgres_not_null_typesbc_enumzc_enum_not_null: query.sqlX -&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЕ -­SELECT +&TRUNCATE TABLE postgres_not_null_typesTruncatePostgresNotNullTypes:exec: query.sqlЈ +УSELECT c_json, c_json_string_override, c_jsonb, @@ -10736,7 +10740,8 @@ LIMIT 1GetPostgresNotNullTypes:one"T c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1GetPostgresSpecialTypes:one"I c_json0џџџџџџџџџRpostgres_special_typesb @@ -10751,7 +10756,8 @@ c_jsonpath": c_xml0џџџџџџџџџRpostgres_special_typesbxmlzc_xml"Z c_xml_string_override0џџџџџџџџџRpostgres_special_typesbxmlzc_xml_string_override"= c_uuid0џџџџџџџџџRpostgres_special_typesbuuidzc_uuid"? -c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum: query.sqlW +c_enum0џџџџџџџџџRpostgres_special_typesbc_enumzc_enum"[ +c_qualified_enum0џџџџџџџџџRpostgres_special_typesbpublicc_enumzc_qualified_enum: query.sqlW %TRUNCATE TABLE postgres_special_typesTruncatePostgresSpecialTypes:exec: query.sqlЎ lINSERT INTO postgres_special_types ( diff --git a/examples/config/postgresql/types/query.sql b/examples/config/postgresql/types/query.sql index 0b482159..29de1a15 100644 --- a/examples/config/postgresql/types/query.sql +++ b/examples/config/postgresql/types/query.sql @@ -241,7 +241,8 @@ INSERT INTO postgres_special_types c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum ) VALUES ( sqlc.narg('c_json'), @@ -251,7 +252,8 @@ VALUES ( sqlc.narg('c_xml')::xml, sqlc.narg('c_xml_string_override')::xml, sqlc.narg('c_uuid'), - sqlc.narg('c_enum')::c_enum + sqlc.narg('c_enum')::c_enum, + sqlc.narg('c_qualified_enum')::c_enum ); -- name: InsertPostgresNotNullTypes :exec @@ -281,7 +283,8 @@ SELECT c_xml, c_xml_string_override, c_uuid, - c_enum + c_enum, + c_qualified_enum FROM postgres_special_types LIMIT 1; @@ -412,3 +415,4 @@ SELECT * FROM postgres_geometric_types LIMIT 1; -- name: TruncatePostgresGeoTypes :exec TRUNCATE TABLE postgres_geometric_types; + diff --git a/examples/config/postgresql/types/schema.sql b/examples/config/postgresql/types/schema.sql index dfcb92c5..069c5545 100644 --- a/examples/config/postgresql/types/schema.sql +++ b/examples/config/postgresql/types/schema.sql @@ -67,6 +67,7 @@ CREATE TYPE c_enum AS ENUM ('small', 'medium', 'big'); CREATE TABLE postgres_special_types ( c_uuid UUID, c_enum c_enum, + c_qualified_enum public.c_enum, c_json JSON, c_json_string_override JSON, c_jsonb JSONB, diff --git a/unit-tests/CodegenTests/CodegenSchemaTests.cs b/unit-tests/CodegenTests/CodegenSchemaTests.cs index 0597220a..ae6b8dd1 100644 --- a/unit-tests/CodegenTests/CodegenSchemaTests.cs +++ b/unit-tests/CodegenTests/CodegenSchemaTests.cs @@ -1,6 +1,9 @@ +using Google.Protobuf; using Microsoft.CodeAnalysis.CSharp.Syntax; using NUnit.Framework; +using Plugin; using SqlcGenCsharp; +using System.Text; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace CodegenTests; @@ -55,6 +58,62 @@ public void TestSchemaScopedEnum() Assert.That(actual.IsSupersetOf(expected)); } + [Test] + public void TestDefaultSchemaEnumWithSchemaQualifiedType() + { + var request = new GenerateRequest + { + Settings = new Settings + { + Engine = "postgresql", + Codegen = new Codegen { Out = "DummyProject" } + }, + Catalog = new Catalog + { + DefaultSchema = "public", + Schemas = + { + new Schema + { + Name = "public", + Enums = + { + new Plugin.Enum + { + Name = "post_block_type", + Vals = { "text", "markdown", "media" } + } + }, + Tables = + { + new Table + { + Rel = new Identifier { Name = "post_block" }, + Columns = + { + new Column + { + Name = "block_type", + Type = new Identifier + { + Name = "post_block_type", + Schema = "public" + }, + NotNull = true + } + } + } + } + } + } + }, + PluginOptions = ByteString.CopyFrom("{}", Encoding.UTF8) + }; + + var response = CodeGenerator.Generate(request); + Assert.That(response.Result.Files.Any(f => f.Name == "Models.cs"), Is.True); + } + private static HashSet GetMemberNames(CompilationUnitSyntax compilationUnit) { var members = compilationUnit.DescendantNodes().OfType().ToList();