sqlkata / querybuilder

SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MySql, PostgreSql, Oracle, Sqlite and Firebird
https://sqlkata.com
MIT License
3.1k stars 498 forks source link

postgresql Compiler call InsertGetId reutrn 0; #321

Open inernoro opened 4 years ago

inernoro commented 4 years ago

call InsertGetId postgresql reutrn 0;

sqlserver and mysql are normal;

    class Program
    {

        /*
         call InsertGetId postgresql reutrn 0;
         sqlserver and mysql are normal;

             ==postgresql create database code==
             //postgresql version 9.5.20
             //platform Docker version 19.03.5, build 633a0ea838 | docker-compose version 1.24.1, build 4667896b
             //C# version .net framework 4.7.2
             //sqlkata/sqlkata.execution version 1.1.7
             //pgsqlconnection client-name=>Npgsql version 4.1.2

            other packages
            <?xml version="1.0" encoding="utf-8"?>
            <packages>
              <package id="Dapper" version="1.50.5" targetFramework="net472" />
              <package id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" targetFramework="net472" />
              <package id="Npgsql" version="4.1.2" targetFramework="net472" />
              <package id="SqlKata" version="1.1.7" targetFramework="net472" />
              <package id="SqlKata.Execution" version="1.1.7" targetFramework="net472" />
              <package id="System.Buffers" version="4.5.0" targetFramework="net472" />
              <package id="System.Memory" version="4.5.3" targetFramework="net472" />
              <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
              <package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0" targetFramework="net472" />
              <package id="System.Text.Encodings.Web" version="4.6.0" targetFramework="net472" />
              <package id="System.Text.Json" version="4.6.0" targetFramework="net472" />
              <package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net472" />
              <package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
            </packages>

            postgresql script:

            create database test_bug_database;

            create table if not exists t_test_table(
            "test_primary_key" serial not null,
            "name" varchar(10) not null
            );
            alter table "t_test_table"
                add constraint t_test_table_pk
                    primary key ("test_primary_key");
            --select * from "t_test_table" 

         */

        static void Main(string[] args)
        {
            var conn = "Server=t.fastcore.net;Database=test_bug_database;User ID=root;Password=123";

            var compose = new PostgresCompiler();
            var query = new QueryFactory(new NpgsqlConnection(conn), compose);
            // This 'data' is 0
            var data = query.Query("t_test_table").InsertGetId<int>(new { name = "testData" });

        }
        class t_test_table
        {
            public int test_primary_key { get; set; }
            public string name { get; set; }
        }
jeremyalan commented 4 years ago

I'm getting a similar issue - seems to work as expected on SqlServer, switch to Postgres, and returning 0. Any resolution on this?

jeremyalan commented 4 years ago

I found this commit: https://github.com/sqlkata/querybuilder/commit/16e658f5cb0d7e74dd37557c469d649d434f8241

It looks like this hasn't been released yet, so I was able to get it working using one of the CI builds from NuGet.

Is there a plan to make this part of an "official" 1.8 or 2.0 release soon?

inernoro commented 4 years ago

@jeremyalan Thank you. I didn't pay attention to it before. Compile and release manually to generate a new version. It's just that the system maintenance is troublesome