66import com .codingapi .dbstream .stream .DBEvent ;
77import com .codingapi .dbstream .stream .EventType ;
88import com .codingapi .dbstream .utils .SQLParamUtils ;
9+ import net .sf .jsqlparser .expression .Expression ;
10+ import net .sf .jsqlparser .expression .JdbcParameter ;
11+ import net .sf .jsqlparser .expression .operators .relational .ExpressionList ;
912import net .sf .jsqlparser .schema .Column ;
1013import net .sf .jsqlparser .schema .Table ;
1114import net .sf .jsqlparser .statement .Statement ;
1215import net .sf .jsqlparser .statement .insert .Insert ;
1316import net .sf .jsqlparser .statement .select .PlainSelect ;
1417import net .sf .jsqlparser .statement .select .Select ;
18+ import net .sf .jsqlparser .statement .select .Values ;
1519
1620import java .sql .SQLException ;
1721import java .util .ArrayList ;
@@ -100,7 +104,7 @@ private List<DBEvent> loadDefaultInsertEvent() {
100104 Object value = params .get (i );
101105 String column = insertColumns .get (i );
102106 DbColumn dbColumn = dbTable .getColumnByName (column );
103- if (dbColumn != null ) {
107+ if (dbColumn != null && ! dbColumn . isPrimaryKey () ) {
104108 event .set (dbColumn .getName (), value );
105109 }
106110 }
@@ -111,11 +115,17 @@ private List<DBEvent> loadDefaultInsertEvent() {
111115
112116
113117 private List <String > loadInsertColumns () {
114- List <String > columns = new ArrayList <>();
115- for (Column column : this .insert .getColumns ()) {
116- columns .add (column .getColumnName ());
118+ ExpressionList <?> values = this .insert .getValues ().getExpressions ();
119+ ExpressionList <Column > columns = this .insert .getColumns ();
120+ List <String > columnList = new ArrayList <>();
121+ for (int i =0 ;i <columns .size ();i ++) {
122+ Column column = columns .get (i );
123+ Expression expression = values .get (i );
124+ if (expression instanceof JdbcParameter ) {
125+ columnList .add (column .getColumnName ());
126+ }
117127 }
118- return columns ;
128+ return columnList ;
119129 }
120130
121131
0 commit comments