Re: Questions about PostgreSQL implementation details
От | Julien Delplanque |
---|---|
Тема | Re: Questions about PostgreSQL implementation details |
Дата | |
Msg-id | 9b7ec5b4-5595-0f4a-dec0-b7187292ff4f@inria.fr обсуждение исходный текст |
Ответ на | Re: Questions about PostgreSQL implementation details (Mark Dilger <hornschnorter@gmail.com>) |
Список | pgsql-hackers |
Thanks for your answer, I will dive into the C code then. Le 9/12/19 à 16:52, Mark Dilger a écrit : > > Not all of them are real tables; some of the pg_catalog relations are > views over others of them. But many of them are real tables with C > structs that back them. Take a look in src/include/catalog/pg_class.h > and you'll see the C struct definition, somewhat obscured by some > macros that make it less obvious to people not familiar with the > postgresql sources. Indeed, I should have say it in my email, I saw in the documentation that some of them are views. :-) Cheers, Julien Le 9/12/19 à 16:52, Mark Dilger a écrit : > > > On 12/9/19 7:35 AM, Julien Delplanque wrote: >> 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 it is 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 they just a virtual >> representation ? > > Not all of them are real tables; some of the pg_catalog relations are > views over others of them. But many of them are real tables with C > structs that back them. Take a look in src/include/catalog/pg_class.h > and you'll see the C struct definition, somewhat obscured by some > macros that make it less obvious to people not familiar with the > postgresql sources. > > On line 29: > > CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP > BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO > { > ... > } > > That's a typedef. See genbki.h where it defines the macro: > > #define CATALOG(name,oid,oidmacro) typedef struct > CppConcat(FormData_,name) > >> 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). > > You are not allowed to insert into the pg_class table directly. There > are good reasons for that. Simply inserting a row into this table would > not cause all the infrastructure that backs a table to pop into > existence. So you have to use the DDL commands. > >> >> 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 implemented >> in C directly. > > See src/backend/commands/tablecmds.c, function DefineRelation. > > >
В списке pgsql-hackers по дате отправления:
Следующее
От: "Karl O. Pinc"Дата:
Сообщение: Re: proposal: minscale, rtrim, btrim functions for numeric