Problem/Motivation

Proposed resolution

  • Enforce a maximum key length of 333 characters.
  • Throw a typed exception if a module declares a schema with a key that is longer than 333 characters.
  • Implement this in Drupal\Core\Database\Schema. Despite that it's a MySQL limitation, as chx put it, "writing a non-mysql compliant database schema should be frown upon" and "all database drivers are equal but some are more equal than others."

Remaining tasks

The attached patch adds a class constant and a typed exception. Still to do:

  • Actually throw the exception.
  • Add test coverage.
  • Create a change notification.
  • Update http://drupal.org/node/146843 to document the limitation.

API changes

  • The constant Drupal\Core\Database\Schema::MAX_KEY_LENGTH is added.
  • Database table keys added by hook_schema() are explicitly limited to 333 total characters.
CommentFileSizeAuthor
#91 database-schema-1852896-91.patch8.24 KBpk188
#89 database-schema-1852896-89.patch8.87 KBpk188
#76 interdiff.txt692 bytesandypost
#75 database-schema-1852896-75.patch8.79 KBpuregin
#75 interdiff-69-75.txt230 bytespuregin
#69 database-schema-1852896-69.patch8.79 KBpuregin
#69 interdiff-57-69.txt3.58 KBpuregin
#66 interdiff-57-65.txt3.58 KBpuregin
#64 database-schema-1852896-64.patch8.53 KBpuregin
#57 database-schema-1852896-57.patch8.41 KBBerdir
#53 schema-interdiff.txt1.57 KBxjm
#52 database-schema-1852896-52-FAIL.patch3.11 KBxjm
#52 database-schema-1852896-52-PASS.patch8.95 KBxjm
#51 database-schema-1852896-51-do-not-test.patch20.94 KBxjm
#51 schema-interdiff.txt2.14 KBxjm
#51 users_data.png17.49 KBxjm
#49 database-schema-1852896-49-FAIL.patch3.11 KBxjm
#49 database-schema-1852896-49-PASS.patch7.98 KBxjm
#49 array-syntax-failure.txt702 bytesxjm
#47 database-schema-1852896-47-FAIL.patch3.11 KBxjm
#47 database-schema-1852896-47-PASS.patch7.98 KBxjm
#47 schema-interdiff.txt6.08 KBxjm
#44 database-schema-1852896-44.patch5.75 KBxjm
#44 interdiff-gross.txt4.67 KBxjm
#28 database-schema-1852896-28.patch3.92 KBBerdir
#27 database-schema-1852896-27-do-not-test.patch3.92 KBxjm
#27 database-schema-1852896-27-with-1871032.patch4.95 KBxjm
#27 interdiff.txt2.07 KBxjm
#18 schema.index_.18.patch3.43 KBsun
#16 schema.index_.16.patch3.43 KBsun
schema-max-key-length.patch1.49 KBxjm
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

xjm’s picture

Status: Active » Needs review
xjm’s picture

Status: Needs review » Needs work
chx’s picture

Also note that the comments needs to say MyISAM incompatible, not MySQL incompatible, MySQL is a somewhat thin layer around its storage engines. You can include really crazy things as MySQL storage engines, like http://blog.mariadb.org/announcing-the-cassandra-storage-engine/ . So it's the storage engine that has limits like this not MySQL. And while Drupal defaults to InnoDB to avoid a complicated discussion on whether a table is best as InnoDB or MyISAM, the latter still has its uses -- having deadlocks is just one of the horrific tolls you pay for the ACID compliance of InnoDB.

In short: yes, enforce 333 because it's the lower common denominator and do not make Drupal MyISAM incompatible.

chx’s picture

To be perfectly honest we do not necessarily need to restrict the column length themselves, we could even revert the quickfix I filed for the user data patch -- we could just use the length in the index. Something like array(uid, array(module, 128), array(name, 128)) and have name for example become a TEXT even. Yea that would be better.

sun’s picture

Calculating the total length of indexes (taking explicitly specified limits into account but otherwise falling back on the column schema definitions) and throwing an exception makes sense to me.

