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

Started by Wen Yialmost 3 years ago5 messagesgeneral
Jump to latest
#1Wen Yi
chuxuec@outlook.com

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

#2Bruce Momjian
bruce@momjian.us
In reply to: Wen Yi (#1)
Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

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.

#3Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#2)
Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

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.

#4David G. Johnston
david.g.johnston@gmail.com
In reply to: Wen Yi (#1)
Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

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.

#5Christophe Pettus
xof@thebuild.com
In reply to: Wen Yi (#1)
Re: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?

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's almost certainly not what you are looking for.) It's an interpreter, in that it transforms the input language to an internal representation and then uses that for its execution, rather than reducing it all the way to machine language.