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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions