Обсуждение: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

Поиск
Список
Период
Сортировка

What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

От
Wen Yi
Дата:
Hi team,
I am a newbie to the postgres.
When I am studying the compiler,the text book tell me there is there type of compiler.
  1. Assembly Language Format
  2. Relocatable Binary Format
  3. Memory-Image (Load-and-Go) Format
I check the postgres's sql compiler, and it's achieved by lex & yacc.
So What type of Compiler to SQL? Is Memory-Image (Load-and-Go) Format ?

Thanks in advance!

Yours,
WenYi

Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

От
Bruce Momjian
Дата:
On Fri, May  5, 2023 at 01:00:37AM +0000, Wen Yi wrote:
> Hi team,
> I am a newbie to the postgres.
> When I am studying the compiler,the text book tell me there is there type of
> compiler.
> 
>  1. Assembly Language Format
>  2. Relocatable Binary Format
>  3. Memory-Image (Load-and-Go) Format
> 
> I check the postgres's sql compiler, and it's achieved by lex & yacc.
> So What type of Compiler to SQL? Is Memory-Image (Load-and-Go) Format ?

Lex and yacc load command-specific structures, or a Query structure for
SELECT, INSERT, UPDATE, DELETE, MERGE.

The Query structure is converted into a Plan which is executed by the
executor.  It is not compiled into assembly language.  See this:

    https://www.postgresql.org/developer/backend/

A
-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Embrace your flaws.  They make you human, rather than perfect,
  which you will never be.



Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

От
Bruce Momjian
Дата:
On Thu, May  4, 2023 at 09:16:20PM -0400, Bruce Momjian wrote:
> Lex and yacc load command-specific structures, or a Query structure for
> SELECT, INSERT, UPDATE, DELETE, MERGE.
> 
> The Query structure is converted into a Plan which is executed by the
> executor.  It is not compiled into assembly language.  See this:
> 
>     https://www.postgresql.org/developer/backend/

Oh, this might help too:

    https://momjian.us/main/writings/pgsql/internalpics.pdf

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Embrace your flaws.  They make you human, rather than perfect,
  which you will never be.



Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

От
"David G. Johnston"
Дата:
On Thu, May 4, 2023 at 6:00 PM Wen Yi <chuxuec@outlook.com> wrote:
Hi team,
I am a newbie to the postgres.
When I am studying the compiler,the text book tell me there is there type of compiler.
  1. Assembly Language Format
  2. Relocatable Binary Format
  3. Memory-Image (Load-and-Go) Format


IIUC (I haven't formally studied compilers), none of the above, or, rather, not applicable.

I can conjure up an analogy that says the assembly language artifact has a similar relationship to the operating system kernel as the compiled plan has to the database executor.

David J.

Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

От
Christophe Pettus
Дата:

> On May 4, 2023, at 18:00, Wen Yi <chuxuec@outlook.com> wrote:
>
> Hi team,
> I am a newbie to the postgres.
> When I am studying the compiler,the text book tell me there is there type of compiler.
>     • Assembly Language Format
>     • Relocatable Binary Format
>     • Memory-Image (Load-and-Go) Format
> I check the postgres's sql compiler, and it's achieved by lex & yacc.
> So What type of Compiler to SQL? Is Memory-Image (Load-and-Go) Format ?

Hi,

Those aren't really "types of compilers."  They are different binary output formats that a compiler can generate.

PostgreSQL does not have an "SQL compiler" as such.  (It does have Just-in-Time compilation for some operations, but
that'salmost certainly not what you are looking for.)  It's an interpreter, in that it transforms the input language to
aninternal representation and then uses that for its execution, rather than reducing it all the way to machine
language.