/** {@inheritdoc} */ public function getNativeDatatype($type, $length = null, $cast = false) { if ($cast) { switch ($type) { case Column::TYPE_INTEGER: return 'SIGNED'; case Column::TYPE_VARCHAR: if ($length === null) { return 'CHAR'; } elseif (ctype_digit((string) $length)) { return "CHAR({$length})"; } else { throw new \InvalidArgumentException('Invalid length: ' . $length); } case Column::TYPE_TIMESTAMP: return 'DATETIME'; case Column::TYPE_BOOL: throw new \DomainException('Values cannot be cast to BOOL'); case Column::TYPE_CLOB: return 'CHAR'; case Column::TYPE_BLOB: return 'BINARY'; case Column::TYPE_DECIMAL: return str_replace('NUMERIC', 'DECIMAL', parent::getNativeDatatype($type, $length, $cast)); case Column::TYPE_FLOAT: return 'DECIMAL'; default: return parent::getNativeDatatype($type, $length, $cast); } } else { switch ($type) { case Column::TYPE_INTEGER: if ($length == 8) { return 'TINYINT'; } return parent::getNativeDatatype($type, $length, $cast); case Column::TYPE_TIMESTAMP: return 'DATETIME'; case Column::TYPE_BOOL: if (in_array(Column::TYPE_BOOL, $this->emulatedDatatypes)) { return 'TINYINT'; } else { throw new \DomainException('BOOL not supported by MySQL and not emulated'); } case Column::TYPE_CLOB: return 'LONGTEXT'; case Column::TYPE_BLOB: return 'LONGBLOB'; default: return parent::getNativeDatatype($type, $length, $cast); } } }
/** {@inheritdoc} */ public function getNativeDatatype($type, $length = null, $cast = false) { switch ($type) { case Column::TYPE_INTEGER: return 'INTEGER'; case Column::TYPE_CLOB: return 'TEXT'; case Column::TYPE_TIMESTAMP: case Column::TYPE_DATE: if (in_array($type, $this->emulatedDatatypes)) { return 'TEXT'; } else { throw new \DomainException(strtoupper($type) . ' not supported by SQLite and not emulated'); } case Column::TYPE_BOOL: if (in_array($type, $this->emulatedDatatypes)) { return 'INTEGER'; } else { throw new \DomainException('BOOL not supported by SQLite and not emulated'); } case Column::TYPE_DECIMAL: if (in_array($type, $this->emulatedDatatypes)) { return 'REAL'; } else { throw new \DomainException('DECIMAL not supported by SQLite and not emulated'); } case Column::TYPE_FLOAT: return 'REAL'; default: // SQLite ignores $length, but stores it with the column // definition where it can later be reconstructed. return parent::getNativeDatatype($type, $length, $cast); } }
/** {@inheritdoc} */ public function getNativeDatatype($type, $length = null, $cast = false) { switch ($type) { case Column::TYPE_TIMESTAMP: return 'TIMESTAMP(0)'; case Column::TYPE_CLOB: return 'TEXT'; case Column::TYPE_BLOB: return 'BYTEA'; default: return parent::getNativeDatatype($type, $length, $cast); } }