2025 년 9 월 4 일 :토토 베이 18 RC 1 릴리스!
이 문서는 지원되지 않는 버전의 토토 베이 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다사설 토토 사이트 PostgreSQL : 문서 : 17 : 10.1버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

10.1. 개요

SQL는 강력하게 입력되었습니다 언어. 즉, 모든 데이터 항목에는 관련 데이터 유형이 있습니다. 동작을 결정하고 허용 사용.PostgreSQL확장 가능한 유형 시스템이 있습니다 그것은 다른 것보다 훨씬 더 일반적이고 유연합니다SQL구현. 따라서 대부분의 유형 의 변환 행동PostgreSQL는 일반 규칙에 따라 적용됩니다 보다는adhoc휴리스틱. 이를 통해 혼합형 표현식이 의미가 있어도 의미가 있습니다 사용자 정의 유형.

토토 베이스캐너/파서 어휘 요소를 5 가지 기본 범주로 만 나눕니다. 정수, 비 지구 번호, 문자열, 식별자 및 키 단어. 대부분의 비 숫자 유형의 상수가 먼저 분류됩니다 문자열로. 그만큼SQL언어 정의는 문자열로 유형 이름을 지정할 수 있습니다 메커니즘을 사용할 수 있습니다PostgreSQL파서를 시작하려면 올바른 경로. 예를 들어, 쿼리

텍스트 '원점'을 "레이블", 포인트 '(0,0)' 'value "로 선택합니다.

 라벨 | 값
--------+-------
 원산지 | (0,0)
(1 행)

유형의 2 개의 문자 상수가 있습니다텍스트and포인트. 유형이 a에 지정되지 않은 경우 문자열 문자, 그런 다음 자리 표시 자 유형알 수없는처음에는 할당되어 해결됩니다 아래에 설명 된 후기 단계.

4 가지 기본 사항이 있습니다SQL별도의 유형이 필요한 구성 의 전환 규칙토토 베이파서 :

함수 호출

많은PostgreSQL타입 시스템은 풍부한 기능 세트 주위에 구축되었습니다. 기능은 하나 이상의 인수를 가질 수 있습니다. 부터PostgreSQL허가 함수 과부하, 함수 이름만으로는 그렇지 않습니다 호출 할 기능을 고유하게 식별합니다. 파서 데이터 유형에 따라 올바른 함수를 선택해야합니다. 제공된 논쟁.

운영자

PostgreSQL허용 접두사 및 포스트 픽스 단일 표현식 (한 번) 연산자 및 바이너리 (2 학습) 연산자. 좋다 함수, 운영자는 과부하 될 수 있으며 동일하게 올바른 연산자를 선택하는 문제가 있습니다.

가치 저장소

SQL 삽입and업데이트진술은 표현식 결과를 표에 배치합니다. 성명서의 표현은 일치해야합니다. 그리고 아마도 대상의 유형으로 변환 될 수 있습니다 열.

Union, CASE및 관련 구성

모든 쿼리가 Unionized의 결과 이후select명령문은 단일 세트로 표시되어야합니다 열의, 각각의 결과 유형select절은 일치해야합니다 균일 한 세트로 변환되었습니다. 마찬가지로 결과 A의 표현CASE구성 가되도록 공통 유형으로 변환해야합니다.CASE전체적으로 표현이 알려져 있습니다 출력 유형. 도 마찬가지입니다.배열구성 및Greatestand최소기능.

시스템 카탈로그는 어떤 변환에 대한 정보를 저장하고, 라고 불리는캐스트, 데이터 유형 사이 유효하고 변환을 수행하는 방법. 추가 캐스트가 가능합니다 를 사용하여 사용자가 추가해야합니다.생성 깁스명령. (이것은 일반적으로 함께 수행됩니다 새로운 데이터 유형 정의. 내장 된 캐스트 세트 유형은 신중하게 제작되었으며 가장 좋습니다 변경.)

추가 휴리스틱은 파서에 제공됩니다. 적절한 행동에 대한 더 나은 추측SQL표준 유형. 몇 가지 기본이 있습니다유형 카테고리정의 :부울, 숫자, String, Bitstring, DateTime, Timespan, 기하학적, 네트워크및 사용자 정의. 사용자 정의를 제외하고 각 범주는 하나 이상이 있습니다선호 유형모호성이있을 때 우선적으로 선택됩니다. 에서 사용자 정의 범주, 각 유형은 자체 선호 유형입니다. 모호한 표현 (여러 후보자 구문 분석 따라서 솔루션)은 종종있을 때 해결할 수 있습니다 가능한 여러 내장 유형이지만 오류가 발생합니다. 사용자 정의 유형에 대한 여러 가지 선택이있을 때.

모든 유형 변환 규칙은 여러 원칙으로 설계되었습니다 명심 :

  • 암시 적 변환은 결코 놀라운 일을해서는 안됩니다 예측할 수없는 결과.

  • 사용자 정의 유형, 파서에 파서가 없음우선 순위지식이 있어야합니다"Higher"유형 계층에서. ~ 안에 혼합형 표현식, 기본 유형은 항상 있어야합니다 사용자 정의 유형으로 변환됩니다 (물론 전환이 필요합니다).

  • 사용자 정의 유형은 관련이 없습니다. 현재,PostgreSQL유형 간의 관계에 대한 정보, 내장 유형에 대한 하드 코드 휴리스틱 이외 사용 가능한 기능에 기반한 암시 적 관계 캐스트.

  • 파서에서 추가 오버 헤드가 없어야합니다. 쿼리에 암시 적 유형 변환이 필요하지 않은 경우 집행자. 즉, 쿼리가 잘 공식화되고 이미 유형이 일치하면 쿼리는 지출없이 진행해야합니다 파서에서 추가 시간과 불필요한 소개없이 암시 적 변환이 쿼리로 호출됩니다.

    또한 쿼리에 일반적으로 암시 적 필요한 경우 함수에 대한 변환, 그렇다면 사용자가 새로운 것을 정의합니다. 올바른 인수 유형과 함께 작동하면 파서가해야합니다 이 새로운 기능을 사용하면 더 이상 암시 적으로 수행하지 않습니다. 이전 기능을 사용한 변환.