"Joel Jacobson" <j...@compiler.org> writes: > I could only find one minor error, > found by running the regression-tests, > and then using the query below to compare "is_opt" > with my own "zero_values" in my tool > that derives its value from pg_catalog content. > ... > I therefore think is_opt should be changed to true for this row: > fktable | fkcols | pktable | pkcols | > is_array | is_opt > ---------------+---------------------+--------------+-------------------+----------+-------- > pg_constraint | {confrelid,confkey} | pg_attribute | {attrelid,attnum} | t > | f
No, I think it's correct as-is (and this is one reason that I chose to have two separate FK entries for cases like this). confrelid can be zero in rows that are not FK constraints. However, such a row must also have empty confkey. The above entry states that for each element of confkey, the pair (confrelid,confkey[i]) must be nonzero and have a match in pg_attribute. It creates no constraint if confkey is empty. > If this is fixed, I also agree this is ready to be committed. Appreciate the review! Please confirm if you agree with above analysis. regards, tom lane