diff --git a/src/Schema/CockroachGrammar.php b/src/Schema/CockroachGrammar.php index 1731928..b116a24 100644 --- a/src/Schema/CockroachGrammar.php +++ b/src/Schema/CockroachGrammar.php @@ -34,4 +34,21 @@ public function compileDropFullText(Blueprint $blueprint, Fluent $command) { return $this->compileDropIndex($blueprint, $command); } + + /** + * Compile a drop unique key command. + * + * CockroachDB doesn't support alter table for dropping unique indexes. + * https://github.com/cockroachdb/cockroach/issues/42840?version=v22.1 + * + * @param \Illuminate\Database\Schema\Blueprint $blueprint + * @param \Illuminate\Support\Fluent $command + * @return string + */ + public function compileDropUnique(Blueprint $blueprint, Fluent $command) + { + $index = $this->wrap($command->index); + + return "drop index {$this->wrapTable($blueprint)}@{$index} cascade"; + } } diff --git a/tests/Database/DatabaseCockroachDbSchemaGrammarTest.php b/tests/Database/DatabaseCockroachDbSchemaGrammarTest.php index 3a9d93c..b780fbf 100644 --- a/tests/Database/DatabaseCockroachDbSchemaGrammarTest.php +++ b/tests/Database/DatabaseCockroachDbSchemaGrammarTest.php @@ -140,7 +140,7 @@ public function test_drop_unique() $statements = $blueprint->toSql($this->getConnection(), $this->getGrammar()); $this->assertCount(1, $statements); - $this->assertSame('alter table "users" drop constraint "foo"', $statements[0]); + $this->assertSame('drop index "users"@"foo" cascade', $statements[0]); } public function test_drop_index()