However, no need to revert the user.data fix, as we still need to limit the module name length throughout Drupal core, since that has additional, other consequences.

chx’s picture

making name a TEXT in userdata however would make sense given it comes from a PHP array which had no limitations...

sun’s picture

{users_data}.value is a blob already. .name is limited to 128 chars, which should be sufficient for all use-cases. If there is something longer, then that's what the upgrade path is for.

chx’s picture

The upgrade path is going to break if the original blob contained two array keys equal at the first 128 characters:

    $data = unserialize($data);
      foreach ($data as $name => $value) {
        $query->values(array(
          'uid' => $uid,
          'name' => $name,

see.

pillarsdotnet’s picture

pillarsdotnet’s picture

pillarsdotnet’s picture

chx’s picture

Title: Throw an exception if a schema defines a key that is over 333 characters » Do something if a schema defines a key that is over 333 characters

Yes, those were quotes only because I said them on IRC.

There's a certain difference between a call that gives you a fatal on some log page which can be fixed by deleting a single line from the database and a Drupal that simply does not install on certain system which is what this issue is about.

Yes we are database agnostic which means that we really to write against the lowest common denominator.

Of course, as I mentioned above, an exception might not be necessary. We might just add something to the MySQL driver to enforce a summary key length of 1000, for example, by enforcing a max 64 character index column length on VARCHAR if the total character number is above 333.

xjm’s picture

Throwing typed exceptions is not babysitting broken code. It's the opposite of babysitting broken code. It's preventing regressions from being introduced repeatedly and senselessly. See the issues in the summary.

sun’s picture

I'd rather object to db-driver specific magic. At least I don't see how a machine can do informed decisions on which parts of an index can be shortened and which cannot. That's something the application developer/DBA has to define based on the business logic.

I actually don't see what's wrong with throwing an exception early and unconditionally. If that means that developers are not able to install or update a module or even entire Drupal at all, and they immediately get to know that they need to fix stuff, that's positive in my book.

chx’s picture

Title: Do something if a schema defines a key that is over 333 characters » Throw an exception if a schema defines a key that is over 333 characters

Sure I am fine with an exception too. Just wanted to say, we do not need to shorten the DB columns themselves -- we can shorten the index only which IMO is not something we typically did before.

sun’s picture

Status: Needs work » Needs review
FileSize
3.43 KB

Another one: #1871032: Taxonomy module fails to install on MyISAM due to too long schema index

So here's an initial proposed table index validation implementation.

The validation is only possible when creating a new table, since we need access to the full table definition. Therefore, the validation cannot run when adding new fields, changing fields, or adding individual indexes.

Status: Needs review » Needs work

The last submitted patch, schema.index_.16.patch, failed testing.

sun’s picture

Status: Needs work » Needs review
FileSize
3.43 KB

Sorry.

Status: Needs review » Needs work

The last submitted patch, schema.index_.18.patch, failed testing.

chx’s picture

This is not why the patch fails but +class SchemaIndexLengthException extends SchemaException implements DatabaseException { } the implements is not necessary, http://api.drupal.org/api/drupal/core!lib!Drupal!Core!Database!SchemaExc... already implements DatabaseException . Also, throw new SchemaIndexLengthException(t('Table index @name is too long. Found @length characters (exceeds maximum of @max).', array( i think we format_string in exception, it's not useful to translate those.

sun’s picture

Yeah, the actual reason is that the Standard profile fails to install with:

Table index taxonomy_tree is too long. Found 510 characters (exceeds maximum of 333).

:) — which means that we need to fix #1871032: Taxonomy module fails to install on MyISAM due to too long schema index first. I already proposed a fix over there.

andypost’s picture

Also we need a help page to describe this because there's a different ways to fix index length

1) recompile mysql with bigger limit
2) make a truncated index like #1871032-11: Taxonomy module fails to install on MyISAM due to too long schema index

xjm’s picture

Status: Needs work » Needs review

#18: schema.index_.18.patch queued for re-testing.

Status: Needs review » Needs work

