@@ -368,7 +368,7 @@ public function testCreateTable() {
368368 'Type ' => 'bigint(20) unsigned ' ,
369369 'Null ' => 'NO ' ,
370370 'Key ' => 'PRI ' ,
371- 'Default ' => null ,
371+ 'Default ' => ' 0 ' ,
372372 'Extra ' => '' ,
373373 ),
374374 (object ) array (
@@ -1085,7 +1085,7 @@ public function testNestedTransactionWorkComplexModify() {
10851085 'Type ' => 'integer ' ,
10861086 'Null ' => 'NO ' ,
10871087 'Key ' => 'PRI ' ,
1088- 'Default ' => null ,
1088+ 'Default ' => ' 0 ' ,
10891089 'Extra ' => '' ,
10901090 ),
10911091 (object ) array (
@@ -1946,29 +1946,30 @@ public function testOnConflictReplace()
19461946 name varchar(20) NOT NULL default 'default-value',
19471947 unique_name varchar(20) NOT NULL default 'unique-default-value',
19481948 inline_unique_name varchar(20) NOT NULL default 'inline-unique-default-value',
1949+ no_default varchar(20) NOT NULL,
19491950 UNIQUE KEY unique_name (unique_name)
19501951 ); "
19511952 );
19521953
19531954 $ this ->assertQuery (
1954- "INSERT INTO _tmp_table (ID, name, unique_name, inline_unique_name) VALUES (1, null, null, null); "
1955+ "INSERT INTO _tmp_table VALUES (1, null, null, null, '' ); "
19551956 );
1956- $ result = $ this ->assertQuery ("SELECT name, unique_name, inline_unique_name FROM _tmp_table " );
1957-
1958- $ result = $ this ->assertQuery ("SELECT name, unique_name, inline_unique_name FROM _tmp_table " );
1957+ $ result = $ this ->assertQuery ("SELECT * FROM _tmp_table WHERE ID = 1 " );
19591958 $ this ->assertEquals (
19601959 array (
19611960 (object ) array (
1961+ 'ID ' => '1 ' ,
19621962 'name ' => 'default-value ' ,
19631963 'unique_name ' => 'unique-default-value ' ,
19641964 'inline_unique_name ' => 'inline-unique-default-value ' ,
1965+ 'no_default ' => '' ,
19651966 ),
19661967 ),
19671968 $ result
19681969 );
19691970
19701971 $ this ->assertQuery (
1971- "INSERT INTO _tmp_table (ID, name, unique_name, inline_unique_name) VALUES (2, '1', '2', '3'); "
1972+ "INSERT INTO _tmp_table VALUES (2, '1', '2', '3', '4 '); "
19721973 );
19731974 $ this ->assertQuery (
19741975 "UPDATE _tmp_table SET name = null WHERE ID = 2; "
@@ -1995,5 +1996,60 @@ public function testOnConflictReplace()
19951996 "UPDATE _tmp_table SET inline_unique_name = NULL WHERE ID = 2; " ,
19961997 ''
19971998 );
1999+
2000+ // WPDB allows for NULL values in columns that don't have a default value and a NOT NULL constraint
2001+ $ this ->assertQuery (
2002+ "UPDATE _tmp_table SET no_default = NULL WHERE ID = 2; " ,
2003+ ''
2004+ );
2005+
2006+ $ result = $ this ->assertQuery ("SELECT * FROM _tmp_table WHERE ID = 2 " );
2007+ $ this ->assertEquals (
2008+ array (
2009+ (object ) array (
2010+ 'ID ' => '2 ' ,
2011+ 'name ' => 'default-value ' ,
2012+ 'unique_name ' => '2 ' ,
2013+ 'inline_unique_name ' => 'inline-unique-default-value ' ,
2014+ 'no_default ' => '' ,
2015+ ),
2016+ ),
2017+ $ result
2018+ );
2019+ }
2020+
2021+ public function testDefaultNullValue ()
2022+ {
2023+ $ this ->assertQuery (
2024+ "CREATE TABLE _tmp_table (
2025+ name varchar(20) NOT NULL default NULL,
2026+ no_default varchar(20) NOT NULL
2027+ ); "
2028+ );
2029+
2030+ $ result = $ this ->assertQuery (
2031+ "DESCRIBE _tmp_table; "
2032+ );
2033+ $ this ->assertEquals (
2034+ array (
2035+ (object ) array (
2036+ 'Field ' => 'name ' ,
2037+ 'Type ' => 'varchar(20) ' ,
2038+ 'Null ' => 'NO ' ,
2039+ 'Key ' => '' ,
2040+ 'Default ' => 'NULL ' ,
2041+ 'Extra ' => '' ,
2042+ ),
2043+ (object ) array (
2044+ 'Field ' => 'no_default ' ,
2045+ 'Type ' => 'varchar(20) ' ,
2046+ 'Null ' => 'NO ' ,
2047+ 'Key ' => '' ,
2048+ 'Default ' => null ,
2049+ 'Extra ' => '' ,
2050+ ),
2051+ ),
2052+ $ result
2053+ );
19982054 }
19992055}
0 commit comments