-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DOC Changing ClassName from Enum to Varchar
- Loading branch information
1 parent
9304c71
commit d980a50
Showing
2 changed files
with
61 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
--- | ||
title: 5.4.0 (unreleased) | ||
--- | ||
|
||
# 5.4.0 (unreleased) | ||
|
||
## Overview | ||
|
||
- [Features and enhancements](#features-and-enhancements) | ||
- [Option to change `ClassName` column from enum to varchar](#classname-varchar) | ||
- [Other new features](#other-new-features) | ||
- [API changes](#api-changes) | ||
- [Bug fixes](#bug-fixes) | ||
|
||
## Features and enhancements | ||
|
||
### Option to change `ClassName` column from enum to varchar {#classname-varchar} | ||
|
||
On websites with very large database tables it can take a long time to run `dev/build`, which can be a problem when deploying changes to production. This is because the `ClassName` column is an `enum` type which requires an a `ALTER TABLE` query to be run affecting every row whenever there is a new valid value for the column. For a very rough benchmark, running an `ALTER TABLE` query on a database table of 10 million records took 28.52 seconds on a mid-range 2023 laptop, though this time will vary depending on the database and hardware being used. | ||
|
||
This release introduces a new configuration option to change the `ClassName` column to a `varchar` type which removes the need to run `ALTER TABLE` whenever there is a new valid value. | ||
|
||
Enabling this will result in a trade-off where the size of the database will increase by approximately 7 MB per 100,000 rows. There will also be a very slow initial `dev/build` as all of the `ClassName` columns are switched to `varchar`. To enable this, add the following configuration: | ||
|
||
```yml | ||
SilverStripe\ORM\DataObject: | ||
fixed_fields: | ||
ClassName: DBClassNameVarchar | ||
``` | ||
### Other new features | ||
- (fill this is as features are added) | ||
## API changes | ||
- (fill this is as API changes are added) | ||
## Bug fixes | ||
- (fill this is as bug fixes are added) | ||
This release includes a number of bug fixes to improve a broad range of areas. Check the change logs for full details of these fixes split by module. Thank you to the community members that helped contribute these fixes as part of the release! | ||
<!--- Changes below this line will be automatically regenerated --> | ||
<!--- Changes above this line will be automatically regenerated --> |