Merge pull request #3321 from marc1706/ticket/13282

[ticket/13282] Use 0 as default for integer type columns in postgresql
This commit is contained in:
Joas Schilling 2015-01-23 17:32:28 +01:00
commit 9cdbb69f9e
3 changed files with 87 additions and 1 deletions

View file

@ -1574,7 +1574,15 @@ class tools
}
else
{
$default_val = "'" . $column_data[1] . "'";
// Integers need to have 0 instead of empty string as default
if (strpos($column_type, 'INT') === 0)
{
$default_val = '0';
}
else
{
$default_val = "'" . $column_data[1] . "'";
}
$return_array['null'] = 'NULL';
$sql .= 'NULL ';
}

View file

@ -415,4 +415,11 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
$this->tools->sql_create_unique_index('prefix_table_name', 'i_uniq_ts_id', array('c_timestamp', 'c_id'));
$this->assertTrue($this->tools->sql_unique_index_exists('prefix_table_name', 'i_uniq_ts_id'));
}
public function test_create_int_default_null()
{
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_bug_13282'));
$this->assertTrue($this->tools->sql_column_add('prefix_table_name', 'c_bug_13282', array('TINT:2')));
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_bug_13282'));
}
}

View file

@ -0,0 +1,71 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
/**
* @group functional
*/
class phpbb_functional_acp_profile_field_test extends phpbb_functional_test_case
{
public function setUp()
{
parent::setUp();
$this->login();
$this->admin_login();
$this->add_lang('acp/profile');
}
public function data_add_profile_field()
{
return array(
array('bool', 'profilefields.type.bool',
array(
'lang_options[0]' => 'foo',
'lang_options[1]' => 'bar',
),
array(),
),
array('dropdown', 'profilefields.type.dropdown',
array(
'lang_options' => "foo\nbar\nbar\nfoo",
),
array(),
),
);
}
/**
* @dataProvider data_add_profile_field
*/
public function test_add_profile_field($name, $type, $page1_settings, $page2_settings)
{
// Custom profile fields page
$crawler = self::request('GET', 'adm/index.php?i=acp_profile&mode=profile&sid=' . $this->sid);
// these language strings are html
$form = $crawler->selectButton('Create new field')->form(array(
'field_ident' => $name,
'field_type' => $type,
));
$crawler = self::submit($form);
// Fill form for profile field options
$form = $crawler->selectButton('Profile type specific options')->form($page1_settings);
$crawler = self::submit($form);
// Fill form for profile field specific options
$form = $crawler->selectButton('Save')->form($page2_settings);
$crawler= self::submit($form);
$this->assertContainsLang('ADDED_PROFILE_FIELD', $crawler->text());
}
}