Skip to content

Commit f55b31e

Browse files
use native column modifying by default
1 parent ca78589 commit f55b31e

File tree

4 files changed

+17
-52
lines changed

4 files changed

+17
-52
lines changed

src/Illuminate/Database/Schema/Builder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ class Builder
4646
public static $defaultMorphKeyType = 'int';
4747

4848
/**
49-
* Indicates whether Doctrine DBAL usage will be prevented if possible when dropping, renaming, and modifying columns.
49+
* Indicates whether Doctrine DBAL usage will be prevented if possible when modifying columns.
5050
*
5151
* @var bool
5252
*/
53-
public static $alwaysUsesNativeSchemaOperationsIfPossible = false;
53+
public static $alwaysUsesNativeSchemaOperationsIfPossible = true;
5454

5555
/**
5656
* Create a new database Schema manager.

tests/Integration/Database/DBAL/TimestampTypeTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public function testChangeStringColumnToTimestampColumn()
8585

8686
$queries = $blueprint->toSql($this->getConnection(), $this->getConnection()->getSchemaGrammar());
8787

88-
$expected = ['ALTER TABLE test CHANGE string_to_timestamp string_to_timestamp TIMESTAMP NULL DEFAULT NULL'];
88+
$expected = ['alter table `test` modify `string_to_timestamp` timestamp null'];
8989

9090
$this->assertEquals($expected, $queries);
9191
}

tests/Integration/Database/DatabaseSchemaBlueprintTest.php

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ class DatabaseSchemaBlueprintTest extends TestCase
1616
{
1717
protected function setUp(): void
1818
{
19-
$this->beforeApplicationDestroyed(function () {
20-
Schema::useNativeSchemaOperationsIfPossible(false);
21-
});
22-
2319
parent::setUp();
2420
}
2521

@@ -64,8 +60,6 @@ public function testRenamingColumnsWithoutDoctrineWorks()
6460
$connection = DB::connection();
6561
$schema = $connection->getSchemaBuilder();
6662

67-
$schema->useNativeSchemaOperationsIfPossible();
68-
6963
$base = new Blueprint('users', function ($table) {
7064
$table->renameColumn('name', 'new_name');
7165
});
@@ -102,8 +96,6 @@ public function testDroppingColumnsWithoutDoctrineWorks()
10296
$connection = DB::connection();
10397
$schema = $connection->getSchemaBuilder();
10498

105-
$schema->useNativeSchemaOperationsIfPossible();
106-
10799
$blueprint = new Blueprint('users', function ($table) {
108100
$table->dropColumn('name');
109101
});
@@ -116,8 +108,6 @@ public function testNativeColumnModifyingOnMySql()
116108
$connection = DB::connection();
117109
$schema = $connection->getSchemaBuilder();
118110

119-
$schema->useNativeSchemaOperationsIfPossible();
120-
121111
$blueprint = new Blueprint('users', function ($table) {
122112
$table->double('amount', 6, 2)->nullable()->invisible()->after('name')->change();
123113
$table->timestamp('added_at', 4)->nullable(false)->useCurrent()->useCurrentOnUpdate()->change();
@@ -144,8 +134,6 @@ public function testNativeColumnModifyingOnPostgreSql()
144134
$connection = DB::connection();
145135
$schema = $connection->getSchemaBuilder();
146136

147-
$schema->useNativeSchemaOperationsIfPossible();
148-
149137
$blueprint = new Blueprint('users', function ($table) {
150138
$table->integer('code')->autoIncrement()->from(10)->comment('my comment')->change();
151139
});
@@ -220,8 +208,6 @@ public function testNativeColumnModifyingOnSqlServer()
220208
$connection = DB::connection();
221209
$schema = $connection->getSchemaBuilder();
222210

223-
$schema->useNativeSchemaOperationsIfPossible();
224-
225211
$blueprint = new Blueprint('users', function ($table) {
226212
$table->timestamp('added_at', 4)->nullable(false)->useCurrent()->change();
227213
});
@@ -438,11 +424,7 @@ public function testAddUniqueIndexWithoutNameWorks()
438424

439425
$expected = [
440426
[
441-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
442-
'DROP TABLE users',
443-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL)',
444-
'INSERT INTO users (name) SELECT name FROM __temp__users',
445-
'DROP TABLE __temp__users',
427+
'alter table `users` modify `name` varchar(255) null',
446428
'alter table `users` add unique `users_name_unique`(`name`)',
447429
],
448430
];
@@ -457,13 +439,9 @@ public function testAddUniqueIndexWithoutNameWorks()
457439

458440
$expected = [
459441
[
460-
461-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
462-
'DROP TABLE users',
463-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL)',
464-
'INSERT INTO users (name) SELECT name FROM __temp__users',
465-
'DROP TABLE __temp__users',
442+
'alter table "users" alter column "name" type varchar(255), alter column "name" drop not null, alter column "name" drop default, alter column "name" drop identity if exists',
466443
'alter table "users" add constraint "users_name_unique" unique ("name")',
444+
'comment on column "users"."name" is NULL',
467445
],
468446
];
469447

@@ -496,11 +474,8 @@ public function testAddUniqueIndexWithoutNameWorks()
496474

497475
$expected = [
498476
[
499-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
500-
'DROP TABLE users',
501-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL)',
502-
'INSERT INTO users (name) SELECT name FROM __temp__users',
503-
'DROP TABLE __temp__users',
477+
"DECLARE @sql NVARCHAR(MAX) = '';SELECT @sql += 'ALTER TABLE [dbo].[users] DROP CONSTRAINT ' + OBJECT_NAME([default_object_id]) + ';' FROM sys.columns WHERE [object_id] = OBJECT_ID('[dbo].[users]') AND [name] in ('name') AND [default_object_id] <> 0;EXEC(@sql)",
478+
'alter table "users" alter column "name" nvarchar(255) null',
504479
'create unique index "users_name_unique" on "users" ("name")',
505480
],
506481
];
@@ -522,11 +497,7 @@ public function testAddUniqueIndexWithNameWorks()
522497

523498
$expected = [
524499
[
525-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
526-
'DROP TABLE users',
527-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL)',
528-
'INSERT INTO users (name) SELECT name FROM __temp__users',
529-
'DROP TABLE __temp__users',
500+
'alter table `users` modify `name` varchar(255) null',
530501
'alter table `users` add unique `index1`(`name`)',
531502
],
532503
];
@@ -540,12 +511,9 @@ public function testAddUniqueIndexWithNameWorks()
540511
$queries = $blueprintPostgres->toSql(DB::connection(), new PostgresGrammar);
541512

542513
$expected = [
543-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
544-
'DROP TABLE users',
545-
'CREATE TABLE users (name INTEGER UNSIGNED DEFAULT NULL)',
546-
'INSERT INTO users (name) SELECT name FROM __temp__users',
547-
'DROP TABLE __temp__users',
514+
'alter table "users" alter column "name" type integer, alter column "name" drop not null, alter column "name" drop default, alter column "name" drop identity if exists',
548515
'alter table "users" add constraint "index1" unique ("name")',
516+
'comment on column "users"."name" is NULL',
549517
];
550518

551519
$this->assertEquals($expected, $queries);
@@ -574,11 +542,8 @@ public function testAddUniqueIndexWithNameWorks()
574542
$queries = $blueprintSqlServer->toSql(DB::connection(), new SqlServerGrammar);
575543

576544
$expected = [
577-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
578-
'DROP TABLE users',
579-
'CREATE TABLE users (name INTEGER UNSIGNED DEFAULT NULL)',
580-
'INSERT INTO users (name) SELECT name FROM __temp__users',
581-
'DROP TABLE __temp__users',
545+
"DECLARE @sql NVARCHAR(MAX) = '';SELECT @sql += 'ALTER TABLE [dbo].[users] DROP CONSTRAINT ' + OBJECT_NAME([default_object_id]) + ';' FROM sys.columns WHERE [object_id] = OBJECT_ID('[dbo].[users]') AND [name] in ('name') AND [default_object_id] <> 0;EXEC(@sql)",
546+
'alter table "users" alter column "name" int null',
582547
'create unique index "index1" on "users" ("name")',
583548
];
584549

tests/Integration/Database/SchemaBuilderTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ public function testChangeToTextColumn()
105105

106106
$queries = $blueprint->toSql($this->getConnection(), $this->getConnection()->getSchemaGrammar());
107107

108-
$uppercase = strtoupper($type);
108+
$uppercase = strtolower($type);
109109

110-
$expected = ["ALTER TABLE test CHANGE test_column test_column $uppercase NOT NULL"];
110+
$expected = ["alter table `test` modify `test_column` $uppercase not null"];
111111

112112
$this->assertEquals($expected, $queries);
113113
}
@@ -130,9 +130,9 @@ public function testChangeTextColumnToTextColumn()
130130

131131
$queries = $blueprint->toSql($this->getConnection(), $this->getConnection()->getSchemaGrammar());
132132

133-
$uppercase = strtoupper($type);
133+
$uppercase = strtolower($type);
134134

135-
$expected = ["ALTER TABLE test CHANGE test_column test_column $uppercase NOT NULL"];
135+
$expected = ["alter table `test` modify `test_column` $uppercase not null"];
136136

137137
$this->assertEquals($expected, $queries);
138138
}

0 commit comments

Comments
 (0)