phpmyadmin / phpmyadmin/sql-parser

ANSI mode not working, PHP 7

Đang mở
#284 7 bình luận 1 reaction 1 người được giao Xem trên GitHub

@williamdes đang làm issue này rồi.

Từ ngày 6/3/2020.

bug
Ngôn ngữ chính
PHP
Star
485
Fork
119
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Hi,
while investigating issue https://github.com/phpmyadmin/phpmyadmin/issues/15821 i came to conclusion, that sql-parser does not work correctly in my environment.

I'm using php from sury.org, currently 2:7.4+72+0~20200122.20+debian10~1.gbpcd96c7

Using MySQL server version 8.0.18 with ANSI_QUOTES mode (full list of modes at the end of this comment https://github.com/phpmyadmin/phpmyadmin/issues/15821#issuecomment-578572914 ), yours lint-query fails to parse double-quotes correctly and complains (both table name and field names are escaped by double-quotes in ANSI mode)

#1: A symbol name was expected! (near ""id"" at position 29)
#2: At least one column definition was expected. (near ""id"" at position 29)
#3: Unexpected beginning of statement. (near "11" at position 38)
#4: Unrecognized statement type. (near "NOT NULL" at position 42)

I tried to tweak using ContextMySql80000 and/or ANSI or ANSI_QUOTES modes, but the behavior did not change, with any of my tries.

Test data are also in mentioned comment, the string is taken directly from phpmyadmin result of SHOW CREATE TABLE query executed from configured datasource.
Once I change manually double-quotes to backticks, everything works correctly.

However I've tried tokenzier CLI utility, and the output is the same, for sql query with double-quotes and with backticks (except for Token containing raw value with backticks/doublequotes), Token values, types and flags are correctly the same.

Please let me know, if I can provide you with more debug info for you to test/fix this

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.