Exemplo n.º 1
0
 public function testStringToIndexStatement_003()
 {
     $fieldString = "\n                <field>\n                    <name>group_id</name>\n                    <type>integer</type>\n                </field>";
     $field = Setup_Backend_Schema_Field_Factory::factory('Xml', $fieldString);
     $this->_backend->addCol($this->_table->name, $field);
     $fieldString = "\n                <field>\n                    <name>account_id</name>\n                    <type>integer</type>\n                </field>";
     $field = Setup_Backend_Schema_Field_Factory::factory('Xml', $fieldString);
     $this->_backend->addCol($this->_table->name, $field);
     $string = "\n                <index>\n                    <name>group_id-account_id</name>\n                    <unique>true</unique>\n                    <field>\n                        <name>group_id</name>\n                    </field>\n                    <field>\n                        <name>account_id</name>\n                    </field>\n                </index> ";
     $index = Setup_Backend_Schema_Index_Factory::factory('Xml', $string);
     $this->_backend->addIndex($this->_table->name, $index);
     $db = Tinebase_Core::getDb();
     $tableName = SQL_TABLE_PREFIX . $this->_table->name;
     $db->insert($tableName, array('name' => 'test1', 'group_id' => 1, 'account_id' => 1));
     $db->insert($tableName, array('name' => 'test2', 'group_id' => 1, 'account_id' => 2));
     $db->insert($tableName, array('name' => 'test3', 'group_id' => 2, 'account_id' => 1));
     $this->setExpectedException('Zend_Db_Statement_Exception');
     //unique constraint violation
     $db->insert($tableName, array('name' => 'test4', 'group_id' => 1, 'account_id' => 1));
 }
 /**
  * create the right postgreSql-statement-snippet for columns/fields
  * PostgreSQL has not unsigned modifier
  *
  * @param Setup_Backend_Schema_Field_Abstract field / column
  * @param String | optional $_tableName [Not used in this backend (PostgreSQL)]
  * @return string
  */
 public function getFieldDeclarations(Setup_Backend_Schema_Field_Abstract $_field, $_tableName = '')
 {
     $_field->unsigned = false;
     $fieldDeclarations = parent::getFieldDeclarations($_field, $_tableName);
     $fieldTypes = array('tinyint', 'mediumint', 'bigint', 'int', 'integer');
     foreach ($fieldTypes as $fieldType) {
         $fieldDeclarations = preg_replace('/ ' . $fieldType . '\\(\\d*\\)/', ' integer', $fieldDeclarations);
     }
     $fieldDeclarations = preg_replace('/ smallint\\(\\d*\\)/', ' smallint', $fieldDeclarations);
     return $fieldDeclarations;
 }
 /**
  * Override method: not null option has to be handled differently for enum data type
  * @see tine20/Setup/Backend/Setup_Backend_Abstract#_addDeclarationNotNull($_buffer, $_field)
  */
 protected function _addDeclarationNotNull(array $_buffer, Setup_Backend_Schema_Field_Abstract $_field)
 {
     if ($_field->type == 'enum') {
         return $_buffer;
     }
     return parent::_addDeclarationNotNull($_buffer, $_field);
 }