Skip to content

System.NotSupportedException: has unsupported column type when trying to use with postgresql enum #399

@AlenGeoAlex

Description

@AlenGeoAlex

Hey folks! Hope you are doing well...

I was exploring the plugin and was faced with weird issue with enum. The database is PG17

Below is the error

# package csharp
error generating code: 
Unhandled Exception:
System.NotSupportedException: Column block_type has unsupported column type: post_block_type in NpgsqlDriver
   at SqlcGenCsharp.Drivers.DbDriver.GetCsharpTypeWithoutNullableSuffix(Column column, Query query)
   at EnumDbDriver.GetCsharpTypeWithoutNullableSuffix(Column column, Query query)
   at SqlcGenCsharp.Drivers.DbDriver.GetCsharpType(Column column, Query query)
   at SqlcGenCsharp.Generators.DataClassesGen.<>c__DisplayClass4_1.<GenerateAsCLass>b__2(Column column)
   at System.Linq.Enumerable.SelectIListIterator`2[[Plugin.Column, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=4.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].Fill(IList`1 , Span`1 , Func`2 )
   at System.Linq.Enumerable.SelectIListIterator`2[[Plugin.Column, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=4.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].ToArray()
   at System.Linq.Enumerable.ToArray[MemberDeclarationSyntax](IEnumerable`1 )
   at SqlcGenCsharp.Generators.DataClassesGen.<>c__DisplayClass4_0.<GenerateAsCLass>g__ColumnsToProperties|0()
   at SqlcGenCsharp.Generators.DataClassesGen.GenerateAsCLass(String className, IList`1 columns, Query query)
   at SqlcGenCsharp.Generators.DataClassesGen.Generate(String name, Nullable`1 classMember, IList`1 columns, Options options, Query query)
   at SqlcGenCsharp.Generators.ModelsGen.<GenerateDataClasses>b__14_3(<>f__AnonymousType1`2 <>h__TransparentIdentifier1)
   at System.Linq.Utilities.<>c__DisplayClass2_0`3[[<>f__AnonymousType0`2[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Plugin.Table, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Plugin.Table, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], CodeGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[<>f__AnonymousType1`2[[<>f__AnonymousType0`2[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Plugin.Table, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Plugin.Table, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], CodeGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], CodeGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=4.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].<CombineSelectors>b__0(<>f__AnonymousType0`2 x)
   at System.Linq.Enumerable.SelectEnumerableIterator`2[[<>f__AnonymousType0`2[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Plugin.Table, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Plugin.Table, GeneratedProtobuf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], CodeGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=4.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].ToArray()
   at System.Linq.Enumerable.ToArray[MemberDeclarationSyntax](IEnumerable`1 )
   at SqlcGenCsharp.Generators.ModelsGen.GenerateDataClasses(Dictionary`2 tables)
   at SqlcGenCsharp.Generators.ModelsGen.GenerateFile(Dictionary`2 tables, Dictionary`2 enums)
   at SqlcGenCsharp.CodeGenerator.Generate(GenerateRequest generateRequest)
   at SqlcGenCsharp.PluginRunner.Run()
   at Program.<Main>$(String[] args)

This is the config

version: "2"
plugins:
  - name: csharp
    wasm:
      url: https://github.com/DaredevilOSS/sqlc-gen-csharp/releases/download/v0.22.2/sqlc-gen-csharp.wasm
      sha256: 40af6dbb1447fb42f9e12d094a79e5adbfcb3669470cf7055896a179ee2e7427
sql:
  - schema: "schema.sql"
    queries: "Queries"
    engine: postgresql
    codegen:
      - plugin: csharp
        out: Database.Gen
        options:
          useDapper: true
          withAsyncSuffix: true
          targetFramework: net8.0
          generateCsproj: true
          namespaceName: Database.Gen
          overrides:
            - column: "*:block_type"
              csharp_type:
                type: "string"
                notNull: true

This is the part of the schema


CREATE TYPE public.post_block_type AS ENUM (
    'text',
    'markdown',
    'media',
    'code',
    'html',
    'card_content',
    'embed'
);

CREATE TABLE public.post_block (
    id character varying(26) NOT NULL,
    block_ordinal integer NOT NULL,
    block_type public.post_block_type NOT NULL,
    post_id character varying(36) NOT NULL,
    content_data jsonb DEFAULT '{}'::jsonb NOT NULL,
    revision_id character varying(26) NOT NULL,
    vector_text tsvector
);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions