packages/ztd-query-mysql/src/Shadow/Mutation/Table/Alter/UnsupportedKeyword.php

1<?php
2
3declare(strict_types=1);
4
5namespace ZtdQuery\Platform\MySql\Shadow\Mutation\Table\Alter;
6
7use PhpMyAdmin\SqlParser\Components\AlterOperation;
8
9/**
10 * Unsupported Keyword.
11 *
12 * @visibility ZtdQuery\Platform\MySql
13 */
14final class UnsupportedKeyword
15{
16    /**
17     * Has Unsupported Keyword In Unknown for the supplied MySQL input.
18     */
19    public function hasUnsupportedKeywordInUnknown(AlterOperation $op): bool
20    {
21        $unsupportedPatterns = [
22            'SPATIAL INDEX',
23            'SPATIAL KEY',
24            'PARTITION',
25        ];
26
27        $unknownTokens = is_array($op->unknown) ? $op->unknown : [];
28        foreach ($unknownTokens as $token) {
29            $tokenValue = is_string($token->value) ? $token->value : '';
30            $value = strtoupper($tokenValue);
31            foreach ($unsupportedPatterns as $pattern) {
32                if (str_contains($value, $pattern)) {
33                    return true;
34                }
35            }
36        }
37
38        return false;
39    }
40}
41