[
https://issues.apache.org/jira/browse/GOBBLIN-1584?focusedWorklogId=692184&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-692184
]
ASF GitHub Bot logged work on GOBBLIN-1584:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 08/Dec/21 02:15
Start Date: 08/Dec/21 02:15
Worklog Time Spent: 10m
Work Description: phet commented on a change in pull request #3438:
URL: https://github.com/apache/gobblin/pull/3438#discussion_r764494243
##########
File path:
gobblin-modules/gobblin-sql/src/main/java/org/apache/gobblin/writer/commands/MySqlBufferedInserter.java
##########
@@ -84,6 +96,13 @@ protected void initializeBatch(String databaseName, String
table)
+ " due to # of params limitation " + this.maxParamSize + " , # of
columns: " + this.columnNames.size());
}
this.batchSize = actualBatchSize;
+
+ // Use separate insertion statement if replacements are allowed
Review comment:
comment could potentially live in `createInsertStatementStr` javadoc
##########
File path:
gobblin-modules/gobblin-sql/src/main/java/org/apache/gobblin/writer/commands/PostgresWriterCommands.java
##########
@@ -51,7 +51,11 @@
private final JdbcBufferedInserter jdbcBufferedWriter;
private final Connection conn;
- public PostgresWriterCommands(State state, Connection conn) {
+ public PostgresWriterCommands(State state, Connection conn, boolean
overwriteRecords) throws IllegalArgumentException {
+ if (overwriteRecords) {
+ throw new IllegalArgumentException("Replace existing records is not
supported in PostgresWriterCommands");
Review comment:
somewhat esoteric, but canonical practice might recommend
`UnsupportedOperationException` in this situation - see, e.g.:
https://stackoverflow.com/a/49749857
##########
File path:
gobblin-modules/gobblin-sql/src/test/java/org/apache/gobblin/writer/MySqlBufferedInserterTest.java
##########
@@ -63,7 +93,7 @@ public void testMySqlBufferedInsert() throws SQLException {
}
inserter.flush();
- verify(conn, times(2)).prepareStatement(anyString());
+ verify(conn, times(2)).prepareStatement(matches("REPLACE INTO .*"));
Review comment:
ideally we'd have one, but pragmatically I understand the imperative to
ship these changes, so up to you whether we leave this as tech debt IoU to
return to
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 692184)
Time Spent: 3h 40m (was: 3.5h)
> Add Replace Logic To Mysql Writer
> ---------------------------------
>
> Key: GOBBLIN-1584
> URL: https://issues.apache.org/jira/browse/GOBBLIN-1584
> Project: Apache Gobblin
> Issue Type: Improvement
> Components: gobblin-service
> Reporter: Urmi Mustafi
> Assignee: Abhishek Tiwari
> Priority: Major
> Time Spent: 3h 40m
> Remaining Estimate: 0h
>
> We only supportĀ {{insertion}} of new values into tables, not
> {{{}update/upsert{}}}. If you run an ingestion job with a record containing a
> record with the same primary key the whole job will fail because of the
> duplicate entry. We don't expect ingestion jobs to always containĀ _only new_
> records, so we should handle duplicate entries, ingestion of data already in
> the table or updates to old values. The insert vs. replace logic should be
> configurable to the user as well.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)