윈 토토 헤더 파일의 핵심 부분은 윈 토토의 각 행 레이아웃을 설명하는 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요즘에는 그 일을 처리합니다.) 가능하다면 새 윈 토토를 부트스트랩 윈 토토로 만들지 마십시오.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.