Skip to content

Bug: PostgreSQL BinaryBulkMerge not working when table has name "schema.table" #1132

Open
@Mewriick

Description

@Mewriick

Hello,

I try to pefrom BulkMerge on PostgreSQL, but I receive error message.

SQL Error [3F000]: ERROR: schema "_RepoDb_BinaryBulkMerge_configuration" does not exist
The problem is when RepoDb is try to create Temp table

   at Npgsql.Internal.NpgsqlConnector.<<ReadMessage>g__ReadMessageLong|226_0>d.MoveNext()
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at Npgsql.NpgsqlDataReader.<NextResult>d__47.MoveNext()
   at Npgsql.NpgsqlDataReader.<NextResult>d__47.MoveNext()
   at Npgsql.NpgsqlCommand.<ExecuteReader>d__124.MoveNext()
   at Npgsql.NpgsqlCommand.<ExecuteReader>d__124.MoveNext()
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at Npgsql.NpgsqlCommand.<ExecuteNonQuery>d__112.MoveNext()
   at RepoDb.DbConnectionExtension.<ExecuteNonQueryAsyncInternal>d__26.MoveNext()
   at RepoDb.NpgsqlConnectionExtension.<CreatePseudoTableAsync>d__86.MoveNext()
   at RepoDb.NpgsqlConnectionExtension.<PseudoBasedBinaryImportAsync>d__131.MoveNext()
   at RepoDb.NpgsqlConnectionExtension.<PseudoBasedBinaryImportAsync>d__131.MoveNext()
   at RepoDb.NpgsqlConnectionExtension.<BinaryBulkMergeBaseAsync>d__17`1.MoveNext()
   at RepoDb.NpgsqlConnectionExtension.<BinaryBulkMergeAsync>d__162`1.MoveNext()

Mapping

FluentMapper
	.Entity<Account>()
	.Table("configuration.account")
	.Primary(account => account.Id)
	.Identity(account => account.Id);

Used operation

var mergedRows = await connection.BinaryBulkMergeAsync(
  accounts,
  qualifiers: new List<Field> { new Field(nameof(Account.AccountNumber)) },
  mergeCommandType: RepoDb.Enumerations.PostgreSql.BulkImportMergeCommandType.OnConflictDoUpdate,
  //transaction: transaction,
  cancellationToken: cancellationToken);

Here is generated SQL for creating Temp table

SELECT "colums...." INTO TEMPORARY 
"_RepoDb_BinaryBulkMerge_configuration"."account" FROM "configuration"."account" WHERE (1 = 0);

I believe that the problem here is that there are quotes separated by comma. If I use this SQL everythink is working

SELECT "Id", "AccountNumber", "Status", "CgLevel", "Email", "Hwm"
INTO TEMPORARY "_RepoDb_BinaryBulkMerge_configuration.account" FROM "configuration"."account" WHERE (1 = 0);

Can you please help me, If I am doing something wrong with configuration?

Library Version:

Example: RepoDb v1.13.0 and RepoDb.PostgreSql.BulkOperation v1.13.0

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions