MySQL57Platform.php 1.42 KB
Newer Older
1 2 3 4 5
<?php

namespace Doctrine\DBAL\Platforms;

use Doctrine\DBAL\Schema\Index;
6
use Doctrine\DBAL\Schema\TableDiff;
7
use Doctrine\DBAL\Types\Types;
8 9

/**
10
 * Provides the behavior, features and SQL dialect of the MySQL 5.7 (5.7.9 GA) database platform.
11 12 13
 */
class MySQL57Platform extends MySqlPlatform
{
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
    /**
     * {@inheritdoc}
     */
    public function hasNativeJsonType()
    {
        return true;
    }

    /**
     * {@inheritdoc}
     */
    public function getJsonTypeDeclarationSQL(array $field)
    {
        return 'JSON';
    }

30 31 32 33 34
    /**
     * {@inheritdoc}
     */
    protected function getPreAlterTableRenameIndexForeignKeySQL(TableDiff $diff)
    {
35
        return [];
36 37 38 39 40 41 42
    }

    /**
     * {@inheritdoc}
     */
    protected function getPostAlterTableRenameIndexForeignKeySQL(TableDiff $diff)
    {
43
        return [];
44 45
    }

46 47 48 49 50
    /**
     * {@inheritdoc}
     */
    protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
    {
51
        return ['ALTER TABLE ' . $tableName . ' RENAME INDEX ' . $oldIndexName . ' TO ' . $index->getQuotedName($this)];
52 53 54 55 56 57 58
    }

    /**
     * {@inheritdoc}
     */
    protected function getReservedKeywordsClass()
    {
59
        return Keywords\MySQL57Keywords::class;
60
    }
61 62 63 64 65 66 67 68

    /**
     * {@inheritdoc}
     */
    protected function initializeDoctrineTypeMappings()
    {
        parent::initializeDoctrineTypeMappings();

69
        $this->doctrineTypeMapping['json'] = Types::JSON;
70
    }
71
}