수동으로 제작 된 초기 스포츠 토토 사이트가있는 각 카탈로그 (일부는 해당하지 않음).dat
편집 가능한 형식의 초기 스포츠 토토 사이트를 포함하는 파일
각.dat
파일에는 Catalog Row 당 하나씩 해시 참조 배열로 구성된 메모리 내 스포츠 토토 사이트 구조를 생성하기 위해 단순히 평가되는 Perl 스포츠 토토 사이트 구조 리터럴이 포함되어 있습니다. 약간 수정 된 발췌문pg_database.dat
주요 기능을 보여줍니다.
[ # 여기에 댓글이 나타날 수 있습니다. oid = '1', oid_symbol = 'templatedboid', descr = 'database \'s default 템플릿 ', datname = 'template1', datdba = 'pguid', encoding = 'encoding', datcollate = 'lc_collate', datctype = 'lc_ctype', datistemplate = 't', datallowconn = 't', datconnlimit = '-1', datlastsysoid = '0', datfrozenxid = '0', datminmxid = '1', dattablespace = '1663', dataCl = '_null_', ]
참고 사항 :
전체 파일 레이아웃은 다음과 같습니다. 개방형 사각형 브래킷, 각각 하나 이상의 곱슬 브레이스 세트가 카탈로그 행, 닫기 사각형 브래킷을 나타냅니다. 닫는 곱슬 버팀대 후에 쉼표를 쓰십시오.
각 카탈로그 행 내에 쉼표로 구분 된 쓰기키
=
value
쌍. 허용키
s는 카탈로그 열의 이름이며 메타 스포츠 토토 사이트 키OID
, OID_SYMBOL
및descr
. (사용OID
andOID_SYMBOL
에 설명되어섹션 70.2.2아래.descr
객체에 대한 설명 문자열을 제공합니다.pg_description
또는pg_shdescription
적절한 경우.) 메타 스포츠 토토 사이트 키는 선택 사항이지만 카탈로그의 정의 된 열은 모두 제공되어야합니다..h
파일 열에 대한 기본값을 지정합니다.
모든 값은 단일 인용해야합니다. 백 슬래시가있는 값 내에서 사용 된 단일 따옴표를 피하십시오. 백 슬래시는 스포츠 토토 사이트가 2 배가 될 수 있지만 필요하지는 않습니다. 이것은 간단한 인용 리터럴에 대한 Perl의 규칙을 따릅니다. Escape String 상수와 동일한 규칙에 따라 스포츠 토토 사이트로 표시되는 백 슬래시는 Bootstrap 스캐너에 의해 이스케이프로 취급됩니다 (참조.섹션 4.1.2.2); 예를 들어\ t
탭 문자로 변환합니다. 실제로 최종 값의 백 슬래시를 원한다면 4 개 중 4 개를 작성해야합니다. Perl Strips, Leave\\
부트 스트랩 스캐너를 볼 수 있습니다.
널 값은로 표시됩니다._null_
. (그 문자열 인 값을 만들 수있는 방법이 없습니다.)
댓글이 앞서#
, 그리고 자신의 라인에 있어야합니다.
가독성을 돕기 위해 다른 카탈로그 항목의 OID 인 필드 값은 숫자 OID가 아닌 이름으로 표시 될 수 있습니다. 이것은에 설명되어 있습니다.섹션 70.2.3아래.
해시는 정렬되지 않은 스포츠 토토 사이트 구조이므로 현장 순서 및 라인 레이아웃이 의미 적으로 중요하지 않습니다. 그러나 일관된 모양을 유지하기 위해 서식 스크립트에 의해 적용되는 몇 가지 규칙을 설정합니다.Reformat_dat_file.pl
:
각 곱슬 버팀대 쌍 안에 메타 스포츠 토토 사이트 필드OID
, OID_SYMBOL
및descr
(현재) 먼저 오면 해당 순서대로 카탈로그의 자체 필드가 정의 된 순서로 나타납니다.
가능한 경우 라인 길이를 80 자로 제한하기 위해 필요한 경우 필드간에 Newlines가 삽입됩니다. 메타 스포츠 토토 사이트 필드와 일반 필드 사이에 Newline도 삽입됩니다.
카탈로그 인 경우.h
파일 열에 대한 기본값을 지정하고 스포츠 토토 사이트 입력에 동일한 값이 있습니다.Reformat_dat_file.pl
스포츠 토토 사이트 파일에서 생략합니다. 이것은 스포츠 토토 사이트 표현을 컴팩트하게 유지합니다.
Reformat_dat_file.pl
빈 줄을 보존하고 댓글 줄을 보존합니다.
실행하는 것이 좋습니다Reformat_dat_file.pl
카탈로그 스포츠 토토 사이트 패치를 제출하기 전에. 편의를 위해 단순히로 변경할 수 있습니다.SRC/포함/카탈로그/
and runReformat-dat-files 만들기
.
15120_15222Reformat_dat_file.pl
그리고 또한 가르치는카탈로그 :: parsedata ()
스포츠 토토 사이트를 전체 표현으로 다시 확장하는 방법.
초기 데이터에 나타나는 카탈로그 행에 AN을 작성하여 수동으로 할당 된 OID를 제공 할 수 있습니다OID =
메타 스포츠 토토 사이트 필드. 또한 OID가 할당되면 해당 OID에 대한 C 매크로를 작성하여 생성 할 수 있습니다.nnnn
OID_SYMBOL =
메타 스포츠 토토 사이트 필드.이름
사전로드 된 카탈로그 행에는 다른 사전로드 된 행에 OID 참조가 있으면 사전에 사전 설정된 OID가 있어야합니다. 행의 OID를 C 코드에서 참조 해야하는 경우 사전 설정된 OID도 필요합니다. 어떤 경우도 적용되지 않으면OID
메타 데이터 필드를 생략 할 수 있습니다.이 경우 부트 스트랩 코드는 OID를 자동으로 할당하거나 OID가없는 카탈로그에 0을 남깁니다. 실제로 우리는 일반적으로 주어진 카탈로그에서 사전로드 된 행 중 전부 또는 전혀없는 OID를 전혀 사전 할 수 있습니다.
C 코드에서 OID의 실제 숫자 값을 작성하는 것은 매우 나쁜 형태로 간주됩니다. 대신 항상 매크로를 사용하십시오. 직접 참조PG_PROC
OIDS는 필요한 매크로를 자동으로 만들기위한 특별한 메커니즘이있을 정도로 일반적입니다. 보다src/backend/utils/gen_fmgrtab.pl
. 마찬가지로 - 그러나 역사적 이유로 똑같은 방식으로 수행되지 않은 경우 - 매크로를 만들기위한 자동 방법이 있습니다pg_type
oids.OID_SYMBOL
따라서이 두 카탈로그에는 항목이 필요하지 않습니다. 마찬가지로, 매크로pg_class
시스템 카탈로그 및 인덱스의 OID가 자동으로 설정됩니다. 다른 모든 시스템 카탈로그의 경우를 통해 필요한 매크로를 수동으로 지정해야합니다.OID_SYMBOL
출품작.
새 미리로드 된 행에 사용 가능한 OID를 찾으려면 스크립트를 실행하십시오SRC/포함/카탈로그/unused_oids
. 사용하지 않는 OID의 포괄적 인 범위 (예 : 출력 라인을 인쇄합니다.“45-900”의미는 OIDS 45 ~ 900이 아직 할당되지 않았다는 것을 의미합니다). 현재 OIDS 1-9999는 수동 할당을 위해 예약되어 있습니다. 그만큼unused_oids
스크립트는 단순히 카탈로그 헤더를 통해 봅니다.dat
파일이 나타나지 않는 파일. 당신은 또한를 사용할 수 있습니다.duplical_oids
실수를 확인하는 스크립트. (genbki.pl
컴파일 시간에 중복 OID를 감지합니다.)
OID 카운터는 부트 스트랩 실행 시작시 10000에서 시작됩니다. 카탈로그 행이 OID를 필요로하는 테이블에 있지만 OID가 사전 할 수있는 OID가없는 경우OID
필드, 그러면 10000 이상의 OID를 받게됩니다.
한 초기 카탈로그 행에서 다른 초기 카탈로그 행으로의 상호 참조는 참조 행의 사전 지정된 OID를 작성하여 작성할 수 있습니다. 그러나 그것은 오류가 발생하기 쉽고 이해하기 어렵 기 때문에 자주 참조하는 카탈로그의 경우genbki.pl
대신 상징적 참조를 작성하는 메커니즘을 제공합니다. 현재 액세스 방법, 기능, 연산자, OPCLASSES, OPFAMILIES 및 유형에 대한 참조가 가능합니다. 규칙은 다음과 같습니다.
상징적 참조의 사용을 특정 카탈로그 열에서 첨부하여 활성화합니다bki_lookup (
열의 정의에LookUprule
)LookUprule
isPG_AM
, PG_PROC
, pg_operator
, pg_opclass
, pg_opfamily
또는pg_type
. bki_lookup
유형 열에 첨부 될 수 있습니다OID
, Regproc
, oidvector
또는oid []
; 후자의 두 경우에서는 배열의 각 요소에 대한 조회를 수행한다는 것을 의미합니다.
그러한 열에서 모든 항목은 쓰기시기를 제외하고 기호 형식을 사용해야합니다0
Invalidoid의 경우. (열이 선언 된 경우Regproc
, 선택적으로 쓸 수 있습니다-
대신0
.)genbki.pl
인식되지 않은 이름에 대해 경고 할 것입니다.
액세스 방법은 유형과 마찬가지로 이름으로 표시됩니다. 유형 이름은 참조와 일치해야합니다pg_type
Entry 'stypname
; 와 같은 별칭을 사용하지 않습니다.Integer
forint4
.
함수는 그로 표현할 수 있습니다Proname
, 그것이 독특하다면pg_proc.dat
entries (이것은 레지프로 입력과 같습니다). 그렇지 않으면Proname (Argtypename, Argtypename, ...)
. 인수 유형 이름은에있는 것처럼 정확하게 철자를 써야합니다.pg_proc.dat
Entry 'sProArgTypes
필드. 공백을 삽입하지 마십시오.
운영자는oprname (LeftType, Righttype)
, 유형 이름을 정확하게 작성하여pg_operator.dat
Entry 'soprleft
andoprright
필드. (쓰다0
단지 연산자의 생략 된 피연산자의 경우)
opclass와 opfamilies의 이름은 액세스 방법 내에서만 고유하므로 표시됩니다.access_method_name
/
Object_Name
.
이 경우 스키마 자격을위한 조항이 없습니다. 부트 스트랩 중에 생성 된 모든 객체는 PG_CATALOG 스키마에있을 것으로 예상됩니다.
genbki.pl
실행 중에 모든 상징적 참조를 해결하고 방출 된 BKI 파일에 간단한 숫자 OID를 넣습니다. 따라서 부트 스트랩 백엔드가 상징적 참조를 처리 할 필요가 없습니다.
카탈로그 스포츠 토토 사이트 파일을 업데이트 할 때 일반적인 작업을 수행하는 가장 쉬운 방법에 대한 제안이 있습니다.
카탈로그에 기본값이있는 새 열을 추가 :a로 헤더 파일에 열을 추가합니다.bki_default (
주석. 스포츠 토토 사이트 파일은 기존 값이 필요한 기존 행에 필드를 추가 하여만 조정하면됩니다.value
)
기존 열에 기본값을 추가하지 않는 기존 열에 기본값 추가 :A 추가bki_default
헤더 파일에 대한 주석, 실행Reformat-dat-files 만들기
현재 중복 필드 항목을 제거하려면.
기본값이 있는지 여부에 관계없이 열을 제거하십시오.헤더에서 열을 제거한 다음 실행Reformat-dat-files 만들기
지금은 없어지지 않는 필드 항목을 제거하려면.
기존 기본값 변경 또는 제거 :단순히 헤더 파일을 변경할 수는 없습니다. 현재 스포츠 토토 사이트가 잘못 해석되기 때문입니다. 첫 번째 실행확장-파일 만들기
모든 기본값 값을 명시 적으로 삽입 한 상태에서 데이터 파일을 다시 작성 한 다음 변경 또는 제거bki_default
주석, 실행Reformat-dat-files 만들기
불필요한 필드를 다시 제거하려면
임시 벌크 편집 : Reformat_dat_file.pl
많은 종류의 벌크 변경을 수행하도록 조정할 수 있습니다. 일회성 코드를 삽입 할 수있는 위치를 보여주는 블록 주석을 찾으십시오. 다음 예에서는 두 개의 부울 필드를 통합 할 것입니다.PG_PROC
숯불로 :
기본값으로 새 열을 추가pg_proc.h
:
+ / * 아래 Prokind_ 카테고리 참조 * / + char prokind bki_default (f);
Reformat_dat_file.pl
즉시 적절한 값을 삽입하려면 :
- #이 시점에서 우리는 메모리에 해시로 전체 행을 가지고 있습니다. - # 그리고 우리가 원하는 모든 작업을 수행 할 수 있습니다. 서면으로 만 - # 기본값을 제거하지만이 스크립트는 - # 일회성 벌크 편집을 수행합니다. + # Prokind로 마이그레이션하기위한 일회성 변경 + # 기본값은 지금 이미 채워 졌으므로 다른 사람으로 변경하십시오. + # 적절한 값 + if ($ value proisagg eq 't') + + $ 값 prokind = 'a'; +
새 스크립트 실행 :
$ CD SRC/포함/카탈로그 $ perl rewrite_dat_with_prokind.pl pg_proc.dat
이 시점에서pg_proc.dat
세 열이 모두 있습니다Prokind
, Proisagg
및ProisWindow
, 비 디폴트 값이있는 행에만 나타납니다.
이전 열 제거pg_proc.h
:
- /* 집계입니까? */ - bool proisagg bki_default (f); - - /* 창 함수입니까? */ -Ool proiswindow bki_default (f);
마침내, runReformat-dat-files 만들기
쓸모없는 오래된 항목을 제거하려면pg_proc.dat
.
대량 편집에 사용되는 스크립트의 추가 예는 참조convert_oid2name.pl
andremove_pg_type_oid_symbols.pl
이 메시지에 첨부 :/message-id/cajvsvgvgvx8gxnpm+xa=dxr7kfyprc1tncct5d0o3shfnm6jeha@mail.gmail.com