34
34
import org .apache .seatunnel .connectors .seatunnel .jdbc .internal .converter .JdbcRowConverter ;
35
35
import org .apache .seatunnel .connectors .seatunnel .jdbc .internal .dialect .dialectenum .FieldIdeEnum ;
36
36
import org .apache .seatunnel .connectors .seatunnel .jdbc .source .JdbcSourceTable ;
37
+ import org .apache .seatunnel .connectors .seatunnel .jdbc .utils .DefaultValueUtils ;
37
38
38
39
import org .apache .commons .lang3 .StringUtils ;
39
40
@@ -533,7 +534,8 @@ default boolean columnExists(Connection connection, TablePath tablePath, String
533
534
default void applySchemaChange (
534
535
Connection connection , TablePath tablePath , AlterTableAddColumnEvent event )
535
536
throws SQLException {
536
- boolean sameCatalog = StringUtils .equals (dialectName (), event .getSourceDialectName ());
537
+ String sourceDialectName = event .getSourceDialectName ();
538
+ boolean sameCatalog = StringUtils .equals (dialectName (), sourceDialectName );
537
539
BasicTypeDefine typeDefine = getTypeConverter ().reconvert (event .getColumn ());
538
540
String columnType =
539
541
sameCatalog ? event .getColumn ().getSourceType () : typeDefine .getColumnType ();
@@ -568,7 +570,9 @@ default void applySchemaChange(
568
570
sqlBuilder .append (" NOT NULL" );
569
571
}
570
572
if (sameCatalog ) {
571
- sqlBuilder .append (" " ).append (sqlClauseWithDefaultValue (typeDefine ));
573
+ sqlBuilder
574
+ .append (" " )
575
+ .append (sqlClauseWithDefaultValue (typeDefine , sourceDialectName ));
572
576
}
573
577
}
574
578
@@ -612,8 +616,8 @@ default void applySchemaChange(
612
616
}
613
617
return ;
614
618
}
615
-
616
- boolean sameCatalog = StringUtils .equals (dialectName (), event . getSourceDialectName () );
619
+ String sourceDialectName = event . getSourceDialectName ();
620
+ boolean sameCatalog = StringUtils .equals (dialectName (), sourceDialectName );
617
621
BasicTypeDefine typeDefine = getTypeConverter ().reconvert (event .getColumn ());
618
622
String columnType =
619
623
sameCatalog ? event .getColumn ().getSourceType () : typeDefine .getColumnType ();
@@ -649,7 +653,9 @@ default void applySchemaChange(
649
653
sqlBuilder .append (" NOT NULL" );
650
654
}
651
655
if (sameCatalog ) {
652
- sqlBuilder .append (" " ).append (sqlClauseWithDefaultValue (typeDefine ));
656
+ sqlBuilder
657
+ .append (" " )
658
+ .append (sqlClauseWithDefaultValue (typeDefine , sourceDialectName ));
653
659
}
654
660
}
655
661
if (event .getColumn ().getComment () != null ) {
@@ -674,8 +680,8 @@ default void applySchemaChange(
674
680
default void applySchemaChange (
675
681
Connection connection , TablePath tablePath , AlterTableModifyColumnEvent event )
676
682
throws SQLException {
677
-
678
- boolean sameCatalog = StringUtils .equals (dialectName (), event . getSourceDialectName () );
683
+ String sourceDialectName = event . getSourceDialectName ();
684
+ boolean sameCatalog = StringUtils .equals (dialectName (), sourceDialectName );
679
685
BasicTypeDefine typeDefine = getTypeConverter ().reconvert (event .getColumn ());
680
686
String columnType =
681
687
sameCatalog ? event .getColumn ().getSourceType () : typeDefine .getColumnType ();
@@ -710,7 +716,9 @@ default void applySchemaChange(
710
716
sqlBuilder .append (" NOT NULL" );
711
717
}
712
718
if (sameCatalog ) {
713
- sqlBuilder .append (" " ).append (sqlClauseWithDefaultValue (typeDefine ));
719
+ sqlBuilder
720
+ .append (" " )
721
+ .append (sqlClauseWithDefaultValue (typeDefine , sourceDialectName ));
714
722
}
715
723
}
716
724
if (event .getColumn ().getComment () != null ) {
@@ -749,13 +757,15 @@ default void applySchemaChange(
749
757
* Get the SQL clause for define column default value
750
758
*
751
759
* @param columnDefine column define
760
+ * @param sourceDialectName
752
761
* @return SQL clause for define default value
753
762
*/
754
- default String sqlClauseWithDefaultValue (BasicTypeDefine columnDefine ) {
763
+ default String sqlClauseWithDefaultValue (
764
+ BasicTypeDefine columnDefine , String sourceDialectName ) {
755
765
Object defaultValue = columnDefine .getDefaultValue ();
756
766
if (Objects .nonNull (defaultValue )
757
- && needsQuotesWithDefaultValue (columnDefine . getColumnType () )
758
- && !isSpecialDefaultValue (defaultValue )) {
767
+ && needsQuotesWithDefaultValue (columnDefine )
768
+ && !isSpecialDefaultValue (defaultValue , sourceDialectName )) {
759
769
defaultValue = quotesDefaultValue (defaultValue );
760
770
}
761
771
return "DEFAULT " + defaultValue ;
@@ -774,20 +784,24 @@ default boolean supportDefaultValue(BasicTypeDefine columnDefine) {
774
784
/**
775
785
* whether quotes with default value
776
786
*
777
- * @param sqlType sql type of column
787
+ * @param columnDefine column define
778
788
* @return whether needs quotes with the type
779
789
*/
780
- default boolean needsQuotesWithDefaultValue (String sqlType ) {
790
+ default boolean needsQuotesWithDefaultValue (BasicTypeDefine columnDefine ) {
781
791
return false ;
782
792
}
783
793
784
794
/**
785
795
* whether is special default value e.g. current_timestamp
786
796
*
787
797
* @param defaultValue default value of column
798
+ * @param sourceDialectName source dialect name
788
799
* @return whether is special default value e.g current_timestamp
789
800
*/
790
- default boolean isSpecialDefaultValue (Object defaultValue ) {
801
+ default boolean isSpecialDefaultValue (Object defaultValue , String sourceDialectName ) {
802
+ if (DatabaseIdentifier .MYSQL .equals (sourceDialectName )) {
803
+ return DefaultValueUtils .isMysqlSpecialDefaultValue (defaultValue );
804
+ }
791
805
return false ;
792
806
}
793
807
0 commit comments