Skip to content

Commit 47d4169

Browse files
authored
fix(postgres): fix INSERT statements when no value fields (#699)
1 parent 777a5ee commit 47d4169

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

src/ops/targets/postgres.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,7 @@ impl ExportContext {
197197
.map(|f| format!("\"{}\"", f.name))
198198
.collect::<Vec<_>>()
199199
.join(", ");
200-
let value_fields = value_fields_schema
201-
.iter()
200+
let all_fields = (key_fields_schema.iter().chain(value_fields_schema.iter()))
202201
.map(|f| format!("\"{}\"", f.name))
203202
.collect::<Vec<_>>()
204203
.join(", ");
@@ -211,15 +210,15 @@ impl ExportContext {
211210
Ok(Self {
212211
db_ref,
213212
db_pool,
213+
upsert_sql_prefix: format!("INSERT INTO {table_name} ({all_fields}) VALUES "),
214+
upsert_sql_suffix: if value_fields_schema.is_empty() {
215+
format!(" ON CONFLICT ({key_fields}) DO NOTHING;")
216+
} else {
217+
format!(" ON CONFLICT ({key_fields}) DO UPDATE SET {set_value_fields};")
218+
},
219+
delete_sql_prefix: format!("DELETE FROM {table_name} WHERE "),
214220
key_fields_schema,
215221
value_fields_schema,
216-
upsert_sql_prefix: format!(
217-
"INSERT INTO {table_name} ({key_fields}, {value_fields}) VALUES "
218-
),
219-
upsert_sql_suffix: format!(
220-
" ON CONFLICT ({key_fields}) DO UPDATE SET {set_value_fields};"
221-
),
222-
delete_sql_prefix: format!("DELETE FROM {table_name} WHERE "),
223222
})
224223
}
225224
}

0 commit comments

Comments
 (0)