summaryrefslogtreecommitdiff
path: root/databases/php85-pdo_mysql
diff options
context:
space:
mode:
Diffstat (limited to 'databases/php85-pdo_mysql')
-rw-r--r--databases/php85-pdo_mysql/Makefile7
-rw-r--r--databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c398
2 files changed, 405 insertions, 0 deletions
diff --git a/databases/php85-pdo_mysql/Makefile b/databases/php85-pdo_mysql/Makefile
new file mode 100644
index 000000000000..c61de9bbc13d
--- /dev/null
+++ b/databases/php85-pdo_mysql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_mysql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c b/databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c
new file mode 100644
index 000000000000..9a6c3b11bb6e
--- /dev/null
+++ b/databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c
@@ -0,0 +1,398 @@
+--- mysql_sql_parser.c.orig 2025-07-02 13:18:02 UTC
++++ mysql_sql_parser.c
+@@ -0,0 +1,395 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Matteo Beccati <mbeccati@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++
++#include "php.h"
++#include "ext/pdo/php_pdo_driver.h"
++#include "ext/pdo/pdo_sql_parser.h"
++
++int pdo_mysql_scanner(pdo_scanner_t *s)
++{
++ const char *cursor = s->cur;
++
++ s->tok = cursor;
++
++
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy4;
++ case '#': goto yy6;
++ case '\'': goto yy7;
++ case '-': goto yy8;
++ case '/': goto yy9;
++ case ':': goto yy10;
++ case '?': goto yy11;
++ case '`': goto yy13;
++ default: goto yy2;
++ }
++yy1:
++ YYCURSOR = YYMARKER;
++ switch (yyaccept) {
++ case 0: goto yy5;
++ case 1: goto yy17;
++ case 2: goto yy24;
++ default: goto yy36;
++ }
++yy2:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case '"':
++ case '#':
++ case '\'':
++ case '-':
++ case '/':
++ case ':':
++ case '?':
++ case '`': goto yy3;
++ default: goto yy2;
++ }
++yy3:
++ { RET(PDO_PARSER_TEXT); }
++yy4:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych >= 0x01) goto yy15;
++yy5:
++ { SKIP_ONE(PDO_PARSER_TEXT); }
++yy6:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy5;
++ default: goto yy19;
++ }
++yy7:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy22;
++yy8:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ switch (yych) {
++ case '-': goto yy26;
++ default: goto yy5;
++ }
++yy9:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '*': goto yy27;
++ default: goto yy5;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy28;
++ case ':': goto yy30;
++ default: goto yy5;
++ }
++yy11:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '?': goto yy32;
++ default: goto yy12;
++ }
++yy12:
++ { RET(PDO_PARSER_BIND_POS); }
++yy13:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy34;
++yy14:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy15:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy16;
++ case '\\': goto yy18;
++ default: goto yy14;
++ }
++yy16:
++ yyaccept = 1;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '"': goto yy14;
++ default: goto yy17;
++ }
++yy17:
++ { RET(PDO_PARSER_TEXT); }
++yy18:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ if (yych <= 0x00) goto yy1;
++ goto yy14;
++yy19:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy20;
++ default: goto yy19;
++ }
++yy20:
++ { RET(PDO_PARSER_TEXT); }
++yy21:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy22:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy23;
++ case '\\': goto yy25;
++ default: goto yy21;
++ }
++yy23:
++ yyaccept = 2;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\'': goto yy21;
++ default: goto yy24;
++ }
++yy24:
++ { RET(PDO_PARSER_TEXT); }
++yy25:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ if (yych <= 0x00) goto yy1;
++ goto yy21;
++yy26:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\t':
++ case '\v':
++ case '\f':
++ case '\r':
++ case ' ': goto yy19;
++ default: goto yy1;
++ }
++yy27:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy37;
++ default: goto yy27;
++ }
++yy28:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy28;
++ default: goto yy29;
++ }
++yy29:
++ { RET(PDO_PARSER_BIND); }
++yy30:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case ':': goto yy30;
++ default: goto yy31;
++ }
++yy31:
++ { RET(PDO_PARSER_TEXT); }
++yy32:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '?': goto yy32;
++ default: goto yy31;
++ }
++yy33:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy34:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '`': goto yy35;
++ default: goto yy33;
++ }
++yy35:
++ yyaccept = 3;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '`': goto yy33;
++ default: goto yy36;
++ }
++yy36:
++ { RET(PDO_PARSER_TEXT); }
++yy37:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy37;
++ case '/': goto yy38;
++ default: goto yy27;
++ }
++yy38:
++ ++YYCURSOR;
++ goto yy20;
++}
++
++}