Michael Paquier <mich...@paquier.xyz> writes: > If I'm parsing the spec right, the doc mentions in its 5)~6) of the > syntax rules in CREATE SCHEMA that non-schema-qualified objects should > use the new schema name defined in the CREATE SCHEMA query. So that > pretty much settles the rules to use when having a new object that has > a reference to a non-qualified object created in the same CREATE > SCHEMA query?
I don't see where you're getting that from? DB2 says that unqualified reference names (not to be confused with unqualified creation-target names) are taken to be in the new schema, but I don't see any corresponding restriction in the spec. What I do see (11.1 SR 6 in SQL:2021) is: If <schema path specification> is not specified, then a <schema path specification> containing an implementation-defined <schema name list> that contains the <schema name> contained in <schema name clause> is implicit. What I read this as is that the "search path" during schema-element creation must include at least the new schema, but can also include some other schemas as defined by the implementation. That makes our behavior compliant, because we can define the other schemas as those in the session's prevailing search_path. (DB2's behavior is also compliant, but they're defining the path as containing only the new schema.) Also, if SQL intended to constrain the search path for unqualified identifiers to be only the new schema, they'd hardly need a concept of <schema path specification> at all. regards, tom lane