@@ -1591,6 +1591,13 @@ trait AlterTableTests extends SharedSparkSession with QueryErrorsBase {
1591
1591
}
1592
1592
}
1593
1593
1594
+ private def checkConflictSpecialColNameResult (table : String ): Unit = {
1595
+ val result = sql(s " SELECT * FROM $table" ).collect()
1596
+ assert(result.length == 1 )
1597
+ assert(! result(0 ).getBoolean(0 ))
1598
+ assert(result(0 ).get(1 ) != null )
1599
+ }
1600
+
1594
1601
test(" Add column with special column name default value conflicting with column name" ) {
1595
1602
withSQLConf(SQLConf .DEFAULT_COLUMN_ALLOWED_PROVIDERS .key -> s " $v2Format, " ) {
1596
1603
val t = fullTableName(" table_name" )
@@ -1599,40 +1606,28 @@ trait AlterTableTests extends SharedSparkSession with QueryErrorsBase {
1599
1606
sql(s " CREATE TABLE $t (i boolean) USING $v2Format" )
1600
1607
sql(s " ALTER TABLE $t ADD COLUMN s timestamp DEFAULT current_timestamp " )
1601
1608
sql(s " INSERT INTO $t(i) VALUES(false) " )
1602
- val result = sql(s " SELECT * FROM $t" ).collect()
1603
- assert(result.length == 1 )
1604
- assert(! result(0 ).getBoolean(0 ))
1605
- assert(result(0 ).getTimestamp(1 ) != null )
1609
+ checkConflictSpecialColNameResult(t)
1606
1610
}
1607
1611
// There is a default value with special column name 'current_user' but in uppercase.
1608
1612
withTable(t) {
1609
1613
sql(s " CREATE TABLE $t (i boolean) USING $v2Format" )
1610
1614
sql(s " ALTER TABLE $t ADD COLUMN s string DEFAULT CURRENT_USER " )
1611
1615
sql(s " INSERT INTO $t(i) VALUES(false) " )
1612
- val result = sql(s " SELECT * FROM $t" ).collect()
1613
- assert(result.length == 1 )
1614
- assert(! result(0 ).getBoolean(0 ))
1615
- assert(result(0 ).getString(1 ) != null )
1616
+ checkConflictSpecialColNameResult(t)
1616
1617
}
1617
1618
// There is a default value with special column name same as current column name
1618
1619
withTable(t) {
1619
1620
sql(s " CREATE TABLE $t (b boolean) USING $v2Format" )
1620
1621
sql(s " ALTER TABLE $t ADD COLUMN current_timestamp timestamp DEFAULT current_timestamp " )
1621
1622
sql(s " INSERT INTO $t(b) VALUES(false) " )
1622
- val result = sql(s " SELECT * FROM $t" ).collect()
1623
- assert(result.length == 1 )
1624
- assert(! result(0 ).getBoolean(0 ))
1625
- assert(result(0 ).getTimestamp(1 ) != null )
1623
+ checkConflictSpecialColNameResult(t)
1626
1624
}
1627
1625
// There is a default value with special column name same as another column name
1628
1626
withTable(t) {
1629
1627
sql(s " CREATE TABLE $t (current_date boolean) USING $v2Format" )
1630
1628
sql(s " ALTER TABLE $t ADD COLUMN s date DEFAULT current_date " )
1631
1629
sql(s " INSERT INTO $t(current_date) VALUES(false) " )
1632
- val result = sql(s " SELECT * FROM $t" ).collect()
1633
- assert(result.length == 1 )
1634
- assert(! result(0 ).getBoolean(0 ))
1635
- assert(result(0 ).getDate(1 ) != null )
1630
+ checkConflictSpecialColNameResult(t)
1636
1631
}
1637
1632
}
1638
1633
}
@@ -1645,40 +1640,28 @@ trait AlterTableTests extends SharedSparkSession with QueryErrorsBase {
1645
1640
sql(s " CREATE TABLE $t (i boolean, s timestamp) USING $v2Format" )
1646
1641
sql(s " ALTER TABLE $t ALTER COLUMN s SET DEFAULT current_timestamp " )
1647
1642
sql(s " INSERT INTO $t(i) VALUES(false) " )
1648
- val result = sql(s " SELECT * FROM $t" ).collect()
1649
- assert(result.length == 1 )
1650
- assert(! result(0 ).getBoolean(0 ))
1651
- assert(result(0 ).getTimestamp(1 ) != null )
1643
+ checkConflictSpecialColNameResult(t)
1652
1644
}
1653
1645
// There is a default value with special column name 'current_user' but in uppercase.
1654
1646
withTable(t) {
1655
1647
sql(s " CREATE TABLE $t (i boolean, s string) USING $v2Format" )
1656
1648
sql(s " ALTER TABLE $t ALTER COLUMN s SET DEFAULT CURRENT_USER " )
1657
1649
sql(s " INSERT INTO $t(i) VALUES(false) " )
1658
- val result = sql(s " SELECT * FROM $t" ).collect()
1659
- assert(result.length == 1 )
1660
- assert(! result(0 ).getBoolean(0 ))
1661
- assert(result(0 ).getString(1 ) != null )
1650
+ checkConflictSpecialColNameResult(t)
1662
1651
}
1663
1652
// There is a default value with special column name same as current column name
1664
1653
withTable(t) {
1665
- sql(s " CREATE TABLE $t (current_timestamp timestamp, b boolean ) USING $v2Format" )
1654
+ sql(s " CREATE TABLE $t (b boolean, current_timestamp timestamp ) USING $v2Format" )
1666
1655
sql(s " ALTER TABLE $t ALTER COLUMN current_timestamp SET DEFAULT current_timestamp " )
1667
1656
sql(s " INSERT INTO $t(b) VALUES(false) " )
1668
- val result = sql(s " SELECT * FROM $t" ).collect()
1669
- assert(result.length == 1 )
1670
- assert(result(0 ).getTimestamp(0 ) != null )
1671
- assert(! result(0 ).getBoolean(1 ))
1657
+ checkConflictSpecialColNameResult(t)
1672
1658
}
1673
1659
// There is a default value with special column name same as another column name
1674
1660
withTable(t) {
1675
1661
sql(s " CREATE TABLE $t (current_date boolean, s date) USING $v2Format" )
1676
1662
sql(s " ALTER TABLE $t ALTER COLUMN s SET DEFAULT current_date " )
1677
1663
sql(s " INSERT INTO $t(current_date) VALUES(false) " )
1678
- val result = sql(s " SELECT * FROM $t" ).collect()
1679
- assert(result.length == 1 )
1680
- assert(! result(0 ).getBoolean(0 ))
1681
- assert(result(0 ).getDate(1 ) != null )
1664
+ checkConflictSpecialColNameResult(t)
1682
1665
}
1683
1666
}
1684
1667
}
0 commit comments