-
-
Notifications
You must be signed in to change notification settings - Fork 825
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
CustomField - Increase maxLength for Link fields to 2047 characters. #31868
base: master
Are you sure you want to change the base?
Conversation
🤖 Thank you for contributing to CiviCRM! ❤️ We will need to test and review this PR. 👷 Introduction for new contributors...
Quick links for reviewers...
|
I have applied the changes and all works as expected. I also removed and readded the fields back to the webform and it now takes the longer URLs. I can see in the database that the fields are VARCHAR(2047) now so all seems good to me. I can see the 4 failures, but it is working as expected for me on Drupal 10.4.1, CiviCRM 5.81, PHP8.1.31 |
Updated `fieldToSQLType` to handle Link fields with a default maxLength of 2047, reflecting sitemap URL limits. Adjusted tests to validate handling of Link fields.
Before: create a custom field with maxlength > 2000 and check the Optimize for Search option. The result is a fatal error. After: Field is created without issue.
Thanks @chumkui I've given this I've fixed the test failures. A couple of them were caused by hitting the limit for table size, e.g. if you create a custom group with a bunch of fields and they are all varchar(2047) you can exceed the limit for combined total of all columns. For that reason I've reduced the scope of this PR to only set the default for LInk fields and not other types of text fields. |
Overview
Increase size of custom Link fields to handle very long links.
See https://civicrm.stackexchange.com/questions/49123/how-can-i-store-longer-urls
Also fixes a bug triggered by adding an index to very long varchar fields.
Before
Limit for Link custom fields 255 characters, which was arbitrarily small.
After
Bumped maxLength to 2047, reflecting sitemap URL limits.
Existing fields will not be affected immediately, but editing and re-saving them will update the maxlength.
Comments
While testing the above, a bug surfaced:
I'm kinda surprised that this is the first time anyone noticed that bug, but the problem is that mySql has a limit to how long an index can be. Fixed the error by constraining the length of the index, and added test coverage.