Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NEOS-1730: mysql index statements broken when using non column #3198

Conversation

nickzelei
Copy link
Member

Buried in the statistics table docs under the Expression column is the note that the column name is nullable.

EXPRESSION

MySQL supports functional key parts (see [Functional Key Parts](https://dev.mysql.com/doc/refman/8.4/en/create-> index.html#create-index-functional-key-parts)), which affects both the COLUMN_NAME and EXPRESSION columns:

For a nonfunctional key part, COLUMN_NAME indicates the column indexed by the key part and EXPRESSION is NULL.

For a functional key part, COLUMN_NAME column is NULL and EXPRESSION indicates the expression for the key part.

This has now been fixed, with the mysql tests now properly handling a table index creation that is composite mixed with columns and expressions.

Copy link

linear bot commented Jan 27, 2025

@nickzelei nickzelei added the bug Something isn't working label Jan 27, 2025
Copy link

vercel bot commented Jan 27, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Skipped Deployment
Name Status Preview Comments Updated (UTC)
neosync-docs ⬜️ Ignored (Inspect) Jan 27, 2025 11:04pm

Copy link

codecov bot commented Jan 27, 2025

Codecov Report

Attention: Patch coverage is 0% with 24 lines in your changes missing coverage. Please review.

Project coverage is 27.87%. Comparing base (2b3ff61) to head (b3702b4).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
backend/pkg/sqlmanager/mysql/mysql-manager.go 0.00% 24 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3198      +/-   ##
==========================================
- Coverage   27.87%   27.87%   -0.01%     
==========================================
  Files         378      378              
  Lines       43318    43329      +11     
==========================================
+ Hits        12075    12078       +3     
- Misses      29797    29806       +9     
+ Partials     1446     1445       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

github-actions bot commented Jan 27, 2025

Benchstat Geomean Results

-1.34% sec/op, -0.03% B/op, 0.00% allocs/op

Benchstat results
                                   │ main-benchmark.txt │         branch-benchmark.txt         │
                                   │       sec/op       │    sec/op     vs base                │
CleanPostgresType-4                        41.12n ± ∞ ¹   42.58n ±  1%       ~ (p=0.286 n=1+6)
Runner_Single-4                            7.942µ ± ∞ ¹   7.716µ ±  2%       ~ (p=0.286 n=1+6)
GenerateBool-4                             11.76n ± ∞ ¹   11.25n ±  7%       ~ (p=0.571 n=1+6)
GenerateBusinessName-4                     334.8n ± ∞ ¹   279.1n ± 12%       ~ (p=0.286 n=1+6)
GenerateCardNumber-4                       28.64n ± ∞ ¹   28.38n ±  0%       ~ (p=0.286 n=1+6)
GenerateCategorical-4                      102.3n ± ∞ ¹   101.7n ±  1%       ~ (p=0.286 n=1+6)
GenerateCity-4                             173.1n ± ∞ ¹   177.6n ±  2%       ~ (p=0.286 n=1+6)
GenerateCountry-4                          105.2n ± ∞ ¹   105.8n ±  0%       ~ (p=0.286 n=1+6)
GenerateEmail-4                            1.383µ ± ∞ ¹   1.351µ ±  0%       ~ (p=0.286 n=1+6)
GenerateFirstName-4                        236.7n ± ∞ ¹   201.4n ±  1%       ~ (p=0.286 n=1+6)
GenerateFloat64-4                          28.72n ± ∞ ¹   28.86n ±  0%       ~ (p=0.286 n=1+6)
GenerateFullAddress-4                      1.430µ ± ∞ ¹   1.433µ ±  0%       ~ (p=1.000 n=1+6)
GenerateFullName-4                         1.299µ ± ∞ ¹   1.229µ ±  1%       ~ (p=0.286 n=1+6)
GenerateGender-4                           41.98n ± ∞ ¹   41.45n ±  0%       ~ (p=0.286 n=1+6)
GenerateInt64-4                            28.00n ± ∞ ¹   28.14n ±  0%       ~ (p=0.286 n=1+6)
GenerateInt64PhoneNumber-4                 51.76n ± ∞ ¹   51.33n ±  0%       ~ (p=0.286 n=1+6)
GenerateInternationalPhoneNumber-4         176.1n ± ∞ ¹   174.6n ±  1%       ~ (p=0.286 n=1+6)
GenerateIpAddress-4                        568.1n ± ∞ ¹   537.5n ±  1%       ~ (p=0.286 n=1+6)
GenerateLastName-4                         196.7n ± ∞ ¹   189.8n ±  0%       ~ (p=0.286 n=1+6)
GenerateRandomString-4                    1007.0n ± ∞ ¹   982.5n ±  1%       ~ (p=0.286 n=1+6)
GenerateSHA256Hash-4                       1.007µ ± ∞ ¹   1.030µ ±  0%       ~ (p=0.286 n=1+6)
GenerateSSN-4                              301.8n ± ∞ ¹   302.2n ±  1%       ~ (p=0.857 n=1+6)
GenerateState-4                            104.9n ± ∞ ¹   105.4n ±  1%       ~ (p=0.857 n=1+6)
GenerateStreetAddress-4                    205.3n ± ∞ ¹   213.0n ±  0%       ~ (p=0.286 n=1+6)
GenerateStringPhoneNumber-4                173.9n ± ∞ ¹   178.3n ±  1%       ~ (p=0.286 n=1+6)
GenerateUnixTimestamp-4                    81.14n ± ∞ ¹   77.12n ±  1%       ~ (p=0.286 n=1+6)
GenerateUsername-4                         354.3n ± ∞ ¹   359.5n ±  0%       ~ (p=0.286 n=1+6)
GenerateUTCTimestamp-4                     107.1n ± ∞ ¹   103.8n ±  1%       ~ (p=0.286 n=1+6)
GenerateUUID-4                             738.8n ± ∞ ¹   739.6n ±  0%       ~ (p=0.857 n=1+6)
GenerateZipcode-4                          105.5n ± ∞ ¹   105.9n ±  1%       ~ (p=0.286 n=1+6)
TransformCharacterScramble-4               173.7n ± ∞ ¹   172.2n ±  0%       ~ (p=0.286 n=1+6)
TransformE164PhoneNumber-4                 180.9n ± ∞ ¹   181.2n ±  0%       ~ (p=0.857 n=1+6)
TransformEmail-4                           1.791µ ± ∞ ¹   1.792µ ±  1%       ~ (p=0.857 n=1+6)
TransformFirstName-4                       239.7n ± ∞ ¹   233.8n ±  1%       ~ (p=0.286 n=1+6)
TransformFloat64-4                         111.5n ± ∞ ¹   115.8n ±  0%       ~ (p=0.286 n=1+6)
TransformFullName-4                        1.304µ ± ∞ ¹   1.238µ ±  1%       ~ (p=0.286 n=1+6)
TransformInt64-4                           33.45n ± ∞ ¹   33.57n ±  6%       ~ (p=0.571 n=1+6)
TransformInt64PhoneNumber-4                58.74n ± ∞ ¹   57.84n ±  1%       ~ (p=0.286 n=1+6)
TransformLastName-4                        197.3n ± ∞ ¹   201.1n ±  1%       ~ (p=0.286 n=1+6)
TransformString-4                          1.026µ ± ∞ ¹   1.029µ ±  1%       ~ (p=0.857 n=1+6)
TransformStringPhoneNumber-4               205.1n ± ∞ ¹   210.4n ±  0%       ~ (p=0.286 n=1+6)
TransformUuid-4                            36.66n ± ∞ ¹   36.53n ±  0%       ~ (p=0.571 n=1+6)
geomean                                    197.0n         194.3n        -1.34%
¹ need >= 6 samples for confidence interval at level 0.95

                                   │ main-benchmark.txt │          branch-benchmark.txt          │
                                   │        B/op        │     B/op      vs base                  │
CleanPostgresType-4                         0.000 ± ∞ ¹     0.000 ± 0%       ~ (p=1.000 n=1+6) ²
Runner_Single-4                           2.318Ki ± ∞ ¹   2.289Ki ± 2%       ~ (p=0.286 n=1+6)
GenerateBool-4                              0.000 ± ∞ ¹     0.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateBusinessName-4                      304.0 ± ∞ ¹     304.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCardNumber-4                        8.000 ± ∞ ¹     8.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCategorical-4                       64.00 ± ∞ ¹     64.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCity-4                              160.0 ± ∞ ¹     160.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCountry-4                           24.00 ± ∞ ¹     24.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateEmail-4                             385.0 ± ∞ ¹     385.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFirstName-4                         208.0 ± ∞ ¹     208.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFloat64-4                           8.000 ± ∞ ¹     8.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFullAddress-4                       512.0 ± ∞ ¹     512.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFullName-4                          418.0 ± ∞ ¹     418.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateGender-4                            16.00 ± ∞ ¹     16.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateInt64-4                             7.000 ± ∞ ¹     7.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateInt64PhoneNumber-4                  8.000 ± ∞ ¹     8.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateInternationalPhoneNumber-4          40.00 ± ∞ ¹     40.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateIpAddress-4                         31.00 ± ∞ ¹     31.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateLastName-4                          176.0 ± ∞ ¹     176.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateRandomString-4                      186.0 ± ∞ ¹     186.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateSHA256Hash-4                        288.0 ± ∞ ¹     288.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateSSN-4                               46.00 ± ∞ ¹     46.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateState-4                             24.00 ± ∞ ¹     24.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateStreetAddress-4                     240.0 ± ∞ ¹     240.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateStringPhoneNumber-4                 40.00 ± ∞ ¹     40.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUnixTimestamp-4                     8.000 ± ∞ ¹     8.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUsername-4                          205.0 ± ∞ ¹     205.0 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUTCTimestamp-4                      24.00 ± ∞ ¹     24.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUUID-4                              80.00 ± ∞ ¹     80.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateZipcode-4                           24.00 ± ∞ ¹     24.00 ± 0%       ~ (p=1.000 n=1+6) ²
TransformCharacterScramble-4                40.00 ± ∞ ¹     40.00 ± 0%       ~ (p=1.000 n=1+6) ²
TransformE164PhoneNumber-4                  40.00 ± ∞ ¹     40.00 ± 0%       ~ (p=1.000 n=1+6) ²
TransformEmail-4                            489.0 ± ∞ ¹     489.0 ± 0%       ~ (p=1.000 n=1+6) ²
TransformFirstName-4                        224.0 ± ∞ ¹     224.0 ± 0%       ~ (p=1.000 n=1+6) ²
TransformFloat64-4                          88.00 ± ∞ ¹     88.00 ± 0%       ~ (p=1.000 n=1+6) ²
TransformFullName-4                         418.0 ± ∞ ¹     418.0 ± 0%       ~ (p=1.000 n=1+6) ²
TransformInt64-4                            8.000 ± ∞ ¹     8.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformInt64PhoneNumber-4                 8.000 ± ∞ ¹     8.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformLastName-4                         176.0 ± ∞ ¹     176.0 ± 0%       ~ (p=1.000 n=1+6) ²
TransformString-4                           202.0 ± ∞ ¹     202.0 ± 0%       ~ (p=1.000 n=1+6) ²
TransformStringPhoneNumber-4                56.00 ± ∞ ¹     56.00 ± 0%       ~ (p=1.000 n=1+6) ²
TransformUuid-4                             16.00 ± ∞ ¹     16.00 ± 0%       ~ (p=1.000 n=1+6) ²
geomean                                               ³                 -0.03%                 ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

                                   │ main-benchmark.txt │         branch-benchmark.txt         │
                                   │     allocs/op      │ allocs/op   vs base                  │
CleanPostgresType-4                         0.000 ± ∞ ¹   0.000 ± 0%       ~ (p=1.000 n=1+6) ²
Runner_Single-4                             24.00 ± ∞ ¹   24.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateBool-4                              0.000 ± ∞ ¹   0.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateBusinessName-4                      2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCardNumber-4                        1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCategorical-4                       2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCity-4                              2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateCountry-4                           2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateEmail-4                             8.000 ± ∞ ¹   8.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFirstName-4                         2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFloat64-4                           1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFullAddress-4                       10.00 ± ∞ ¹   10.00 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateFullName-4                          6.000 ± ∞ ¹   6.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateGender-4                            1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateInt64-4                             0.000 ± ∞ ¹   0.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateInt64PhoneNumber-4                  1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateInternationalPhoneNumber-4          3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateIpAddress-4                         2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateLastName-4                          2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateRandomString-4                      3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateSHA256Hash-4                        7.000 ± ∞ ¹   7.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateSSN-4                               3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateState-4                             2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateStreetAddress-4                     2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateStringPhoneNumber-4                 3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUnixTimestamp-4                     1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUsername-4                          6.000 ± ∞ ¹   6.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUTCTimestamp-4                      1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateUUID-4                              3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
GenerateZipcode-4                           2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformCharacterScramble-4                2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformE164PhoneNumber-4                  3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformEmail-4                            14.00 ± ∞ ¹   14.00 ± 0%       ~ (p=1.000 n=1+6) ²
TransformFirstName-4                        3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformFloat64-4                          3.000 ± ∞ ¹   3.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformFullName-4                         6.000 ± ∞ ¹   6.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformInt64-4                            1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformInt64PhoneNumber-4                 1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformLastName-4                         2.000 ± ∞ ¹   2.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformString-4                           4.000 ± ∞ ¹   4.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformStringPhoneNumber-4                4.000 ± ∞ ¹   4.000 ± 0%       ~ (p=1.000 n=1+6) ²
TransformUuid-4                             1.000 ± ∞ ¹   1.000 ± 0%       ~ (p=1.000 n=1+6) ²
geomean                                               ³               +0.00%                 ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

@nickzelei nickzelei requested a review from evisdrenova January 27, 2025 23:21
@nickzelei nickzelei merged commit 9882b4d into main Jan 28, 2025
11 of 13 checks passed
@nickzelei nickzelei deleted the nick/neos-1730-mysql-index-statements-broken-when-using-non-column branch January 28, 2025 03:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants