Обсуждение: What type of Compiler to SQL? Memory-Image (Load-and-Go) Format?
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 ?
Thanks in advance!
Yours,
WenYi
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.
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.
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.
- Assembly Language Format
- Relocatable Binary Format
- 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.
> 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.