| 1774 | |
| 1775 | /** |
| 1776 | * @ticket 43589 |
| 1777 | */ |
| 1778 | public function test_insert_null_value_on_null_column_single() { |
| 1779 | global $wpdb; |
| 1780 | |
| 1781 | $wpdb->query( "CREATE TABLE {$wpdb->prefix}test_null_column( a INT );" ); |
| 1782 | |
| 1783 | $this->assertEquals( 1, $wpdb->insert( "{$wpdb->prefix}test_null_column", array( 'a' => null ) ) ); |
| 1784 | $this->assertNull( $wpdb->get_var( "SELECT a FROM {$wpdb->prefix}test_null_column" ) ); |
| 1785 | |
| 1786 | $wpdb->query( "DROP TABLE {$wpdb->prefix}test_null_column" ); |
| 1787 | } |
| 1788 | |
| 1789 | /** |
| 1790 | * @ticket 43589 |
| 1791 | */ |
| 1792 | public function test_update_null_value_on_null_column_single() { |
| 1793 | global $wpdb; |
| 1794 | |
| 1795 | $wpdb->query( "CREATE TABLE {$wpdb->prefix}test_null_column( a INT );" ); |
| 1796 | $wpdb->insert( "{$wpdb->prefix}test_null_column", array( 'a' => null ) ); |
| 1797 | |
| 1798 | $this->assertEquals( 0, $wpdb->update( "{$wpdb->prefix}test_null_column", array( 'a' => null ), array( 'a' => null ) ) ); |
| 1799 | $this->assertEquals( array( null ), $wpdb->get_col( "SELECT a FROM {$wpdb->prefix}test_null_column" ) ); |
| 1800 | |
| 1801 | $this->assertEquals( 1, $wpdb->update( "{$wpdb->prefix}test_null_column", array( 'a' => 2 ), array( 'a' => null ) ) ); |
| 1802 | $this->assertEquals( 2, $wpdb->get_var( "SELECT a FROM {$wpdb->prefix}test_null_column" ) ); |
| 1803 | |
| 1804 | $this->assertEquals( 1, $wpdb->update( "{$wpdb->prefix}test_null_column", array( 'a' => null ), array( 'a' => 2 ) ) ); |
| 1805 | $this->assertEquals( array( null ), $wpdb->get_col( "SELECT a FROM {$wpdb->prefix}test_null_column" ) ); |
| 1806 | |
| 1807 | $wpdb->query( "DROP TABLE {$wpdb->prefix}test_null_column" ); |
| 1808 | } |
| 1809 | |
| 1810 | /** |
| 1811 | * @ticket 43589 |
| 1812 | */ |
| 1813 | public function test_insert_null_value_on_not_null_column() { |
| 1814 | global $wpdb; |
| 1815 | |
| 1816 | $wpdb->query( "CREATE TABLE {$wpdb->prefix}test_not_null_column( a INT NOT NULL );" ); |
| 1817 | |
| 1818 | $wpdb->suppress_errors( true ); |
| 1819 | |
| 1820 | // Column 'a' cannot be null for query |
| 1821 | $wpdb->insert( "{$wpdb->prefix}test_not_null_column", array( 'a' => null ) ); |
| 1822 | $this->assertNotEmpty( $wpdb->last_error ); |
| 1823 | |
| 1824 | $wpdb->suppress_errors( false ); |
| 1825 | |
| 1826 | $this->assertEmpty( $wpdb->get_col( "SELECT a FROM {$wpdb->prefix}test_not_null_column" ) ); |
| 1827 | |
| 1828 | $wpdb->query( "DROP TABLE {$wpdb->prefix}test_not_null_column" ); |
| 1829 | } |
| 1830 | |
| 1831 | /** |
| 1832 | * @ticket 43589 |
| 1833 | */ |
| 1834 | public function test_update_null_value_on_not_null_column() { |
| 1835 | global $wpdb; |
| 1836 | |
| 1837 | $wpdb->query( "CREATE TABLE {$wpdb->prefix}test_not_null_column( a INT NOT NULL );" ); |
| 1838 | $wpdb->insert( "{$wpdb->prefix}test_not_null_column", array( 'a' => 1 ) ); |
| 1839 | |
| 1840 | $this->assertEquals( 1, $wpdb->update( "{$wpdb->prefix}test_not_null_column", array( 'a' => null ), array( 'a' => 1 ) ) ); |
| 1841 | $this->assertNotEmpty( $wpdb->get_results( 'SHOW WARNINGS' ) ); |
| 1842 | |
| 1843 | $this->assertEquals( 0, $wpdb->get_var( "SELECT a FROM {$wpdb->prefix}test_not_null_column" ) ); |
| 1844 | |
| 1845 | $wpdb->query( "DROP TABLE {$wpdb->prefix}test_not_null_column" ); |
| 1846 | } |
| 1847 | |
| 1848 | /** |
| 1849 | * @ticket 43589 |
| 1850 | */ |
| 1851 | public function test_update_null_value_on_not_null_column_strict() { |
| 1852 | global $wpdb; |
| 1853 | |
| 1854 | $wpdb->query( "CREATE TABLE {$wpdb->prefix}test_not_null_column( a INT NOT NULL );" ); |
| 1855 | $wpdb->insert( "{$wpdb->prefix}test_not_null_column", array( 'a' => 1 ) ); |
| 1856 | |
| 1857 | $mode = $wpdb->get_var( "SELECT @@sql_mode" ); |
| 1858 | $wpdb->query( "SET sql_mode = 'STRICT_ALL_TABLES'" ); |
| 1859 | |
| 1860 | $wpdb->suppress_errors( true ); |
| 1861 | |
| 1862 | $this->assertEquals( 0, $wpdb->update( "{$wpdb->prefix}test_not_null_column", array( 'a' => null ), array( 'a' => 1 ) ) ); |
| 1863 | $this->assertNotEmpty( $wpdb->last_error ); |
| 1864 | |
| 1865 | $wpdb->suppress_errors( false ); |
| 1866 | |
| 1867 | $this->assertEquals( 1, $wpdb->get_var( "SELECT a FROM {$wpdb->prefix}test_not_null_column" ) ); |
| 1868 | |
| 1869 | $wpdb->query( $wpdb->prepare( "SET sql_mode = %s", $mode ) ); |
| 1870 | $wpdb->query( "DROP TABLE {$wpdb->prefix}test_not_null_column" ); |
| 1871 | } |