Postgres/Postgres Internal 7

Flex와 Bison을 이용한 쿼리문 파싱 예제 만들기

개요Postgres에는 쿼리 파싱을 위해 사용되는 두 가지 주요 툴체인이 존재한다: flex와 bison이다. 이들은 각각 문자열 파싱을 위한 문법을 제공하며, 그에 맞게 특정 문자열을 파싱 하는 데 사용된다. 본 문서에서는 flex와 bison을 활용하여 SQL의 SELECT 문을 파싱하는 예제를 제시함으로써 PG 내부 쿼리 파서를 보다 쉽게 이해할 수 있도록 한다.gram.y 파일 생성쿼리 파싱을 위한 토큰을 정의하고, 각 토큰에 올 수 있는 다른 토큰들을 규정한다.// C code block between '%{' and '%}'%{#include #include #include // prototype of creating token functionint yylex();// prototype of ..

VSCode의 Remote - SSH를 활용한 postgres 코드 디버깅

개요지난번에 리서치했던 MacOS의 VSCode 환경에서 PostgreSQL 디버깅에 이어서, Windows OS의 VSCode에서 SSH를 통해 MacOS의 PostgreSQL 소스코드를 접속 후, lldb를 사용하여 PostgreSQL을 디버깅하는 환경을 만들어 보자. 이 작업을 통해, 소스코드가 없는 환경에서도 구동 중인 Postgres서버와 소스코드가 존재하는 노드의 접속정보만 있다면, OS에 상관없이 소스코드를 디버깅해볼 수 있다.사전작업Remote(MacOS)에 테스트를 위한 아래의 사전 작업을 진행한다.[Remote] 사전작업1 - 테이블 생성create table my_table (key numeric(2), name varchar(14), age numeric(3));[Remote] 사..

Windows 전용 Postgres 빌드하기

개요본 글에서는 PostgreSQL 소스코드를 Windows 환경에서 빌드하는 과정에 대해 설명한다. 필요한 소프트웨어의 설치 및 설정 방법을 자세히 다루며, 최종적으로 PostgreSQL을 성공적으로 빌드할 수 있는 절차를 제시한다.설치Visual Studio 설치PostgreSQL을 빌드하기 위해 Visual Studio 2022를 설치해야 한다. 설치 방법은 다음과 같다:다운로드: Visual Studio 공식 웹사이트에서 Visual Studio 2022를 다운로드한다.설치 과정: 설치 마법사를 통해 필요한 구성 요소를 선택하고 설치를 진행한다.더보기Active Perl 설치PostgreSQL의 빌드 과정에서 Perl이 필요하다. Active Perl을 설치하는 방법은 다음과 같다:다운로드: Ac..

PostgreSQL의 쿼리를 C언에서 사용해보기

개요Postgres 다운로드 페이지에서 실행파일이 아닌 소스코드를 다운로드 받고, C언어로 코딩을 통해 Client동작을 위한 쿼리를 실행 할 수 있는 간단한 코드를 작성해 보고자 한다.본 과정은 MacOS의 XCode기반으로 진행된다.환경설정1. PostgreSQL 소스코드 git clone터미널에 아래 명령문을 이용하여 소스코드를 가져온다.git clone git@github.com:postgres/postgres.git2. PostgreSQL 설치./configure 실행cd postgres./configure아래와 같이 메세지가 나온다면 가이드에 따라 ./configure --without-icu 명령어로 실행한다.configure: error: ICU library not foundIf you ..

PostgreSQL 17 시스템 카탈로그 업데이트

개요PostgreSQL(포스트그레SQL) 17 beta Release를 통해 우리는 아래 주된 기능들이 강화되었다는 것을 확인할 수 있다.VACUUM 성능 강화인덱스 알고리즘 강화를 통한 쿼리 최적화Logical Replication 기능 강화JSON이러한 업데이트 과정에서, 데이터베이스의 메타데이터를 저장하고 관리하는 데 사용되는 시스템 카탈로그(pg_catalog)도 일부 업데이트 되었다.이 글에서는 PG 17의 업데이트된 시스템 카탈로그에 대해 알아보고, PG16과 비교했을 때 어떤 변화가 있는지, DBA입장에서 활용할 수 있는 것들이 무엇이 있는지 알아보도록 한다.What is System Catalog(pg_catalog)?그 전에 우리는 시스템 카탈로그가 무엇인지 좀 더 자세히 알고 넘어가 보..

MacOS의 VSCode 환경에서 PostgreSQL 디버깅

개요MacOS기반의 VSCode에서 lldb를 사용하여 PostgreSQL을 디버깅하는 환경을 만들고, VSCode 내에서 breakpoint를 만들어 라인별로 코드의 동작 흐름을 확인해 보자.환경 설정./configure 실행과 관련한 옵션만 수정하고, 업데이트 된 내용만 기술한다../configure 실행cd postgres./configure --prefix=$HOME/postgres/pg14 --enable-cassert \\--enable-debug CFLAGS="-ggdb -O0 -fno-omit-frame-pointer" CPPFLAGS="-g -O0"prefix - folder where Postgres will be installedenable-cassert - Enable C Asse..

PostgreSQL Query architecture

1. ParserQuery 구문을 분석 → Syntax error checkParse Tree 생성이 단계에서는 System Catalog를 참조하지 않기 때문에 개별 요소들에 대한 의미분석(Semantic) 이 불가 → 단순히 문법체크(Syntax)만 수행📌 System Catalog : Table, Row, Schema 등의 메타데이터 정보를 저장하는 장소로 다른 RDBMS에서는 Data Dictionary라고 표기하기도 한다.2. Semantic ParserParse Tree의 의미를 분석하여 Query Tree를 생성한다.SQL이 참조하는 테이블, 함수, 연산자를 이해하기 위한 의미분석(Semantic) 과정을 수행한다.Query Rewrite나 최적화가 필요하지 않은 Simple Query의 ..

728x90
반응형