-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Set index length limit for MySQL #14500
Conversation
Awesome. I also see that the Text field is limited to 766, was it done this way because of indexing issues too? If so we could update it, at least for new installs. |
But can be done in a different PR for main. |
@@ -22,20 +22,19 @@ public int Create() | |||
.Attachable() | |||
.WithDescription("Provides a way to define custom aliases for content items.")); | |||
|
|||
// NOTE: The Alias Length has been upgraded from 64 characters to 767. | |||
// For existing SQL databases update the AliasPartIndex tables Alias column length manually. | |||
// INFO: The Alias Length is now of 735 chars, but this is only used on a new installation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As said in #14491 (comment)
...
DocumentId (26)
is wrong as it is at most a bigint (size = 8 bytes =2 chars size
), the 2 booleans may not share the same bytes butone char size
(4 bytes) for both is sufficient, anyway we kept a margin of 4 bytes.
Not so important to assume one "char" per boolean, but at least comment DocumentId (2)
which here will allow Alias(738)
, and if we want to keep a margin of 4 bytes => Alias(734)
.
Then the following comments could be removed, and maybe revert back MaxAliasLength
to its original value, from memory it was 1024, but maybe too much, I don't know, just for info.
// Maximum length that MySql can support in an index under utf8mb4 collation is 768, | |
// minus 2 for the `DocumentId` integer (bigint size = 8 bytes = 2 character size), | |
// minus 26 for the `ContentItemId` and 1 for the 'Published' and 'Latest' bools. | |
// minus 4 to allow at least to add a new integer column. | |
public const int MaxAliasLength = 735; | |
public string Alias { get; set; } |
Same remark for other indexes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jtkech thanks for pointing out the seize of DocumentId
I know it was long but assumed it was a char :). Anyway, I update it.
@sebastienros not sure why 766. But most likely related to the same limit. i don't know if we should increase it. I mean we could, but would would be a good length? 1024? The longer the column, may require more disk space from the server to maintained it. If you have a magic number, then I can update this and the Alias to use the same. |
@sebastienros I also did an audit on all the map index and updated others. I could not live with |
@sebastienros one thing to note if we decided to increase the size of alias and the text field columns, we have to account for existing installation when mapping data to column in the index providers. We can't try to insert more records that the columns allow for. We would have to add a new value in the ShellSettings to tell us what should we use for length. For example, we can add a new property to the ShellSettings called Maybe it is better to leave this out of this PR just so we don't complicate it since it's going to be part of 1.7.1 |
Cool that you finally saw that DocumentId has not a 26 chars size but 2 (bigint = 8 bytes), which allows you to increase your limits. Then remember to remove the comments in To find out other places where we decreased other max sizes, search for For example in That said what happens when an index is used but a referenced column has been truncated because the current size is greater than the limit? Particularly I'm thinking about the Alias field which is an identifier. If this may be a problem, maybe better to also keep max sizes as is, and then use the same limits in SQL index definitions (and same comments). |
@jtkech yes check out my previous comment #14500 (comment) |
We need to differentiate "a field is truncated" from "a field's value is truncated in the index". In the index that is totally fine. It just means that there can be collisions when doing a lookup, and in that case a standard scan will be used with the colliding rows. Knowing that it might never happen since aliases are almost never close to the length of the limit, and even if that was the case the probability that the truncated values are the same is even lower. And even in this case it's not a problem, just a perf concern. |
Okay cool then, thanks for the confirmation.
Okay, maybe at least keep their values / comments consistent, for example if a max size is lower than the new number now used to limit the inner index, at least would need to be equal. |
So if we keep max sizes as is, I would not have changed anything for the Alias Index. Only changed the SQL Fields Indexes which is related to the new issue. Which is what I suggested at the beginning ;) |
As said okay to not change the max sizes. But I don't see the problem, on an existing installation normally existing map index tables and inner sql indexes would not be altered. |
@jtkech yes I agree, we don't need to make any change to Alias "at least in this PR". I undid the changes that were made to Alias If you are good with this PR approve or merge it. |
So maybe we could keep the comments in Alias migrations that may become again useful ;) But no problem, as you want. Okay I could approve and merge but most of the changes are to replace all |
Was it supposed to target main ? |
Yes. I'll cherry pick the 2 PR into 1.7 tomorrow |
* mkdocs-material 9.2.8 * Release 1.7 (OrchardCMS#14111) * Switch to 1.8.0-preview * Position the modal over the navbar (OrchardCMS#14270) * Add 1.8 release notes file. (OrchardCMS#14277) * jQuery 3.7.1 (OrchardCMS#14231) * Add @brutoledo as a contributor * Add @dannyd89 as a contributor * Typo SMS features * Update libphonenumber-csharp 8.13.20 (OrchardCMS#14287) * NLog.Web.AspNetCore 5.3.4 (OrchardCMS#14283) * leaflet 1.9.4 (OrchardCMS#14054) * bootstrap-select 1.14.0-beta3 (OrchardCMS#14282) * Fixes invalid cookie name (OrchardCMS#14280) * Add @ludovic-th as a contributor * Move Moq into tests libraries (OrchardCMS#14260) * Microsoft.Identity.Web 2.13.4 (OrchardCMS#14292) * BenchmarkDotNet 0.13.8 (OrchardCMS#14293) * mkdocs-material 9.3.0 * mkdocs-material 9.3.1 * Remove duplicate alert in settings (OrchardCMS#14299) * Make WorkflowType extension able (OrchardCMS#14275) * NET 6.0.22, 7.0.11 (OrchardCMS#14320) * Update OpenIddict 4.8.0 (OrchardCMS#14321) * Update Jint 3.0.0-beta-2051 (OrchardCMS#14322) * Add IsViewOrPageResult() extension (OrchardCMS#14228) * Use language keywords instead of framework type names for type references (IDE0049) (OrchardCMS#14273) * Few missing language types in .cs (OrchardCMS#14323) * Language Types in Razor files (OrchardCMS#14324) * Handle InvalidToken in UserService.ProcessValidationErrors() (OrchardCMS#14331) Co-authored-by: Mike Alhayek <[email protected]> * Make SRI hashes consistent (OrchardCMS#13775) * Update Form Migrations Create() (OrchardCMS#14272) * Fix media item icon (OrchardCMS#14342) * Update Azure.Storage.Blobs 12.18.0 (OrchardCMS#14326) * mkdocs 1.5.3 * mkdocs-material 9.3.2 * Update Jint to 3.0.0-beta-2052 (OrchardCMS#14369) * Update libphonenumber-csharp 8.13.21 (OrchardCMS#14376) * xunit 2.5.1, xunit.runner.visualstudio 2.5.1, xunit.runner.visualstudio 1.3.0 (OrchardCMS#14379) * Azure.Identity 1.10.1 (OrchardCMS#14378) * ZString 2.5.1 (OrchardCMS#14377) * mkdocs-material 9.4.0 * mkdocs-material 9.4.1 * mkdocs-material 9.4.2 * Fix Monaco doc link (OrchardCMS#14387) * Upgrade to Bootstrap 5.3.2 (OrchardCMS#14294) * Fixing Icon-Picker and cleanup sass (OrchardCMS#14393) * Set html classes to make the scripts work again (removed in OrchardCMS#9371) (OrchardCMS#14367) * Add a fallback function to crypto.randomUUID (OrchardCMS#14371) * Update HtmlSantizer 8.0.718 (OrchardCMS#14395) * Update Microsoft.Identity.Web 2.14.0 (OrchardCMS#14394) * SASS files cleanup in TheAdmin theme (OrchardCMS#14399) * Fix validation color in the login layout (OrchardCMS#14400) * Update Fluid 2.5.0 (OrchardCMS#14402) * Trim Async suffix (OrchardCMS#14407) Co-authored-by: Vincent Jacquet <[email protected]> * Typos in OrchardCore.Notifications (OrchardCMS#14409) * Update libphonenumber-csharp 8.13.22 (OrchardCMS#14408) * Fix doc typo (OrchardCMS#14411) * mkdocs-material 9.4.3 * fix: workflow module page list issue when using PostgreSQL OrchardCMS#14334 (OrchardCMS#14412) * Add @emrahtokalak as a contributor * Add @vjacquet as a contributor * Fix randomUUID, modal dialog and duplicate alerts * Add a fallback function to crypto.randomUUID (OrchardCMS#14371) * Fix modal dialog location * Remove duplicate alert in settings (OrchardCMS#14299) Co-authored-by: Hisham Bin Ateya <[email protected]> * Add OC.Notifications.Abstractions docs (OrchardCMS#14427) * Fix `Creating a modular ASP.NET Core application` tutorial (OrchardCMS#14415) Emphasize that reference must be added from the applicaiton to the module * mkdocs-material 9.4.4 * Fix form validation and link decoration (BS 5.3) (OrchardCMS#14432) * Fix admin menu background color on small screen. (OrchardCMS#14434) * Open the front page in the same browser instead of a blank tab. (OrchardCMS#14435) * Fix Publish Later Buttons (OrchardCMS#14438) * Cleanup Archive/Publish Later and remove unnecessary assets and resources (OrchardCMS#14441) * BenchmarkDotNet 0.13.9 (OrchardCMS#14436) * Update HtmlSantizer 8.0.723 (OrchardCMS#14429) * Microsoft.Identity.Web 2.15.1 (OrchardCMS#14437) * AdminBranding (OrchardCMS#14453) * Admin Navbar link (OrchardCMS#14454) * Upgrade TheTheme to use Bootstrap 5.3.2 (OrchardCMS#14451) * Fix sortable widgets (OrchardCMS#14467) * Remove "Cannot update your own roles" warning (OrchardCMS#14440) * Fix null exception in EmailTask (OrchardCMS#14471) * mkdocs-material 9.4.5 * Fix WidgetsListPart UI (OrchardCMS#14461) * Memory Leaks (OrchardCMS#14348) * Update 7.0.12 & 6.0.23 (OrchardCMS#14478) * OpenIddict 4.9.0 (OrchardCMS#14463) * Fix an exception in ListPart with header (OrchardCMS#14473) * fix: workflow module page list issue when using PostgreSQL OrchardCMS#14334 (OrchardCMS#14412) (OrchardCMS#14428) * Fix roles filter (OrchardCMS#14468) * Docs tabs * Enable tabs * Docs missing links * Docs enable footer (Previous, Next link) * Typo Release 1.8 * Docs reference links * Azure.Identity 1.10.2 (OrchardCMS#14494) * Update Taxomony field (OrchardCMS#14477) * Introduce a new Narbar shape (OrchardCMS#14488) * Can't Reload Stream Config Provider (OrchardCMS#14499) * Update YesSQL 3.4.0 (OrchardCMS#14491) * NRE in query editor (OrchardCMS#14501) * Set index length limit for MySQL (OrchardCMS#14500) Fix OrchardCMS#14338 * Fix a typo (OrchardCMS#14503) * Fix TheBlogTheme shared views (OrchardCMS#14493) * Release 1.7.1 (OrchardCMS#14474) Fix OrchardCMS#14338 --------- Co-authored-by: yaricrolletservico <[email protected]> Co-authored-by: Hisham Bin Ateya <[email protected]> * Fix mysql functional tests (OrchardCMS#14502) * Release 1.7.1 (OrchardCMS#14506) Co-authored-by: Sébastien Ros <[email protected]> * Add @yaricrolletservico as a contributor * mkdocs-material 9.4.6 * Docs GraphQL: Fix url api/graphql * Fix messages class names (OrchardCMS#14508) * Update 1.7.1 release notes (OrchardCMS#14509) * js-cookie does not need to depend on jQuery (OrchardCMS#14511) * mkdocs-git-revision-date-localized-plugin 1.2.1 * NLog.Web.AspNetCore 5.3.5 * centrally define media resources (OrchardCMS#14512) * Fix TheAdmin & TheTheme for RTL languages (OrchardCMS#14486) * Fixing TheTheme newly intruduced accessibility rules and HTML rules violations (Lombiq Technologies: NEST-462) (OrchardCMS#14523) * Update libphonenumber-csharp 8.13.23 (OrchardCMS#14529) * Add @yk as a contributor * Fix MySQL index length (OrchardCMS#14513) * Release 1.7.2 (OrchardCMS#14532) * Revert " Add @yk as a contributor" This reverts commit ce82352. * Save Shell Config SubSections (OrchardCMS#14490) * Microsoft.Identity.Web 2.15.2 (OrchardCMS#14540) * SMTP should send the email if the SSL certificate is invalid (OrchardCMS#14444) Co-authored-by: Sébastien Ros <[email protected]> * Thumbnails for media app (OrchardCMS#14528) * Add a way to restart a workflow instance (OrchardCMS#14470) * pymdown-extensions 10.3.1 * Cleanup ReCaptcha services (OrchardCMS#14333) Co-authored-by: Sébastien Ros <[email protected]> * Change how ReCaptchaService consumes HttpClient (OrchardCMS#14544) * Move ContentRootPoFileLocationProvider to OC.Localization.Core.PortableObject folder (OrchardCMS#13713) * User Accounts and Custom User Settings Deployment (OrchardCMS#14208) Co-authored-by: Mike Alhayek <[email protected]> Co-authored-by: Hisham Bin Ateya <[email protected]> * xunit 2.5.3 (OrchardCMS#14558) * Azure.Identity 1.10.3 (OrchardCMS#14557) * Microsoft.Identity.Web 2.15.3 (OrchardCMS#14556) * Jint 3.0.0-beta-2053 (OrchardCMS#14560) * Media caches cleanups (OrchardCMS#14087) * Add KeyVault without building a config (OrchardCMS#14550) * Dotnet 8.0 (OrchardCMS#14058) * Missing sdk (OrchardCMS#14561) * js-cookie 3.0.5 (OrchardCMS#14559) * HtmlSanitizer 8.0.746 (OrchardCMS#14577) * correct bootstrap-select dependency (OrchardCMS#14578) * Throw descriptive exception when a field is added with no type. (OrchardCMS#14569) * Add extensions for IDisplayManager (OrchardCMS#14579) * Register ReCaptchaService as singleton (OrchardCMS#14583) Co-authored-by: Sébastien Ros <[email protected]> * Assign the technical name of the field as the display name by default (OrchardCMS#14571) * Use shape when rendering Http errors to allow cusomization from the UI (OrchardCMS#14545) * Fix field wrappers CSS class names (OrchardCMS#14547) * Cleanup ReCaptchaService after changing the registration type (OrchardCMS#14587) * .NET 6.0.24, 7.0.13 (OrchardCMS#14575) * Update GetPartWrapperCssClasses and GetFieldWrapperCssClasses helpers (OrchardCMS#14591) * mkdocs-material 9.4.7 * Improve AdminDashboard Styling (OrchardCMS#14593) * Monaco 0.44.0 * remove admin.css resource dependency on audit trail list (OrchardCMS#14608) fixes OrchardCMS#14607 * Update the Admin Dashboard documentation. (OrchardCMS#14602) * Monaco js error fix (OrchardCMS#14601) * Remove admin.js dependency on fields and parts (OrchardCMS#14600) * Update libphonenumber-csharp 8.13.24 (OrchardCMS#14619) * xunit 2.6.0 (OrchardCMS#14618) * Update StackExchange.Redis 2.7.4 (OrchardCMS#14620) * Use CommitAsync() instead od Commit() (OrchardCMS#14622) * BenchmarkDotNet 0.13.10 (OrchardCMS#14623) * Add a shortcode for cache busting (OrchardCMS#14621) Co-authored-by: Zoltán Lehóczky <[email protected]> Co-authored-by: Hisham Bin Ateya <[email protected]> * Invalidate cache on updating store (OrchardCMS#14612) * Improve performance for CssClass extensions (OrchardCMS#14615) * Do not show dashboard widget when `DashboardWidget` is removed. (OrchardCMS#14603) * mkdocs-material 9.4.8 * Update Jint 3.0.0-beta-2054 (OrchardCMS#14633) * Address CssClasses helper warning (OrchardCMS#14643) * Fix content preview editor resource dependency (OrchardCMS#14642) * Fix the Content-preview script (OrchardCMS#14644) * Azure.Storage.Blobs 12.19.0 (OrchardCMS#14647) * xunit 2.6.1 (OrchardCMS#14646) * Register TwoFactorAuthenticationClaimsProvider service (OrchardCMS#14651) Fix OrchardCMS#14650 * Fix monaco editor widget error * Initialize logger for YesSql to enable logging (OrchardCMS#14659) * Cleanup workflow activities (OrchardCMS#14597) * Microsoft.NET.Test.Sdk 17.8.0 (OrchardCMS#14665) * pymdown-extensions 10.4 * Minor performance update for HtmlContentBuilderExtensions (OrchardCMS#14664) * Update MailKit & MimiKit 4.3.0 (OrchardCMS#14669) * Update xUnit Analyzers 1.5.0 (OrchardCMS#14670) * Update Azure.Extensions.AspNetCore.Configuration.Secrets 1.3.0 (OrchardCMS#14672) * Update Jint 3.0.0-beta-2055 (OrchardCMS#14671) * Log a message every time Redis ConnectionMultiplexer is created * Update Azure Identity 1.10.4 (OrchardCMS#14690) * .NET 8.0.0 (OrchardCMS#14688) * Update Azure Blobs 12.19.1 (OrchardCMS#14691) * Update .NET 7.0.14 & .NET 6.0.25 (OrchardCMS#14689) * Fix missing claims for OpenID code flow. (OrchardCMS#14686) * OpenIddict 4.10.0 (OrchardCMS#14692) * Add form originated http redirect task (OrchardCMS#14610) * Set the docker image to .NET 8 (OrchardCMS#14696) * Update workflows and test runners to use .net 8 (OrchardCMS#14702) * Update YesSql to version 3.5.0 (OrchardCMS#14706) * Update Moq 4.20.69 (OrchardCMS#14705) * Drop support for .NET 6/7 (OrchardCMS#14695) * mkdocs-material 9.4.9 * Update Microsoft.SourceLink.GitHub 8.0.0 (OrchardCMS#14714) * Remove 'Async' term from a synchronous method (OrchardCMS#14710) * Missing connection dispose (OrchardCMS#14709) * Use C# 12.0 (OrchardCMS#14713) * Little cleanup (OrchardCMS#14711) * Register DataProtection_Azure asynchronously (OrchardCMS#14687) * Typos in Media (OrchardCMS#14708) * Update DocumentFormat.OpenXml 3.0.0 (OrchardCMS#14718) * mkdocs-material 9.4.10 * xUnit VS runner (OrchardCMS#14725) * Update xunit analyzers 1.6.0 (OrchardCMS#14724) * Update xunit 2.6.2 (OrchardCMS#14723) * Should not invalidate the cache of a Volatile Document. (OrchardCMS#14720) As it is never persisted and can't be retrieved from a given store, see PR comment. * Update Jint 3.0.0-beta-2056 (OrchardCMS#14729) * Fix the Github release action on Windows (OrchardCMS#14707) * Add a way to Remove User from a Role (Issue OrchardCMS#14632) (OrchardCMS#14652) --------- Co-authored-by: Mike Alhayek <[email protected]> * Update Microsoft.Identity.Web 2.15.5 (OrchardCMS#14733) * Update libphonenumber-csharp 8.13.24 (OrchardCMS#14734) * Fix Docker build (OrchardCMS#14736) * Fix docker build (OrchardCMS#14737) * Fix doc semantic error (OrchardCMS#14742) * mkdocs-material>=9.4.11 * Add Async method to ContentDefinitionManager to prevent possible thread starvation (OrchardCMS#14668) * Cleanup notifications module (OrchardCMS#14745) * Pre-render Navbar to allow resource injection (OrchardCMS#14747) * Add As/Put method to ISite to allow caching (OrchardCMS#14372) * Typo (OrchardCMS#14741) * Cleanup (OrchardCMS#14740) * Remove compiler directives (OrchardCMS#14739) * mkdocs-material 9.4.12 * Update HtmlSanitizer 8.0.795 (OrchardCMS#14753) * Update AngleSharp 1.0.6 (OrchardCMS#14673) * pymdown-extensions 10.5 * mkdocs-material 9.4.13 * Pre-render Navbar to allow resource injection (OrchardCMS#14755) * Don't throw lock timeout if shell activated (OrchardCMS#14756) * Azure DP Initializer (OrchardCMS#14750) * mkdocs-material 9.4.14 * Update Microsoft.Identity.Web 2.16.0 (OrchardCMS#14778) * Missing OC.Media dependency (OrchardCMS#14758) * Remove the double scroll in the notification item (OrchardCMS#14781) * Update libphonenumber-csharp 8.13.26 (OrchardCMS#14788) * Fix multi-targeting file locks (OrchardCMS#14732) * Fix send button style in OC.Email (OrchardCMS#14804) * Adding helpful methods for ContentPart, ContentType builders and Cont… (OrchardCMS#14717) * Add full type name for Lucene lock type In net9.0 the runtime now exposes it's own `Lock` type, dotnet/runtime#87672. This causes a build break as there is a collision between the Lucene type and the runtime type. --------- Co-authored-by: Antoine Griffard <[email protected]> Co-authored-by: Sébastien Ros <[email protected]> Co-authored-by: Mike Alhayek <[email protected]> Co-authored-by: Hisham Bin Ateya <[email protected]> Co-authored-by: ludovic-th <[email protected]> Co-authored-by: Tony Han <[email protected]> Co-authored-by: Jean-Thierry Kéchichian <[email protected]> Co-authored-by: Steven Spits <[email protected]> Co-authored-by: vjacquet <[email protected]> Co-authored-by: Vincent Jacquet <[email protected]> Co-authored-by: Szymon Seliga <[email protected]> Co-authored-by: Emrah Tokalak <[email protected]> Co-authored-by: Andrii Chebukin <[email protected]> Co-authored-by: yaricrolletservico <[email protected]> Co-authored-by: Thomas Bolon <[email protected]> Co-authored-by: yk <[email protected]> Co-authored-by: Krisztián Németh <[email protected]> Co-authored-by: lampersky <[email protected]> Co-authored-by: Szabolcs Deme <[email protected]> Co-authored-by: Zoltán Lehóczky <[email protected]> Co-authored-by: Spyros <[email protected]> Co-authored-by: Matt Varblow <[email protected]> Co-authored-by: Banzai316 <[email protected]> Co-authored-by: minhtaile2712 <[email protected]>
Fix #14338
@sebastienros @jtkech I did some tests on MySQL and all seems to be working as expected. I also did the same test with Sqlite.
After creating a tenant on MySQL I run this command
SHOW CREATE TABLE oc.textfieldindex
And it returned as you can see the
246
length on the key