The last submitted patch, schema.index_.18.patch, failed testing.

xjm’s picture

+++ b/core/lib/Drupal/Core/Database/Schema.phpundefined
@@ -668,6 +681,47 @@ public function createTable($name, $table) {
+    if (isset($table['primary key'])) {
+      $spec['primary key'] = array('primary key' => $table['primary key']);
+    }
+    foreach ($spec as $type => $keys) {
+      foreach ($keys as $name => $fields) {
+        $length = 0;
+        foreach ($fields as $field) {
+          if (is_string($field)) {
+            // @todo What's the length of fields that don't have a length? Also, INT columns?
+            if (isset($table['fields'][$field]['length'])) {
+              $length += $table['fields'][$field]['length'];

I don't this work with the way the indexes are defined in #1871032-25: Taxonomy module fails to install on MyISAM due to too long schema index. Does it?

+++ b/core/lib/Drupal/Core/Database/Schema.phpundefined
@@ -668,6 +681,47 @@ public function createTable($name, $table) {
+          throw new SchemaIndexLengthException(t('Table index @name is too long. Found @length characters (exceeds maximum of @max).', array(
+            '@name' => $name,
+            '@length' => $length,
+            '@max' => self::MAX_INDEX_LENGTH,
+          )));

I think exceptions are not supposed to be translated? #817160: Don't translate exceptions

sun’s picture

It could probably use a comment, but yes, this works - the else condition retrieves the trimmed/limited length for the column from the key definition:

+        foreach ($fields as $field) {
           # 'foo'
+          if (is_string($field)) {
...
+          }
           # array('foo', 64)
+          else {
+            $length += $field[1];
+          }
xjm’s picture

Assigned: xjm » Unassigned
Status: Needs work » Needs review
FileSize
2.07 KB
4.95 KB
3.92 KB

Oh! Clever. I see now.

Here's some comments, plus switching t() to format_string(). Turns out the array format for the index isn't really documented anywhere (that I could find) other than the ancient Schema API handbook page... The parameter documentation on Schema::addIndex() and friends could probably be updated to explain the two possible formats for the index fields.

I also rolled the patch together with #1871032: Taxonomy module fails to install on MyISAM due to too long schema index to confirm that it will work once that issue is committed.

Berdir’s picture

This is just a re-upload of database-schema-1852896-27-do-not-test.patch so that it can be tested now.

xjm’s picture

+++ b/core/lib/Drupal/Core/Database/Schema.phpundefined
@@ -668,6 +681,56 @@ public function createTable($name, $table) {
+            // @todo What's the length of fields that don't have a length?
+            // Also, INT columns?

So, the value we are actually concerned about is the total number of bytes (< 1000), and it'd depend on the size of the int, which is implementation-specific. However, we want to throw the exception based on the size of the index specifically on MyISAM... hmmm.

Edit: See http://drupal.org/node/159605 .

Berdir’s picture

I guess we need to check the other databases if there are similar limitations. But I think throwing an exception right there is given for something like this, where we know that it is not going to work for one of the supported backends and there is no way around it.

xjm’s picture

Well, I checked all the core-supported databases when I filed the issue, and MyISAM was the smallest by far. Details:
InnoDB: 3072 bytes http://dev.mysql.com/doc/refman/5.0/en/innodb-restrictions.html
Postgres: Seems to be configurable, but defaults to 2700ish? http://wiki.postgresql.org/wiki/FAQ#What_is_the_maximum_size_for_a_row.2..., http://stackoverflow.com/questions/4539443/postgresql-primary-key-length...
SQLite: Limits are configurable; no limit on index length outside of the maximum number of columns in the index (default 2000) and string length (default 1 billion) http://www.sqlite.org/limits.html

Googling this morning, I did discover some lower ones for databases not supported by core:
Oracle: Depends on block size; 758 with a 2K block http://www.dba-oracle.com/t_ora_01450_maximum_key_length_exceeded.htm
SQL Server: 900 bytes http://msdn.microsoft.com/en-us/library/ms191241(v=sql.105).aspx
However, I don't think we should worry about those on the schema level since core doesn't support them anyway.

xjm’s picture

So, how do we go about counting the MyISAM size of the non-text fields in the limit? Do we hardcode the MySQL key size of each and calculate the total number of bytes? That seems gross.

From http://drupal.org/node/159605 and createFieldSql(), the field types that don't have a length appear to be the numeric types, and BLOBs. If you are trying to put an index on a BLOB you deserve what you get. From the table, the biggest the numeric types get is 8 B (the equivalent of up to 3 characters), except numeric:

Values for DECIMAL (and NUMERIC) columns are represented using a binary format that packs nine decimal (base 10) digits into four bytes. Storage for the integer and fractional parts of each value are determined separately. Each multiple of nine digits requires four bytes, and the “leftover” digits require some fraction of four bytes. The storage required for excess digits is given by the following table.

http://dev.mysql.com/doc/refman/5.1/en//storage-requirements.html
So if there's a limit of 65 digits, and 4 bytes per nine digits, that's a maximum index size of 29 B for a numeric field, or (rounding up) the equivalent of ten characters.

xjm’s picture

We could just allot numeric a length of 10 "characters" in a constant, and any other numeric type a length of three "characters," and call that good. I don't know if we need to throw an exception that says "Don't put indexes on BLOBs."

tstoeckler’s picture

Well, both SQL Server and Oracle have pretty sophisticated drivers in contrib. I can see that it might not make sense to directly support that in core, but maybe we could at least make this easy to override for them. I'm not familiar enough with the DB system to know if one can override e.g. the \Drupal\Core\Database\Schema class (which the patch above modifies) as a contrib driver.
At the very least we should ping Damien Tournoud and aaaristo about this. It would be sad to see this nice in-depth research go to waste and then have them figure this out on their own when someone files a bug over there.

Berdir’s picture

@tstoeckler: The Schema class can and is extended by by all drivers, create table statements and so on are not really standardized anyway.

Also, this is not about driver-specific validation. That's not really necessary, if it will blow up for the driver that you are using then, well, it will blow up and you can fix it. This is validation for making sure that it works for all supported backends even if you are not using it yourself. And core has a hard enough time to maintain the supported backends (just check how many PostgreSQL 6.x -> 7.x uprade bugs are still open).

Making it a validation that prevents the installation of modules has the advantage over a test that it will also validate all contrib modules, as they are written.

tstoeckler’s picture

This is validation for making sure that it works for all supported backends even if you are not using it yourself.

Yes, that's how I understood the patch. I was assuming that we don't want to go the route of supporting Oracle and SQL Server directly in core (which would limit us to 260 characters if I'm not mistaken, per @xjm's findings). But if Schema is overridden anyway, those contrib backends can easily adjust Schema::MAX_INDEX_LENGTH that is introduced here and get the full benefit of the validation of this patch. Of course, they wouldn't have the full treatment of all (contrib) modules directly being validated, but still.

andypost’s picture

Postgresql have only 2 limits:
#1148856: Postgres schema doesn't support keylength on a unique index
and wiki

One limitation is that indexes can not be created on columns longer than about 2,000 characters.
xjm’s picture

Priority: Normal » Critical

This has happened one too many times. See #1969680: Installation fails with MyISAM - key too long.

#32 summarizes what this is stuck on. Feedback please. :)

xjm’s picture

Maybe we need to count MyISAM bytes rather than characters, and use 1000 as the max "byte" length or whatever.

Berdir’s picture

#28: database-schema-1852896-28.patch queued for re-testing.

Berdir’s picture

Re-tested to confirm that it should now correctly fail.

Status: Needs review » Needs work

The last submitted patch, database-schema-1852896-28.patch, failed testing.

chx’s picture

Let's not forget this for updates as well. #1976110: D8 upgrade path: file module; Update #8001 was reported.

xjm’s picture

Status: Needs work » Needs review
Issue tags: +Needs tests
FileSize
4.67 KB
5.75 KB

So, ugh. In order to take into account an arbitrary number of arbitrary-type fields added to the index, we essentially have to count how many bytes it would be in MySQL, and validate based on that.

xjm’s picture

+++ b/core/lib/Drupal/Core/Database/Schema.phpundefined
@@ -700,34 +700,100 @@ public function validateTable($name, array $table) {
+          throw new SchemaIndexLengthException('Table index @name exceeds the maximum allowed size.');

Oops, need that format_string().

xjm’s picture

Title: Throw an exception if a schema defines a key that is over 333 characters » Throw an exception if a schema defines a key that would be over 1000 bytes in MySQL

=/

xjm’s picture

With a test. I'll also try to write some unit tests for various table structures.

Status: Needs review » Needs work

The last submitted patch, database-schema-1852896-47-PASS.patch, failed testing.

xjm’s picture

Status: Needs work » Needs review
FileSize
702 bytes
7.98 KB
3.11 KB

Derp.

Status: Needs review » Needs work

The last submitted patch, database-schema-1852896-49-PASS.patch, failed testing.

xjm’s picture

Couple dumb bugs in there. I've got it working locally now... and it definitely works...

users_data.png

http://drupalcode.org/project/drupal.git/commitdiff/e83535c1c844da096ce4... reduced the index to exactly bytes (with an int at 4 bytes, while we're rounding up to 8). So either we can't punt on the numeric sizes by rounding up to 8, or we need to reduce the length of that field by another character. (Which should happen anyway in #1852454: Restrict module and theme name lengths to 50 characters.)

xjm’s picture

Status: Needs work » Needs review
FileSize
8.95 KB
3.11 KB

A more specific allotment for the numeric types, and a workaround for #1969680: Installation fails with MyISAM - key too long to allow the patch to be tested.

Aside, the thing where batch API just hangs and doesn't write fatals to the log is a pain. Anyone know of an issue for that?

xjm’s picture

FileSize
1.57 KB

Status: Needs review » Needs work
Issue tags: -Needs tests

The last submitted patch, database-schema-1852896-52-PASS.patch, failed testing.

Berdir’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work
Issue tags: +Needs tests

The last submitted patch, database-schema-1852896-52-PASS.patch, failed testing.

Berdir’s picture

Status: Needs work » Needs review
Issue tags: -Needs tests
FileSize
8.41 KB

Here's a re-roll.

My suggestion would be to get this in asap. We can always improve for other database backends, but it's main purpose is to notify us before we break this again and make @patrickd_drupal's life miserable :) That's not fair considering he's given us simplytest.me ;)

Status: Needs review » Needs work

The last submitted patch, database-schema-1852896-57.patch, failed testing.

catch’s picture

Priority: Critical » Normal

A MyISAM test bot would also solve this #697220: Run tests on all supported database servers. Downgrading to normal - I don't consider working around Drupal.org infrastructure a critical task.

Berdir’s picture

The advantage of having this as a core check means that it is detected much earlier and also for contrib and custom modules. If you wait until the testbot breaks, then even for core, it was already committed and you possibly need to think about upgrade changes and so on.

xjm’s picture

Right, it's still something we can fix, but we don't need to make it a top priority if we can do a better job of catching environment-specific regressions. This fix would catch only one particular such regression. :)

xjm’s picture

xjm’s picture

Issue tags: +Testbot environments
puregin’s picture

Rerolled patch from #57

disasm’s picture

Status: Needs work » Needs review
puregin’s picture

Status: Needs review » Needs work
FileSize
3.58 KB

Forgot to attach my interdiff for the previous patchfile.

This fixes a couple of bugs in testSchemaMaxIndexSize() in SchemaTest.php.

First, the size of an Int in a MySQL table is 4 bytes, not 8, so the size calculations
were off. I corrected the test by adding an additional int field to the test table
and key.

Also fixed the name of the variable referencing the test table.

Finally, corrected the messages reported by the tests themselves.

The tests all pass for me now, BUT there is now a DatabaseException thrown:

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42000]: Syntax error or access violation: 1170 BLOB/TEXT column 'text_field_1' used in key specification without a key length: CREATE TABLE {test_table} ( `text_field_1` TEXT(255) DEFAULT NULL, `text_field_2` TEXT(66) DEFAULT NULL, `numeric_field` DECIMAL DEFAULT NULL, `int_field_1` INT DEFAULT NULL, `int_field_2` INT DEFAULT NULL, PRIMARY KEY (`int_field_1`, `text_field_1`, `text_field_2`, `numeric_field`, `int_field_2`) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COMMENT 'Test schema table.'; 

This appears to be due to MySQL constraints on the primary key.

puregin’s picture

Status: Needs work » Needs review

Argh. I fat-fingered the status, setting back to needs review.

Status: Needs review » Needs work

The last submitted patch, database-schema-1852896-64.patch, failed testing.

puregin’s picture

Status: Needs work » Needs review
FileSize
3.58 KB
8.79 KB

OK, I think I finally have this right. Sorry for the confusion. Comment #66 still applies.

Status: Needs review » Needs work

The last submitted patch, database-schema-1852896-69.patch, failed testing.

xjm’s picture

Assigned: xjm » Unassigned
alexpott’s picture

Considering that the primary goal of this issue is to ensure that Drupal 8.x HEAD continues to work on MyISAM I think we should just move this to a test that:

  • loads all the module install files
  • invokes all the schema to build a schema array
  • tests the indexes on these schema to ensure they will work with MyISAM
  • if an incompatible index is discovered assert a fail
xjm’s picture

So #72 would resolve the problem for core, but not for contrib. We could repurpose the code in Schema::indexSize() for such a test.

puregin’s picture

Changing the type of the two text fields used for keys from text to varchar makes the test pass.

I suppose this raises the question of whether there should be a test for primary keys containing text/blob fields.

puregin’s picture

Status: Needs work » Needs review
FileSize
230 bytes
8.79 KB

New patch with two line change as suggested in #74.

andypost’s picture

FileSize
692 bytes

I'd like to mention here that we have upgrade path broken for now - all upgrade tests are failed in myIsam environment
Failed: Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes: ALTER TABLE {file_usage} CHANGE `id` `id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'The primary key of the object using the file.'; Array ( ) in Drupal\Core\Database\Connection->query() (line 571 of ..../core/lib/Drupal/Core/Database/Connection.php).

A quick hack to allow pass tests attached.

andypost’s picture

Issue summary: View changes

Updated issue summary.

andypost’s picture

Issue tags: +Needs reroll
danblack’s picture

xjm’s picture

Status: Needs review » Needs work

The last submitted patch, 75: database-schema-1852896-75.patch, failed testing.

alexpott’s picture

We need to re-look at the key length limit since we no longer support MyISAM (#2275535: [policy, no patch] Drop support for non-transactional database engines (including MyISAM)). InnoDB has a different max length and I'm not sure about postgres or SQLite.

xjm’s picture

At this point I would just suggest wontfixing this issue.

danblack’s picture

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

geerlingguy’s picture

Prefixes can be up to 767 bytes long for InnoDB tables or 3072 bytes if the innodb_large_prefix option is enabled however innodb_large_index was only introduced in 5.5.14.

Is there actually a innodb_large_index configuration? I can't seem to find any documentation for it, and I'm hitting the error Specified key was too long; max key length is 1000 bytes when trying to convert tables to utf8mb4 (see #2762599: PDOException while converting cache_block table). It seems the problem is an index on the filter_format table.

[Edit: Note that the problem I was encountering was due to trying to convert a really old MyISAM-ridden database to UTF8mb4; after converting its tables to InnoDB everything worked fine.]

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

pk188’s picture

Status: Needs work » Needs review
Issue tags: -Needs reroll
FileSize
8.87 KB

Re rolled. With last few lines not changed.

Status: Needs review » Needs work

The last submitted patch, 89: database-schema-1852896-89.patch, failed testing.

pk188’s picture

Status: Needs work » Needs review
FileSize
8.24 KB

Re rolled.

Status: Needs review » Needs work

The last submitted patch, 91: database-schema-1852896-91.patch, failed testing.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.