Browse Source

Merge branch '4.x' into 4.next

Mark Story 4 years ago
parent
commit
85d240d8a3

+ 3 - 1
src/Database/Schema/SqlserverSchemaDialect.php

@@ -664,7 +664,9 @@ class SqlserverSchemaDialect extends SchemaDialect
             $column = $schema->getColumn($pk[0]);
             if (in_array($column['type'], ['integer', 'biginteger'])) {
                 $queries[] = sprintf(
-                    "DBCC CHECKIDENT('%s', RESEED, 0)",
+                    "IF EXISTS (SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = '%s' AND " .
+                    "last_value IS NOT NULL) DBCC CHECKIDENT('%s', RESEED, 0)",
+                    $schema->name(),
                     $schema->name()
                 );
             }

+ 1 - 1
src/Datasource/Paginator.php

@@ -669,7 +669,7 @@ class Paginator implements PaginatorInterface
     public function checkLimit(array $options): array
     {
         $options['limit'] = (int)$options['limit'];
-        if (empty($options['limit']) || $options['limit'] < 1) {
+        if ($options['limit'] < 1) {
             $options['limit'] = 1;
         }
         $options['limit'] = max(min($options['limit'], $options['maxLimit']), 1);

+ 5 - 1
tests/TestCase/Database/Schema/SqlserverSchemaTest.php

@@ -1101,7 +1101,11 @@ SQL;
         $result = $table->truncateSql($connection);
         $this->assertCount(2, $result);
         $this->assertSame('DELETE FROM [schema_articles]', $result[0]);
-        $this->assertSame("DBCC CHECKIDENT('schema_articles', RESEED, 0)", $result[1]);
+        $this->assertSame(
+            "IF EXISTS (SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'schema_articles' AND last_value IS NOT NULL) " .
+            "DBCC CHECKIDENT('schema_articles', RESEED, 0)",
+            $result[1]
+        );
     }
 
     /**