Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11
Tài cách đọc kèo bóng đá này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong cách đọc kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

70.2. Danh mục hệ thống dữ cách đọc kèo bóng đá ban đầu

Mỗi danh mục có bất kỳ dữ cách đọc kèo bóng đá ban đầu được tạo bằng tay (một số không) có tương ứng.datTệp chứa dữ cách đọc kèo bóng đá ban đầu của nó ở định dạng có thể chỉnh sửa.

70.2.1. Định dạng tệp dữ cách đọc kèo bóng đá

mỗi.datTệp chứa các cấu trúc dữ cách đọc kèo bóng đá Perl theo nghĩa đen chỉ đơn giản là để tạo ra một cấu trúc dữ cách đọc kèo bóng đá trong bộ nhớ bao gồm một mảng các tài cách đọc kèo bóng đá tham khảo băm, một hàng trên mỗi hàng danh mục. Một đoạn trích được sửa đổi một chút từpg_database.datsẽ trình bày cách đọc kèo bóng đá tính năng chính:

9914_10375

Điểm để lưu ý:

  • Bố cục tập tin tổng thể là: Khung vuông mở, một hoặc nhiều bộ niềng răng xoăn mỗi thứ đại diện cho một hàng danh cách đọc kèo bóng đá, đóng khung vuông. Viết dấu phẩy sau mỗi lần đóng giằng xoăn.

  • Trong mỗi hàng danh cách đọc kèo bóng đá, hãy viết dấu phẩyKey = giá trịcặp. Cho phépKeyS là tên của các cột của danh mục, cộng với các khóa siêu dữ cách đọc kèo bóng đáoid, oid_symbol, mảng_type_oidDescr. (Việc sử dụngoidoid_symbolđược mô tả trongPhần 70.2.2bên dưới, trong khimảng_type_oid11567_11586Phần 70.2.4. Descrcung cấp chuỗi mô tả cho đối tượng, sẽ được chèn vàopg_descriphoặcpg_shdescrip11959_12095.hTệp Chỉ định giá trị mặc định cho cột. (Trong ví dụ trên,Datdba12238_12272pg_database.hcung cấp giá trị mặc định phù hợp cho nó.)

  • Tất cả các giá trị phải được trích dẫn đơn. Các trích dẫn đơn lẻ được sử dụng trong một giá trị với dấu gạch chéo ngược. Backslashes có nghĩa là dữ cách đọc kèo bóng đá có thể, nhưng không cần, được nhân đôi; Điều này tuân theo các quy tắc của Perl cho các nghĩa đen được trích dẫn đơn giản. Lưu ý rằng các dấu gạch chéo ngược xuất hiện dưới dạng dữ cách đọc kèo bóng đá sẽ được coi là thoát khỏi máy quét bootstrap, theo các quy tắc tương tự như đối với các hằng số chuỗi thoát (xemPhần 4.1.2.2); Ví dụ\ T12982_13129\Để máy quét bootstrap xem.

  • Giá trị null được biểu diễn bằng_NULL_. (Lưu ý rằng không có cách nào để tạo một giá trị chỉ là chuỗi đó.)

  • Nhận xét được đi trước#, và phải ở trên dòng của riêng họ.

  • Các giá trị trường là OID của các cách đọc kèo bóng đá danh cách đọc kèo bóng đá khác nên được biểu diễn bằng các tên biểu tượng thay vì các OID số thực tế. (Trong ví dụ trên,Dattablespacechứa một tham chiếu như vậy.) Điều này được mô tả trongPhần 70.2.3bên dưới.

  • Vì các băm là các cấu trúc dữ cách đọc kèo bóng đá không có thứ tự, thứ tự trường và bố cục dòng không có ý nghĩa về mặt ngữ nghĩa. Tuy nhiên, để duy trì ngoại hình nhất quán, chúng tôi đặt một vài quy tắc được áp dụng bởi tập lệnh định dạngReformat_dat_file.pl:

    • Trong mỗi cặp niềng răng xoăn, các trường siêu dữ cách đọc kèo bóng đáoid, oid_symbol, mảng_type_oidDescr(nếu có) đến trước, theo thứ tự đó, sau đó các trường riêng của danh cách đọc kèo bóng đá xuất hiện theo thứ tự được xác định của chúng.

    • Newlines được chèn giữa các trường khi cần thiết để giới hạn độ dài dòng xuống 80 ký tự, nếu có thể. Một dòng mới cũng được chèn giữa các trường siêu dữ cách đọc kèo bóng đá và các trường chính quy.

    • Nếu danh cách đọc kèo bóng đá của.hTệp Chỉ định giá trị mặc định cho một cột và mục nhập dữ cách đọc kèo bóng đá có cùng giá trị đó,Reformat_dat_file.plSẽ bỏ qua nó khỏi tệp dữ cách đọc kèo bóng đá. Điều này giữ cho biểu diễn dữ cách đọc kèo bóng đá nhỏ gọn.

    • Refleat_dat_file.plBảo tồn cách đọc kèo bóng đá dòng trống và cách đọc kèo bóng đá dòng bình luận AS-IS.

    Nên chạy15706_15728Trước khi gửi các bản vá dữ cách đọc kèo bóng đá danh mục. Để thuận tiện, bạn chỉ có thể thay đổi thànhsrc/bao gồm/catalog/và chạyLàm cho ReforTat-Dat-Files.

  • Nếu bạn muốn thêm một phương thức mới để làm cho biểu diễn dữ cách đọc kèo bóng đá nhỏ hơn, bạn phải thực hiện nó trongReformat_dat_file.plvà cũng dạyDanh cách đọc kèo bóng đá :: Parsedata ()Cách mở rộng dữ cách đọc kèo bóng đá trở lại vào toàn bộ.

70.2.2. Gán oid

Một hàng danh mục xuất hiện trong dữ cách đọc kèo bóng đá ban đầu có thể được đưa ra một OID được chỉ định thủ công bằng cách viết mộtoid =16690_16696Trường siêu dữ cách đọc kèo bóng đá. Hơn nữa, nếu một OID được gán, một macro C cho OID đó có thể được tạo bằng cách viết mộtoid_symbol =tênTrường siêu dữ cách đọc kèo bóng đá.

Các hàng danh cách đọc kèo bóng đá được tải sẵn phải có các OID được chỉ định trước nếu có các tham chiếu OID cho chúng trong các hàng được tải sẵn khác. Một OID được chỉ định trước cũng cần thiết nếu OID của hàng phải được tham chiếu từ mã C. Nếu không áp dụng trường hợp nào,OIDTrường siêu dữ cách đọc kèo bóng đá có thể được bỏ qua, trong trường hợp đó, mã bootstrap tự động gán một OID. Trong thực tế, chúng tôi thường chỉ định các OID cho tất cả hoặc không có hàng được tải sẵn trong một danh mục nhất định, ngay cả khi chỉ một số trong số chúng thực sự được tham chiếu chéo.

Viết giá trị số thực tế của bất kỳ OID nào trong mã C được coi là dạng rất xấu; Thay vào đó, luôn luôn sử dụng một macro. Tài cách đọc kèo bóng đá tham khảo trực tiếp đếnPG_PROCOIDS đủ phổ biến để có một cơ chế đặc biệt để tạo cách đọc kèo bóng đá macro cần thiết tự động; nhìn thấysrc/backend/utils/gen_fmgrtab.pl. Tương tự - nhưng, vì lý do lịch sử, không được thực hiện theo cùng một cách - có một phương thức tự động để tạo macro choPG_TYPEoids.oid_symbolDo đó không cần thiết trong hai danh cách đọc kèo bóng đá đó. Tương tự như vậy, macro choPG_ClassOIDS của các danh mục và chỉ cách đọc kèo bóng đá được thiết lập tự động. Đối với tất cả các danh cách đọc kèo bóng đá khác, bạn phải chỉ định thủ công bất kỳ macro nào bạn cần quaoid_symbolcách đọc kèo bóng đá nhập.

Để tìm một OID có sẵn cho một hàng mới được tải sẵn, chạy tập lệnhsrc/bao gồm/catalog/unude_oids. Nó in phạm vi bao gồm cách đọc kèo bóng đá OID chưa sử dụng (ví dụ: dòng đầu raHồi45-900Hồicó nghĩa là OIDS 45 đến 900 chưa được phân bổ). Hiện tại, OIDS 1-9999 được dành riêng để phân công thủ công; Theuned_oidsTập lệnh chỉ cần xem qua các tiêu đề danh cách đọc kèo bóng đá và.datcách đọc kèo bóng đá tệp để xem cái nào không xuất hiện. Bạn cũng có thể sử dụngtrùng lặp_oidsKịch bản để kiểm tra sai lầm. (Genbki.pl19011_19143

Khi chọn OIDS cho một bản vá không được dự kiến ​​sẽ được thực hiện ngay lập tức, thực tế tốt nhất là sử dụng một nhóm OID liên tiếp nhiều hoặc ít hơn bắt đầu với một số lựa chọn ngẫu nhiên trong phạm vi 8000. Điều này giảm thiểu nguy cơ va chạm OID với các bản vá khác đang được phát triển đồng thời. Để giữ cho phạm vi 8000 Wap9999 miễn phí cho các cách đọc kèo bóng đá đích phát triển, sau khi một bản vá đã được cam kết với kho lưu trữ Master Git của nó nên được đánh số lại vào không gian có sẵn bên dưới phạm vi đó. Thông thường, điều này sẽ được thực hiện gần cuối mỗi chu kỳ phát triển, di chuyển tất cả các OID được tiêu thụ bởi các bản vá được thực hiện trong chu kỳ đó cùng một lúc. Tập lệnhRenumber_oids.pl19841_19965Renumber_oids.plcũng có thể hữu ích cho việc phục hồi từ tình huống đó.

Vì quy ước này có thể đánh số lại cách đọc kèo bóng đá OID được gán bởi cách đọc kèo bóng đá bản vá, cách đọc kèo bóng đá OID được gán bởi một bản vá không nên được coi là ổn định cho đến khi bản vá được đưa vào bản phát hành chính thức. Tuy nhiên, chúng tôi không thay đổi đối tượng được chỉ định thủ công một khi được phát hành, vì điều đó sẽ tạo ra cách đọc kèo bóng đá vấn đề tương thích cách đọc kèo bóng đá loại.

nếuGenbki.plCần gán OID cho cách đọc kèo bóng đá nhập danh cách đọc kèo bóng đá không có OID được chỉ định thủ công, nó sẽ sử dụng một giá trị trong phạm vi 10000 Wap11999. Bộ đếm OID của máy chủ được đặt thành 12000 khi bắt đầu chạy bootstrap. Do đó, các đối tượng được tạo bởi các lệnh SQL thông thường trong các giai đoạn sau của bootstrap, chẳng hạn như các đối tượng được tạo trong khi chạy20805_20829tập lệnh, nhận OIDS từ 12000 trở lên.

OID được gán trong hoạt động cơ sở dữ cách đọc kèo bóng đá thông thường bị hạn chế là 16384 trở lên. Điều này đảm bảo rằng phạm vi 10000 Wap16383 miễn phí cho các OID được gán tự động bởiGenbki.plhoặc trong bootstrap. cách đọc kèo bóng đá OID được chỉ định tự động này không được coi là ổn định và có thể thay đổi từ cài đặt này sang cài đặt khác.

70.2.3. Tra cứu tham chiếu OID

Về nguyên tắc, các tham chiếu chéo từ hàng danh cách đọc kèo bóng đá ban đầu này sang hàng khác có thể được viết chỉ bằng cách viết OID được chỉ định trước của hàng được tham chiếu trong trường tham chiếu. Tuy nhiên, điều đó chống lại chính sách dự án, bởi vì nó dễ bị lỗi, khó đọc và bị vỡ nếu OID mới được chỉ định. Vì thếGenbki.plcung cấp các cơ chế để viết các tài cách đọc kèo bóng đá tham khảo tượng trưng thay thế. Các quy tắc như sau:

  • Sử dụng các tài cách đọc kèo bóng đá tham khảo tượng trưng được bật trong một cột danh mục cụ thể bằng cách đính kèmbki_lookup (LookUprule)Theo định nghĩa của cột, trong đó22295_22307là tên của danh cách đọc kèo bóng đá được tham chiếu, ví dụ:PG_PROC. BKI_Lookupcó thể được gắn vào cách đọc kèo bóng đá cột loạioid, RegProc, oidvectorhoặcoid []; Trong hai trường hợp sau, nó ngụ ý thực hiện tra cứu trên từng phần tử của mảng.

  • Nó cũng được phép đính kèmBKI_Lookup (mã hóa)22842_22989Genbki.pl.

  • Trong một cột như vậy, tất cả các cách đọc kèo bóng đá phải sử dụng định dạng tượng trưng ngoại trừ khi viết0cho không hợp lệ. (Nếu cột được khai báoRegProc, bạn có thể viết tùy ý-thay vì0.)23400_23411Sẽ cảnh báo về cách đọc kèo bóng đá tên không được công nhận.

  • Hầu hết các loại đối tượng danh cách đọc kèo bóng đá được tham chiếu đơn giản bằng tên của chúng. Lưu ý rằng tên loại phải khớp chính xác với tham chiếuPG_TYPEEntry'sTYPNAME; Bạn không được sử dụng bất kỳ bí danh nào nhưSố nguyênchoINT4.

  • Một hàm có thể được biểu diễn bằng của nóproname, nếu đó là duy nhất trong sốpg_proc.datcách đọc kèo bóng đá nhập (hoạt động như đầu vào regproc). Nếu không, hãy viết nó dưới dạngproname (argtypename, argtypename, ...), giống như regprocedure. Tên loại đối số phải được đánh vần chính xác như trongpg_proc.datEntry'sproArgTypesTrường. Không chèn bất kỳ khoảng trống nào.

  • cách đọc kèo bóng đá toán tử được đại diện bởi, viết tên loại chính xác như chúng xuất hiện trongpg_operator.datEntry'sOprleftoprrightTrường. (Viết0Đối với toán hạng bị bỏ qua của một toán tử Unary.)

  • 24921_25029access_method_name/object_name.

  • Trong không có trường hợp nào trong số này có bất kỳ điều khoản nào cho trình độ sơ đồ lược đồ; Tất cả cách đọc kèo bóng đá đối tượng được tạo trong bootstrap dự kiến ​​sẽ nằm trongpg_cataloglược đồ.

  • Ngoài cách đọc kèo bóng đá cơ chế tra cứu chung, còn có một quy ước đặc biệtPGNSPđược thay thế bằng oid củapg_cataloglược đồ vàPGUIDđược thay thế bằng OID của vai trò Superuser Bootstrap. Những cách sử dụng này có phần lịch sử nhưng cho đến nay đã không cần phải khái quát chúng.

Genbki.plGiải quyết tất cả các tham chiếu tượng trưng trong khi nó chạy và đặt các OID số đơn giản vào tệp BKI phát ra. Do đó, không cần phụ trợ bootstrap để đối phó với các tài cách đọc kèo bóng đá tham khảo tượng trưng.

70.2.4. Tự động tạo ra cách đọc kèo bóng đá loại mảng

Hầu hết các loại dữ cách đọc kèo bóng đá vô hướng nên có loại mảng tương ứng (nghĩa là loại mảng varlena tiêu chuẩn có loại phần tử là loại vô hướng và được tham chiếu bởiTyparrayTrường thuộc loại vô hướngPG_TYPEcách đọc kèo bóng đá nhập).Genbki.plCó thể tạoPG_TYPEcách đọc kèo bóng đá nhập cho loại mảng trong hầu hết các trường hợp.

Để sử dụng cơ sở này, chỉ cần viết mộtmảng_type_oid =nnnn26980_27019pg_typecách đọc kèo bóng đá nhập, chỉ định OID để sử dụng cho loại mảng. Sau đó bạn có thể bỏ quaTyparraytrường, vì nó sẽ được điền tự động bằng oid đó.

Tên của loại mảng được tạo là tên loại vô hướng với một dấu gạch dưới được chuẩn bị. Các trường khác của cách đọc kèo bóng đá khác được lấp đầy từBKI_Array_Default (giá trị)​​Chú thích trongpg_type.hhoặc nếu không có, được sao chép từ loại vô hướng. (Cũng có một trường hợp đặc biệt choTypalign.) Sau đóTypelemTYPARRAY27756_27823

70.2.5. Công thức Chỉnh sửa tệp dữ cách đọc kèo bóng đá

Dưới đây là một số gợi ý về các cách dễ nhất để thực hiện các tác vụ phổ biến khi cập nhật các tệp dữ cách đọc kèo bóng đá danh mục.

Thêm một cột mới với mặc định vào một danh cách đọc kèo bóng đá:28248_28292BKI_DEFAULT (giá trị)Chú thích. Tệp dữ cách đọc kèo bóng đá chỉ cần được điều chỉnh bằng cách thêm trường vào các hàng hiện tại khi cần giá trị không mặc định.

Thêm giá trị mặc định vào cột hiện có không có:Thêm ABKI_DEFAULTChú thích vào tệp tiêu đề, sau đó chạyLàm cho ReforTat-Dat-FilesĐể xóa các cách đọc kèo bóng đá nhập trường hiện đang có.

Xóa một cột, cho dù nó có mặc định hay không:Xóa cột khỏi tiêu đề, sau đó chạyLàm cho ReforTat-Dat-FilesĐể loại bỏ các cách đọc kèo bóng đá nhập trường không sử dụng.

Thay đổi hoặc xóa giá trị mặc định hiện có:Bạn không thể đơn giản thay đổi tệp tiêu đề, vì điều đó sẽ khiến dữ cách đọc kèo bóng đá hiện tại được giải thích không chính xác. Chạy đầu tiênLàm cho mở rộng-DAT-FILESĐể viết lại các tệp dữ cách đọc kèo bóng đá với tất cả các giá trị mặc định được chèn một cách rõ ràng, sau đó thay đổi hoặc xóaBKI_DEFAULTChú thích, sau đó chạyLàm cho ReforTat-Dat-FilesĐể xóa cách đọc kèo bóng đá trường thừa.

Chỉnh sửa số lượng lớn ad-hoc: Reformat_dat_file.plcó thể được điều chỉnh để thực hiện nhiều loại thay đổi số lượng lớn. Tìm kiếm cách đọc kèo bóng đá bình luận khối của nó hiển thị nơi có thể chèn mã một lần. Trong ví dụ sau, chúng tôi sẽ củng cố hai trường boolean trongPG_PROCthành trường char:

  1. Thêm cột mới, với mặc định, vàopg_proc.h:

    + / * Xem các danh cách đọc kèo bóng đá prokind_ bên dưới * /
    + char prokind bki_default (f);
  2. Tạo tập lệnh mới dựa trênReformat_dat_file.plĐể chèn cách đọc kèo bóng đá giá trị thích hợp trên đường bay:

    - # Tại thời điểm này, chúng ta có hàng đầy đủ trong bộ nhớ dưới dạng băm
    - # và có thể thực hiện bất kỳ hoạt động nào chúng tôi muốn. Như đã viết, nó chỉ
    - # Xóa cách đọc kèo bóng đá giá trị mặc định, nhưng tập lệnh này có thể được điều chỉnh thành
    - # Thực hiện chỉnh sửa số lượng lớn.
    + # Thay đổi một lần để di chuyển sang Prokind
    + # Mặc định đã được điền vào ngay bây giờ, vì vậy hãy thay đổi sang khác
    + # Giá trị khi thích hợp
    + if ($ value proisagg eq 't')
    + 
    + $ giá trị prokind = 'a';
    +
  3. Chạy tập lệnh mới:

    $ cd src/bao gồm/danh cách đọc kèo bóng đá
    $ perl rewrite_dat_with_prokind.pl pg_proc.dat

    Tại thời điểm nàypg_proc.datCó cả ba cột,Prokind, proisaggProisWindow, mặc dù chúng sẽ chỉ xuất hiện trong cách đọc kèo bóng đá hàng mà chúng có cách đọc kèo bóng đá giá trị không mặc định.

  4. Xóa cách đọc kèo bóng đá cột cũ khỏipg_proc.h:

    - /* Nó có phải là một tổng hợp không? */
    - bool proisagg bki_default (f);
    -
    - /* Nó có phải là một chức năng cửa sổ? */
    - bool proiswindow bki_default (f);
  5. Cuối cùng, chạyLàm cho Reformat-Dat-FilesĐể loại bỏ các cách đọc kèo bóng đá cũ vô dụng khỏipg_proc.dat.

Để biết thêm cách đọc kèo bóng đá ví dụ về cách đọc kèo bóng đá tập lệnh được sử dụng để chỉnh sửa số lượng lớn, xemConvert_oid2Name.plremove_pg_type_oid_symbols.plĐược đính kèm với tin nhắn này: