74.1. 시스템 와이즈 토토 선언 규칙

와이즈 토토 헤더 파일의 핵심 부분은 와이즈 토토의 각 행의 레이아웃을 설명하는 C 구조 정의입니다. 이것은 A로 시작합니다.와이즈 토토C 컴파일러가 관련된 한 속이typedef struct formdata_Catalogname. 구조물의 각 필드는 와이즈 토토 열을 발생시킵니다.genbki.h, 예를 들어 필드의 기본값을 정의하거나 무효가되지 않거나 무효가되지 않는 것으로 표시합니다. 그만큼와이즈 토토선에 설명 된 다른 BKI 속성 매크로와 함께 라인을 주석을 달 수 있습니다genbki.h, 와이즈 토토의 다른 속성을 공유 관계인지 여부와 같이 전체적으로 와이즈 토토의 다른 속성을 정의하려면

시스템 와이즈 토토 캐시 코드 (및 대부분의 와이즈 토토 모니징 코드)는 모든 시스템 와이즈 토토 튜플의 고정 길이 부분이 실제로이 C 구조 선언을 매핑하기 때문에 실제로 존재한다고 가정합니다. 따라서 모든 가변 길이 필드 및 무효 필드는 끝에 배치되어야하며 구조장으로 액세스 할 수 없습니다.pg_type.TyprelidNULL이 되려면 일부 코드가 참조하려고 할 때 실패합니다typetup-> typrelid(또는 더 나쁜,typetup-> typelemTyprelid). 이로 인해 임의의 오류 또는 세분화 위반이 발생합니다.

이러한 유형의 오류에 대한 부분 가드로서, 가변 길이 또는 무효 필드는 C 컴파일러에 직접 볼 수 없어야합니다. 이것은 그들을 감싸서 달성됩니다#ifdef catalog_varlen ... #endif(wherecatalog_varlen는 정의되지 않은 기호입니다). 이것은 C 코드가 부주의하게 없거나 다른 오프셋에있을 수있는 필드에 액세스하려고하는 것을 방지합니다.pg_attribute. 부트 스트랩 코드는 와이즈 토토 열을 자동으로 표시합니다.NOT NULL고정 된 범위이고 무효 또는 가변 폭이 우선하지 않는 경우. 이 규칙이 부적절한 경우를 사용하여 올바른 표시를 강요 할 수 있습니다.BKI_FORCE_NOT_NULLandbki_force_null필요에 따른 주석.

Frontend Code는 포함되지 않아야합니다PG_XXX.H와이즈 토토 헤더 파일,이 파일에는 백엔드 외부에서 컴파일하지 않는 C 코드가 포함될 수 있으므로. (일반적 으로이 파일은의 함수에 대한 선언이 포함되어 있기 때문에 발생합니다.SRC/백엔드/와이즈 토토/파일.) 대신, 프론트 엔드 코드는 해당 생성 된 생성을 포함 할 수 있습니다PG_XXX_D.HOID를 포함하는 헤더#defines 및 클라이언트 측에서 사용할 수있는 다른 데이터. 와이즈 토토 헤더의 매크로 또는 기타 코드를 프론트 엔드 코드에 표시하려면 쓰기#ifdef Expose_to_client_code ... #endif지시하기 위해 해당 섹션 주변genbki.pl해당 섹션을 복사하려면PG_XXX_D.H헤더

몇몇 와이즈 토토는 너무 근본적이므로bki Create대부분의 와이즈 토토에 사용되는 명령은 새로운 와이즈 토토를 설명하기 위해이 와이즈 토토에 정보를 작성해야하기 때문에 명령. 이것들은라고합니다.부트 스트랩와이즈 토토를 정의하는 데 많은 추가 작업이 필요합니다. 사전로드 된 컨텐츠에서 적절한 항목을 수동으로 준비해야합니다.pg_classandpg_type,이 항목은 와이즈 토토 구조의 후속 변경을 위해 업데이트되어야합니다. (부트 스트랩 와이즈 토토는 또한 사전로드 항목이 필요합니다pg_attribute그러나 다행히도genbki.pl요즘 집안일을 처리합니다.) 새로운 와이즈 토토를 가능한 경우 부트 스트랩 와이즈 토토로 만드는 것을 피하십시오.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면