Hello PostgreSQL hackers,
I hope I am posting on the right mailing-list.
I am actually doing a PhD related to relational databases and software engineering.
I use PostgreSQL for my research.
I have a few questions about the internals of PostgreSQL and I think they require experts knowledge.
I could not find documentation about that in the nice PostgreSQL documentation but maybe I missed something? Tell me if
itis the case.
My Questions:
Q1. Are PostgreSQL's meta-description tables (such as pg_class) the "reality" concerning the state of the DB or are
theyjust a virtual representation ?
What I would like to know with this question is: would it be possible to implement DDL queries (e.g. CREATE TABLE, DROP
TABLE,CREATE VIEW, ALTER TABLE, etc.) as DML queries that modify the meta-data stored in meta-description tables?
For example, something like:
INSERT INTO pg_class [...];
To create a new table (instead of the CREATE TABLE DDL query).
Q1.1 If it is possible, is what is done in reality? I have the feeling that it is not the case and that DDL queries are
implementedin C directly.
Q1.2 If it is possible and not done, what is the reason?
--
Q2. Are PostgreSQL's "meta-constraints" (i.e. constraints related to database structure such as "a table can only have
asingle primary key") implemented in C code or via data constraints on PostgreSQL's meta-description tables?
I guess, again, they are implemented in C code, but I might be wrong.
Q2.1 If they are not implemented via data constraints on meta-description tables, why ?
Q2.2 Is there somewhere in the documentation a list of such "meta-constraints" implemented by PostgreSQL?
Thanks in advance for answering my questions, any help or pointers to existing documentation will be appreciated.
Cheers,
Julien Delplanque