Declarative schema: Incorrect Foreign Key Diff

We created a new table using M2’s declarative scheme like this:

<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">     <table name="company_quote_item_original_sku" engine="innodb" resource="default" comment="">         <column xsi:type="int" name="entity_id" padding="10" unsigned="true" nullable="false" identity="true" comment=""/>         <column xsi:type="int" name="quote_item_id" padding="10" unsigned="true" nullable="false" comment=""/>         <column xsi:type="varchar" name="original_sku" nullable="true" length="255" comment=""/>         <constraint xsi:type="primary" referenceId="PRIMARY">             <column name="entity_id"/>         </constraint>         <constraint xsi:type="foreign" referenceId="FK_QUOTE_ITEM_ID" table="company_quote_item_original_sku"             column="quote_item_id" referenceTable="quote_item" referenceColumn="item_id"             onDelete="CASCADE"/>     </table> </schema> 

This worked great. Then we tried to add another table by updating the schema, like so:

<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">     <table name="company_quote_item_original_sku" engine="innodb" resource="default" comment="">         <column xsi:type="int" name="entity_id" padding="10" unsigned="true" nullable="false" identity="true" comment=""/>         <column xsi:type="int" name="quote_item_id" padding="10" unsigned="true" nullable="false" comment=""/>         <column xsi:type="varchar" name="original_sku" nullable="true" length="255" comment=""/>         <constraint xsi:type="primary" referenceId="PRIMARY">             <column name="entity_id"/>         </constraint>         <constraint xsi:type="foreign" referenceId="FK_QUOTE_ITEM_ID" table="company_quote_item_original_sku"             column="quote_item_id" referenceTable="quote_item" referenceColumn="item_id"             onDelete="CASCADE"/>     </table>      <table name="company_order_item_original_sku" engine="innodb" resource="default" comment="">         <column xsi:type="int" name="entity_id" padding="10" unsigned="true" nullable="false" identity="true" comment=""/>         <column xsi:type="int" name="order_item_id" padding="10" unsigned="true" nullable="false" comment=""/>         <column xsi:type="varchar" name="original_sku" nullable="true" length="255" comment=""/>         <constraint xsi:type="primary" referenceId="PRIMARY">             <column name="entity_id"/>         </constraint>         <constraint xsi:type="foreign" referenceId="FK_ORDER_ITEM_ID" table="company_order_item_original_sku"             column="order_item_id" referenceTable="sales_order_item" referenceColumn="item_id"             onDelete="CASCADE"/>     </table> </schema> 

This triggered the following error:

General error: 1826 Duplicate FOREIGN KEY constraint name 'magento2/COMPANY_QUOTE_ITEM_ORIGINAL_SKU_QUOTE_ITEM_ID_QUOTE_ITEM_ITEM_ID'  ALTER TABLE `company_quote_item_original_sku` MODIFY COLUMN `entity_id` int(10) UNSIGNED NOT NULL  AUTO_IN CREMENT COMMENT "", MODIFY COLUMN `quote_item_id` int(10) UNSIGNED NOT NULL   COMMENT "", MODIFY COLUMN `original_sku` varchar(255) NULL  COMMENT "", ADD CONSTRAINT `COMPANY_QUOTE_ITEM_ORIGINAL_SKU_QUOTE_ITEM_ID_QUOTE_ITEM_ITEM_ID` FOREIGN KEY (`quote_item_id`) REFER ENCES `quote_item` (`item_id`)  ON DELETE CASCADE, COMMENT='' 

It looks like Magento is incorrectly diffing my existing table and the new schema-generated table. It should do a REMOVE before it does the ADD on the constraint, but it doesn’t.

Has anyone seen this before?