Hm. If the functional requirement is "group objects without needing any out-in-the-filesystem infrastructure", then I could see defining a module as being exactly like an extension except there's no such infrastructure --- and hence no concept of versions, plus pg_dump needs to act differently. That's probably enough semantic difference to justify using a separate word, even if we can share a lot of code infrastructure.
Then as a first cut for modules, could we add CREATE MODULE
syntax which adds an entry to pg_extension like CREATE EXTENSION
does? And also add a new column to pg_extension to distinguish
modules from extensions.
The three-part path name resolution for functions would remain the
same, nothing would need to change there because of modules.