와이즈 토토 헤더 파일의 핵심 부분은 와이즈 토토의 각 행 레이아웃을 설명하는 C 구조 정의입니다. 이것은 a로 시작됩니다.와이즈 토토매크로, C 컴파일러에 관한 한 이는 단지 약식에 불과합니다.typedef 구조체 FormData_. 구조체의 각 필드는 와이즈 토토 열을 생성합니다. 필드는 다음에 설명된 BKI 속성 매크로를 사용하여 주석을 달 수 있습니다.와이즈 토토 이름genbki.h, 예를 들어 필드의 기본값을 정의하거나 null 허용 또는 null 허용 불가로 표시합니다.와이즈 토토라인에 설명된 다른 BKI 속성 매크로를 사용하여 주석을 달 수도 있습니다.genbki.h, 공유 관계인지 여부와 같이 와이즈 토토의 다른 속성을 전체적으로 정의합니다.
시스템 와이즈 토토 캐시 코드(및 일반적으로 대부분의 와이즈 토토 통합 코드)는 모든 시스템 와이즈 토토 튜플의 고정 길이 부분이 실제로 존재한다고 가정합니다. 왜냐하면 이 C 구조체 선언을 여기에 매핑하기 때문입니다. 따라서 모든 가변 길이 필드와 null 허용 필드는 끝에 배치되어야 하며 구조체 필드로 액세스할 수 없습니다. 예를 들어, 설정하려고 하면pg_type.typrelidNULL이면 일부 코드가 참조를 시도하면 실패합니다.typetup-typrelid(또는 더 나쁜 경우,typetup-typelem, 그 이유는 다음과 같습니다typrelid). 이로 인해 무작위 오류가 발생하거나 세분화 위반이 발생할 수도 있습니다.
이러한 유형의 오류에 대한 부분적인 보호로서 가변 길이 또는 null 허용 필드는 C 컴파일러에 직접 표시되어서는 안 됩니다. 이는 다음으로 래핑하여 수행됩니다.#ifdef CATALOG_VARLEN ... #endif(어디에서CATALOG_VARLEN은 정의되지 않은 기호입니다.) 이렇게 하면 C 코드가 거기에 없거나 다른 오프셋에 있을 수 있는 필드에 부주의하게 액세스하려고 시도하는 것을 방지할 수 있습니다. 잘못된 행 생성을 방지하기 위해 null을 허용하지 않아야 하는 모든 열에 null을 허용하도록 표시해야 합니다.pg_attribute. 부트스트랩 코드는 자동으로 와이즈 토토 열을 다음과 같이 표시합니다.NULL이 아님고정 너비이고 앞에 null 허용 또는 가변 너비 열이 없는 경우. 이 규칙이 부적절한 경우 다음을 사용하여 올바른 표시를 강제할 수 있습니다.BKI_FORCE_NOT_NULL그리고BKI_FORCE_NULL필요에 따라 주석을 추가합니다.
프런트엔드 코드에는 어떠한 항목도 포함되어서는 안 됩니다.pg_xxx.h와이즈 토토 헤더 파일. 이러한 파일에는 백엔드 외부에서 컴파일되지 않는 C 코드가 포함될 수 있습니다. (일반적으로 이러한 파일에는 다음의 함수에 대한 선언도 포함되어 있기 때문에 발생합니다.src/백엔드/와이즈 토토/파일.) 대신 프런트엔드 코드에는 생성된 해당 파일이 포함될 수 있습니다.pg_xxx_d.hOID를 포함할 헤더#정의s 및 클라이언트 측에서 사용할 수 있는 기타 데이터. 와이즈 토토 헤더의 매크로나 기타 코드를 프런트엔드 코드에 표시하려면 다음을 작성하세요.#ifdef EXPOSE_TO_CLIENT_CODE ... #endif지시할 해당 섹션 주변genbki.pl해당 섹션을 다음에 복사하려면pg_xxx_d.h헤더.
와이즈 토토 중 일부는 너무 기본적이어서 다른 사람이 만들 수도 없습니다.BKI 생성대부분의 와이즈 토토에 사용되는 명령입니다. 왜냐하면 해당 명령은 새 와이즈 토토를 설명하기 위해 이러한 와이즈 토토에 정보를 써야 하기 때문입니다. 이것들은부트스트랩와이즈 토토를 정의하고 이를 정의하려면 추가 작업이 많이 필요합니다. 사전 로드된 콘텐츠에서 해당 항목을 수동으로 준비해야 합니다.pg_class그리고pg_type및 해당 항목은 와이즈 토토 구조에 대한 후속 변경을 위해 업데이트되어야 합니다. (부트스트랩 와이즈 토토에는 미리 로드된 항목도 필요합니다.pg_attribute하지만 다행히도genbki.pl요즘에는 그 일을 처리합니다.) 가능하다면 새 와이즈 토토를 부트스트랩 와이즈 토토로 만들지 마십시오.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.