From 3b5c29b0303f8d8d52c21ecd275592dac0dbb715 Mon Sep 17 00:00:00 2001 From: Dimitri Fontaine Date: Wed, 12 Feb 2020 21:50:18 +0100 Subject: [PATCH] Attempt to fix foreign-key creation to tables that have been filtered out. See #1016 where we try to build the DDL for a foreign key that references tables that are not found in our catalogs. We should probably just ignore those foreign keys, as we might have a partial load to implement. --- src/pgsql/pgsql-create-schema.lisp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/pgsql/pgsql-create-schema.lisp b/src/pgsql/pgsql-create-schema.lisp index e9640dbd..938e8750 100644 --- a/src/pgsql/pgsql-create-schema.lisp +++ b/src/pgsql/pgsql-create-schema.lisp @@ -233,8 +233,15 @@ (let ((fk-sql-list (loop :for table :in (table-list catalog) :append (loop :for fkey :in (table-fkey-list table) - :for sql := (format-create-sql fkey) - :collect sql) + ;; we might have loaded fkeys referencing tables that + ;; have not been included in (or have been excluded + ;; from) the load + :unless (and (fkey-table fkey) + (fkey-foreign-table fkey)) + :do (log-message :debug "Skipping foreign key ~a" fkey) + :when (and (fkey-table fkey) + (fkey-foreign-table fkey)) + :collect (format-create-sql fkey)) :append (loop :for index :in (table-index-list table) :do (loop :for fkey :in (index-fk-deps index) :for sql := (format-create-sql fkey)