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