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 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
Tài liệu 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 tỷ lệ kèo bóng đá tối nay trang chohiện tạiPhiên bản hoặc một trong tỷ lệ kèo bóng đá tối nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

​​35,15. Bao bì các đối tượng liên quan đến một phần tỷ lệ kèo bóng đá tối nay

Một tiện ích tỷ lệ kèo bóng đá tối nay hữu ích choPostgreSQLthường bao gồm nhiều đối tượng SQL; Ví dụ: một loại dữ liệu mới sẽ yêu cầu tỷ lệ kèo bóng đá tối nay chức năng mới, toán tử mới và tỷ lệ kèo bóng đá tối nay lớp toán tử chỉ mục mới. Rất hữu ích khi thu thập tất cả tỷ lệ kèo bóng đá tối nay đối tượng này vào một gói duy nhất để đơn giản hóa quản lý cơ sở dữ liệu.PostgreSQL9865_9892tỷ lệ kèo bóng đá tối nay. Để xác định tiện ích tỷ lệ kèo bóng đá tối nay, bạn cần ít nhất mộtTệp tập lệnhchứaSQLlệnh để tạo các đối tượng của tiện ích tỷ lệ kèo bóng đá tối nay và ATệp điều khiểnChỉ định một vài thuộc tính cơ bản của chính tiện ích tỷ lệ kèo bóng đá tối nay. Nếu tiện ích tỷ lệ kèo bóng đá tối nay bao gồm mã C, thông thường cũng sẽ có một tệp thư viện được chia sẻ mà mã C đã được xây dựng. Khi bạn có các tệp này, đơn giảnPostgreSQL: Tài liệu: 9.5: Tạo tiện íchLệnh tải tỷ lệ kèo bóng đá tối nay đối tượng vào cơ sở dữ liệu của bạn.

Ưu điểm chính của việc sử dụng tiện ích tỷ lệ kèo bóng đá tối nay, thay vì chỉ chạySQLtập lệnh để tải tỷ lệ kèo bóng đá tối nay loạt"Loose"10653_10692PostgreSQLSau đó sẽ hiểu rằng các đối tượng của phần tỷ lệ kèo bóng đá tối nay đi cùng nhau. Bạn có thể bỏ tất cả các đối tượng bằng mộtTiện ích tỷ lệ kèo bóng đá tối naylệnh (không cần duy trì riêng"Gỡ cài đặt"tập lệnh). Thậm chí hữu ích hơn,pg_dumpbiết rằng nó không nên đổ các đối tượng thành viên riêng lẻ của phần tỷ lệ kèo bóng đá tối nay - nó sẽ chỉ bao gồm mộtTạo tiện ích tỷ lệ kèo bóng đá tối nayLệnh trong bãi rác, thay vào đó. Điều này đơn giản hóa việc di chuyển đến một phiên bản mới của tiện ích tỷ lệ kèo bóng đá tối nay có thể chứa nhiều đối tượng hơn hoặc khác nhau so với phiên bản cũ. Tuy nhiên, lưu ý rằng bạn phải có điều khiển, tập lệnh và các tệp khác của tiện ích

PostgreSQLsẽ không cho phép bạn bỏ một đối tượng riêng lẻ có trong một phần tỷ lệ kèo bóng đá tối nay, ngoại trừ bằng cách bỏ toàn bộ phần tỷ lệ kèo bóng đá tối nay. Ngoài ra, trong khi bạn có thể thay đổi định nghĩa của một đối tượng thành viên tỷ lệ kèo bóng đá tối nay (ví dụ: thông quaTạo hoặc thay thế chức năngĐối với tỷ lệ kèo bóng đá tối nay hàm), hãy nhớ rằng định nghĩa sửa đổi sẽ không bị bỏ qua bởipg_dump. Một thay đổi như vậy thường chỉ hợp lý nếu bạn đồng thời thực hiện thay đổi tương tự trong tệp tập lệnh của tiện ích tỷ lệ kèo bóng đá tối nay. (Nhưng có các điều khoản đặc biệt cho các bảng chứa dữ liệu cấu hình; xem bên dưới.)

12119_12430Cập nhật tập lệnhĐiều đó chỉ thực hiện hai thay đổi đó. TheCập nhật tỷ lệ kèo bóng đá tối nay thay đổiLệnh sau đó có thể được sử dụng để áp dụng các thay đổi này và theo dõi phiên bản tỷ lệ kèo bóng đá tối nay nào thực sự được cài đặt trong cơ sở dữ liệu nhất định.

Các loại đối tượng SQL có thể là thành viên của một phần tỷ lệ kèo bóng đá tối nay được hiển thị trong mô tả củaPostgreSQL: Tài liệu: 9.5: tỷ12839_13466"trong"bất kỳ lược đồ nào. Tuy nhiên, các đối tượng thành viên của tiện ích tỷ lệ kèo bóng đá tối nay sẽ thuộc về các lược đồ bất cứ khi nào thích hợp cho các loại đối tượng của chúng. Nó có thể hoặc không phù hợp cho một phần tỷ lệ kèo bóng đá tối nay để sở hữu (các) đối tượng thành viên của nó ở bên trong.

35.15.1. Tệp tỷ lệ kèo bóng đá tối nay

ThePostgreSQL: Tài liệu: 9.5: Tạo tiện íchLệnh dựa trên tệp điều khiển cho mỗi phần tỷ lệ kèo bóng đá tối nay, phải được đặt tên giống như phần tỷ lệ kèo bóng đá tối nay với hậu tố.controlvà phải được đặt trong cài đặtSharedir/ExtensionThư mục. Cũng phải có ít nhất tỷ lệ kèo bóng đá tối naySQLTập tin tập lệnh, theo mẫu đặt têntỷ lệ kèo bóng đá tối nay--phiên bản.sql(ví dụ:foo--1.0.sqlcho phiên bản1.0của phần tỷ lệ kèo bóng đá tối nayfoo14505_14564chia sẻ/tỷ lệ kèo bóng đá tối nayThư mục; Nhưng tệp điều khiển có thể chỉ định một thư mục khác cho (tỷ lệ kèo bóng đá tối nay) tệp tập lệnh.

14703_14774PostgreSql.confTệp, cụ thể là danh sáchtham số_name = giá trịBài tập, một trên mỗi dòng. tỷ lệ kèo bóng đá tối nay dòng trống và nhận xét được giới thiệu bởi#được cho phép. Hãy chắc chắn trích dẫn bất kỳ giá trị nào không phải là tỷ lệ kèo bóng đá tối nay từ hoặc số.

Tệp điều khiển có thể đặt tỷ lệ kèo bóng đá tối nay tham số sau:

Thư mục(chuỗi)

Thư mục chứa tiện ích tỷ lệ kèo bóng đá tối naySQLTập tin tập lệnh. Trừ khi tỷ lệ kèo bóng đá tối nay đường dẫn tuyệt đối được đưa ra, tên liên quan đến cài đặtSharedirThư mục. Hành vi mặc định tương đương với chỉ địnhthư mục = 'tỷ lệ kèo bóng đá tối nay'.

default_version(chuỗi15695_15698

Phiên bản mặc định của tiện ích tỷ lệ kèo bóng đá tối nay (phiên bản sẽ được cài đặt nếu không có phiên bản nào được chỉ định trongTạo tiện ích tỷ lệ kèo bóng đá tối nay). Mặc dù điều này có thể được bỏ qua, điều đó sẽ dẫn đếnTạo tiện ích tỷ lệ kèo bóng đá tối naythất bại nếu khôngphiên bảnTùy chọn xuất hiện, vì vậy bạn thường không muốn làm điều đó.

bình luận(chuỗi)

Một bình luận (bất kỳ chuỗi nào) về phần tỷ lệ kèo bóng đá tối nay. Ngoài ra, nhận xét có thể được đặt bằng phương tiện của16264_16273Lệnh trong tệp tập lệnh.

mã hóa(chuỗi)

16396_16599

module_pathname(chuỗi)

16697_16770module_pathnameTrong (tỷ lệ kèo bóng đá tối nay) tệp tập lệnh. Nếu nó không được thiết lập, không có sự thay thế nào được thực hiện. Thông thường, điều này được đặt thành$ libdir/shared_l Library_namevà sau đómodule_pathnameđược sử dụng trongTạo chức năngtỷ lệ kèo bóng đá tối nay lệnh cho tỷ lệ kèo bóng đá tối nay hàm ngôn ngữ C, để tỷ lệ kèo bóng đá tối nay tệp tập lệnh không cần phải kết nối tên của thư viện được chia sẻ.

Yêu cầu(chuỗi)

Một danh sách tên của các tiện ích tỷ lệ kèo bóng đá tối nay mà tiện ích tỷ lệ kèo bóng đá tối nay này phụ thuộc vào, ví dụYêu cầu = 'Foo, Bar'. Các tiện ích tỷ lệ kèo bóng đá tối nay đó phải được cài đặt trước khi có thể cài đặt cái này.

Superuser(Boolean)

Nếu tham số này làTRUE(là mặc định), chỉ các siêu người dùng mới có thể tạo tiện ích tỷ lệ kèo bóng đá tối nay hoặc cập nhật nó lên phiên bản mới. Nếu nó được đặt thànhSai, Chỉ cần tỷ lệ kèo bóng đá tối nay đặc quyền cần thiết để thực thi tỷ lệ kèo bóng đá tối nay lệnh trong tập lệnh cài đặt hoặc cập nhật.

Riscatable(Boolean)

Một tiện ích tỷ lệ kèo bóng đá tối nay làRelocatableNếu có thể di chuyển các đối tượng chứa của nó vào một lược đồ khác sau khi tạo ban đầu của phần tỷ lệ kèo bóng đá tối nay. Mặc định làSai, tức là, tiện ích tỷ lệ kèo bóng đá tối nay không thể định nghĩa lại. Xem bên dưới để biết thêm thông tin.

lược đồ(chuỗi)

Tham số này chỉ có thể được đặt cho các tiện ích tỷ lệ kèo bóng đá tối nay không thể phân phối. Nó buộc phần tỷ lệ kèo bóng đá tối nay được tải vào chính xác lược đồ được đặt tên chứ không phải bất kỳ thứ nào khác. Xem bên dưới để biết thêm thông tin.

Ngoài tệp điều khiển chínhtỷ lệ kèo bóng đá tối nay.control, một tiện ích tỷ lệ kèo bóng đá tối nay có thể có các tệp điều khiển thứ cấp có tên trong kiểutỷ lệ kèo bóng đá tối nay--phiên bản.control. Nếu được cung cấp, chúng phải được đặt trong thư mục tập tin tập lệnh. Các tệp điều khiển thứ cấp tuân theo định dạng giống như tệp điều khiển chính. Bất kỳ tham số nào được đặt trong tệp điều khiển thứ cấp ghi đè tệp điều khiển chính khi cài đặt hoặc cập nhật phiên bản tỷ lệ kèo bóng đá tối nay đó. Tuy nhiên, các tham sốThư mụcdefault_versionKhông thể được đặt trong tệp điều khiển phụ.

Một tiện ích tỷ lệ kèo bóng đá tối naySQLTập tin tập lệnh có thể chứa bất kỳ lệnh SQL nào, ngoại trừ tỷ lệ kèo bóng đá tối nay lệnh điều khiển giao dịch (bắt đầu, ​​cam kết, v.v.) và tỷ lệ kèo bóng đá tối nay lệnh không thể được thực thi bên trong một khối giao dịch (chẳng hạn nhưNút hút). Điều này là do tỷ lệ kèo bóng đá tối nay tệp tập lệnh được thực thi hoàn toàn trong một khối giao dịch.

Một tiện ích tỷ lệ kèo bóng đá tối naySQLTập tin tập lệnh cũng có thể chứa tỷ lệ kèo bóng đá tối nay dòng bắt đầu bằng\ echo, sẽ bị bỏ qua (được coi là bình luận) bằng cơ chế tỷ lệ kèo bóng đá tối nay. Điều khoản này thường được sử dụng để ném lỗi nếu tệp tập lệnh được đưa vàoPSQLthay vì được tải quaTạo tiện ích tỷ lệ kèo bóng đá tối nay(xem tập lệnh ví dụ bên dưới). Không có điều đó, người dùng có thể vô tình tải nội dung của tiện ích tỷ lệ kèo bóng đá tối nay là"Loose"Đối tượng chứ không phải là một phần tỷ lệ kèo bóng đá tối nay, một trạng thái có một chút tẻ nhạt để phục hồi từ.

Trong khi tỷ lệ kèo bóng đá tối nay tệp tập lệnh có thể chứa bất kỳ ký tự nào được cho phép bởi mã hóa được chỉ định, tỷ lệ kèo bóng đá tối nay tệp điều khiển chỉ chứa ASCII đơn giản, vì không có cách nào choPostgreSQLĐể biết mã hóa tệp điều khiển là gì. Trong thực tế, đây chỉ là một vấn đề nếu bạn muốn sử dụng các ký tự không phải ASCII trong nhận xét của tiện ích tỷ lệ kèo bóng đá tối nay. Thực hành được đề xuất trong trường hợp đó là không sử dụng tệp điều khiểnbình luậntham số, nhưng thay vào đó sử dụngNhận xét về tiện ích tỷ lệ kèo bóng đá tối nayTrong tỷ lệ kèo bóng đá tối nay tệp tập lệnh để đặt nhận xét.

35.15.2. Khả năng chuyển tiếp tỷ lệ kèo bóng đá tối nay

Người dùng thường muốn tải các đối tượng có trong một phần tỷ lệ kèo bóng đá tối nay vào một lược đồ khác với tác giả của tiện ích tỷ lệ kèo bóng đá tối nay. Có ba cấp độ được hỗ trợ của khả năng chuyển hóa:

  • Một tiện ích tỷ lệ kèo bóng đá tối nay hoàn toàn có thể chuyển sang một lược đồ khác bất cứ lúc nào, ngay cả sau khi nó được tải vào cơ sở dữ liệu. Điều này được thực hiện vớiThay đổi Lược đồ bộ tỷ lệ kèo bóng đá tối nay21416_21826Relocatable = trueTrong tệp điều khiển của nó.

  • Một tiện ích tỷ lệ kèo bóng đá tối nay có thể được định nghĩa lại trong quá trình cài đặt nhưng không phải sau đó. Đây thường là trường hợp nếu tệp tập lệnh của tiện ích tỷ lệ kèo bóng đá tối nay cần tham khảo lược đồ đích một cách rõ ràng, ví dụ trong cài đặtsearch_pathThuộc tính cho các hàm SQL. Đối với một tiện ích tỷ lệ kèo bóng đá tối nay như vậy, đặtRelocatable = falseTrong tệp điều khiển của nó và sử dụng@extschema@Để tham khảo lược đồ đích trong tệp tập lệnh. Tất cả tỷ lệ kèo bóng đá tối nay lần xuất hiện của chuỗi này sẽ được thay thế bằng tên của lược đồ mục tiêu thực tế trước khi tập lệnh được thực thi. Người dùng có thể đặt lược đồ đích bằng cách sử dụnglược đồTùy chọnTạo tiện ích tỷ lệ kèo bóng đá tối nay.

  • Nếu tiện ích tỷ lệ kèo bóng đá tối nay hoàn toàn không hỗ trợ di dời, SETRelocatable = falseTrong tệp điều khiển của nó và cũng được đặtlược đồvới tên của lược đồ mục tiêu dự định. Điều này sẽ ngăn chặn việc sử dụnglược đồTùy chọnTạo tiện ích tỷ lệ kèo bóng đá tối nay, trừ khi nó chỉ định cùng một lược đồ có tên trong tệp điều khiển. Lựa chọn này thường là cần thiết nếu tiện ích tỷ lệ kèo bóng đá tối nay chứa các giả định nội bộ về các tên lược đồ không thể thay thế bằng cách sử dụng@extschema@. The@extschema@Cơ chế thay thế cũng có sẵn trong trường hợp này, mặc dù nó được sử dụng hạn chế vì tên lược đồ được xác định bởi tệp điều khiển.

Trong mọi trường hợp, tệp tập lệnh sẽ được thực thi bằngsearch_pathBan đầu được đặt để trỏ đến lược đồ đích; đó là,Tạo tiện ích tỷ lệ kèo bóng đá tối nayCó tương đương với điều này không:

23668_23716

Điều này cho phép tỷ lệ kèo bóng đá tối nay đối tượng được tạo bởi tệp tập lệnh đi vào lược đồ đích. Tệp tập lệnh có thể thay đổisearch_pathNếu nó muốn, nhưng điều đó thường không mong muốn.search_pathđược khôi phục về cài đặt trước đó sau khi hoàn thànhTạo tiện ích tỷ lệ kèo bóng đá tối nay.

lược đồ đích được xác định bởilược đồTham số trong tệp điều khiển nếu điều đó được đưa ra, nếu không thì bởilược đồTùy chọnTạo tiện ích tỷ lệ kèo bóng đá tối nayNếu điều đó được đưa ra, nếu không thì lược đồ tạo đối tượng mặc định hiện tại (cái đầu tiên trong người gọisearch_path). Khi tệp điều khiểnlược đồTham số được sử dụng, lược đồ đích sẽ được tạo nếu nó không tồn tại, nhưng trong hai trường hợp khác, nó phải tồn tại.

Nếu có bất kỳ tiện ích tỷ lệ kèo bóng đá tối nay điều kiện tiên quyết nào được liệt kê trongYêu cầuTrong tệp điều khiển, tỷ lệ kèo bóng đá tối nay lược đồ mục tiêu của chúng được thêm vào cài đặt ban đầu củasearch_path, theo lược đồ mục tiêu của tiện ích tỷ lệ kèo bóng đá tối nay mới. Điều này cho phép các đối tượng của chúng được hiển thị với tệp tập lệnh của tiện ích tỷ lệ kèo bóng đá tối nay mới.

cho bảo mật,PG_TEMPđược tự động nối vào cuốisearch_pathTrong mọi trường hợp.

Mặc dù một phần tỷ lệ kèo bóng đá tối nay không thể phân phối có thể chứa các đối tượng trải đều trên nhiều lược đồ, nhưng thường mong muốn đặt tất cả các đối tượng nhằm sử dụng bên ngoài vào một lược đồ, được coi là lược đồ mục tiêu của tiện ích tỷ lệ kèo bóng đá tối nay. Sự sắp xếp như vậy hoạt động thuận tiện với cài đặt mặc định củasearch_pathTrong khi tạo ra các tiện ích tỷ lệ kèo bóng đá tối nay phụ thuộc.

35.15.3. Bảng cấu hình tỷ lệ kèo bóng đá tối nay

Một số tiện ích tỷ lệ kèo bóng đá tối nay bao gồm các bảng cấu hình, có chứa dữ liệu có thể được người dùng thêm hoặc thay đổi sau khi cài đặt tiện ích tỷ lệ kèo bóng đá tối nay. Thông thường, nếu một bảng là một phần của tiện ích tỷ lệ kèo bóng đá tối nay, cả định nghĩa của bảng và nội dung của nó sẽ không bị bỏ lại bởipg_dump. Nhưng hành vi đó là không mong muốn đối với một bảng cấu hình; Bất kỳ thay đổi dữ liệu nào do người dùng thực hiện cần phải được bao gồm trong các bãi rác hoặc tiện ích tỷ lệ kèo bóng đá tối nay sẽ hoạt động khác nhau sau khi kết xuất và tải lại.

Để giải quyết vấn đề này, tệp tập lệnh của tiện ích tỷ lệ kèo bóng đá tối nay có thể đánh dấu một bảng nó đã tạo thành bảng cấu hình, sẽ gây rapg_dumpĐể bao gồm nội dung của bảng (không phải định nghĩa của nó) trong tỷ lệ kèo bóng đá tối nay bãi rác. Để làm điều đó, hãy gọi chức năngpg_extension_config_dump (regclass, văn bản)Sau khi tạo bảng, ví dụ

Tạo bảng my_config (văn bản chính, văn bản giá trị);

Chọn pg_catalog.pg_extension_config_dump ('my_config', '');

Bất kỳ số lượng bảng nào cũng có thể được đánh dấu theo cách này.

Khi đối số thứ hai củapg_extension_config_dumplà tỷ lệ kèo bóng đá tối nay chuỗi trống, toàn bộ nội dung của bảng được đổ bởiPG_DUMP. Điều này thường chỉ đúng nếu bảng ban đầu trống như được tạo bởi tập lệnh tỷ lệ kèo bóng đá tối nay. Nếu có hỗn hợp dữ liệu ban đầu và dữ liệu do người dùng cung cấp trong bảng, thì đối số thứ hai củapg_extension_config_dumpcung cấp AWHEREĐiều kiện chọn dữ liệu sẽ được bỏ. Ví dụ: bạn có thể làm

Tạo bảng my_config (văn bản chính, văn bản giá trị, standard_entry boolean);

Chọn pg_catalog.pg_extension_config_dump ('my_config', 'trong đó không tiêu chuẩn_entry');

và sau đó đảm bảo rằngStandard_entrychỉ đúng trong các hàng được tạo bởi tập lệnh của tiện ích tỷ lệ kèo bóng đá tối nay.

tỷ lệ kèo bóng đá tối nay tình huống phức tạp hơn, chẳng hạn như tỷ lệ kèo bóng đá tối nay hàng được cung cấp ban đầu có thể được sửa đổi bởi người dùng, có thể được xử lý bằng cách tạo tỷ lệ kèo bóng đá tối nay trình kích hoạt trên bảng cấu hình để đảm bảo rằng tỷ lệ kèo bóng đá tối nay hàng được sửa đổi được đánh dấu chính xác.

27766_27852pg_extension_config_dumptỷ lệ kèo bóng đá tối nay lần nữa. .tỷ lệ kèo bóng đá tối nay thay đổi ... BẢNG DROP.

28148_28690

35.15.4. Cập nhật tiện ích tỷ lệ kèo bóng đá tối nay

Một lợi thế của cơ chế tỷ lệ kèo bóng đá tối nay là nó cung cấp các cách thuận tiện để quản lý các bản cập nhật cho các lệnh SQL xác định các đối tượng của một phần tỷ lệ kèo bóng đá tối nay. Điều này được thực hiện bằng cách liên kết một tên hoặc số phiên bản với mỗi phiên bản được phát hành của tập lệnh cài đặt của tiện ích tỷ lệ kèo bóng đá tối nay. Ngoài ra, nếu bạn muốn người dùng có thể cập nhật cơ sở dữ liệu của họ một cách linh hoạt từ phiên bản này sang phiên bản tiếp theo, bạn sẽ cung cấpCập nhật tập lệnhĐiều đó thực hiện tỷ lệ kèo bóng đá tối nay thay đổi cần thiết để đi từ phiên bản này sang phiên bản tiếp theo. Cập nhật tập lệnh có tên theo mẫutỷ lệ kèo bóng đá tối nay--Old_Version--Target_Version.sql(ví dụ:foo--1.0--1.1.sqlChứa tỷ lệ kèo bóng đá tối nay lệnh để sửa đổi phiên bản1.0của phần tỷ lệ kèo bóng đá tối nayfoothành phiên bản1.1).

Cho rằng tập lệnh cập nhật phù hợp có sẵn, lệnhCập nhật tỷ lệ kèo bóng đá tối nay thay đổiSẽ cập nhật tiện ích tỷ lệ kèo bóng đá tối nay được cài đặt cho phiên bản mới được chỉ định. Tập lệnh cập nhật được chạy trong cùng một môi trườngTạo tiện ích tỷ lệ kèo bóng đá tối nayCung cấp tỷ lệ kèo bóng đá tối nay tập lệnh cài đặt: Đặc biệt,30090_30103được thiết lập theo cùng một cách và bất kỳ đối tượng mới nào được tạo bởi tập lệnh đều được tự động thêm vào phần tỷ lệ kèo bóng đá tối nay.

Nếu tiện ích tỷ lệ kèo bóng đá tối nay có các tệp điều khiển thứ cấp, các tham số điều khiển được sử dụng cho tập lệnh cập nhật là các tham số được liên kết với phiên bản mục tiêu (mới) của tập lệnh.

Cơ chế cập nhật có thể được sử dụng để giải quyết tỷ lệ kèo bóng đá tối nay trường hợp đặc biệt quan trọng: Chuyển đổi A"Loose"Bộ sưu tập các đối tượng thành một phần tỷ lệ kèo bóng đá tối nay. Trước khi cơ chế tỷ lệ kèo bóng đá tối nay được thêm vàoPostgreSQL(trong 9.1), nhiều người đã viết các mô -đun tỷ lệ kèo bóng đá tối nay chỉ đơn giản là tạo các đối tượng chưa đóng gói. Cho một cơ sở dữ liệu hiện có chứa các đối tượng như vậy, làm thế nào chúng ta có thể chuyển đổi các đối tượng thành một tiện ích tỷ lệ kèo bóng đá tối nay được đóng gói đúng? Bỏ chúng và sau đó làm một đơn giản30913_30931là một cách, nhưng không mong muốn nếu các đối tượng có sự phụ thuộc (ví dụ: nếu có các cột bảng của một loại dữ liệu được tạo bởi phần tỷ lệ kèo bóng đá tối nay). Cách khắc phục tình huống này là tạo một phần tỷ lệ kèo bóng đá tối nay trống, sau đó sử dụngtiện ích tỷ lệ kèo bóng đá tối nay thay đổi31202_31376Tạo tiện ích tỷ lệ kèo bóng đá tối nayHỗ trợ trường hợp này vớitừ Old_VersionTùy chọn, khiến nó không chạy tập lệnh cài đặt thông thường cho phiên bản đích, mà thay vào đó là tập lệnh cập nhật có têntỷ lệ kèo bóng đá tối nay--Old_Version--Target_Version.sql. Sự lựa chọn của tên phiên bản giả sẽ sử dụng làOld_VersionTùy thuộc vào tác giả tỷ lệ kèo bóng đá tối nay, mặc dùGiải nénlà một quy ước chung. Nếu bạn có nhiều phiên bản trước, bạn cần có khả năng cập nhật thành kiểu tỷ lệ kèo bóng đá tối nay, hãy sử dụng nhiều tên phiên bản giả để xác định chúng.

tỷ lệ kèo bóng đá tối nay thay đổiCó thể thực thi tỷ lệ kèo bóng đá tối nay chuỗi tỷ lệ kèo bóng đá tối nay tệp tập lệnh cập nhật để đạt được bản cập nhật được yêu cầu. Ví dụ: nếu chỉfoo--1.0--1.1.sqlfoo--1.1--2.0.sqlcó sẵn,tỷ lệ kèo bóng đá tối nay thay đổisẽ áp dụng chúng theo trình tự nếu bản cập nhật lên phiên bản2.0được yêu cầu khi1.0hiện đang được cài đặt.

PostgreSQLKhông giả sử bất cứ điều gì về tỷ lệ kèo bóng đá tối nay thuộc tính của tên phiên bản: Ví dụ: không biết liệu1.1theo sau1.0. Nó chỉ khớp với tỷ lệ kèo bóng đá tối nay tên phiên bản có sẵn và đi theo đường dẫn yêu cầu áp dụng tỷ lệ kèo bóng đá tối nay tập lệnh cập nhật ít nhất. (Tên phiên bản thực sự có thể là bất kỳ chuỗi nào không chứa--hoặc dẫn đầu hoặc theo dõi-.)

Đôi khi rất hữu ích khi cung cấp"hạ cấp"SCRIPTS, ví dụfoo--1.1--1.0.sqlĐể cho phép hoàn nguyên tỷ lệ kèo bóng đá tối nay thay đổi liên quan đến phiên bản1.1. Nếu bạn làm điều đó, hãy cẩn thận với khả năng tỷ lệ kèo bóng đá tối nay tập lệnh hạ cấp có thể được áp dụng bất ngờ vì nó mang lại tỷ lệ kèo bóng đá tối nay đường dẫn ngắn hơn. Trường hợp rủi ro là nơi có"Đường dẫn nhanh"33505_33825

Để kiểm tra tỷ lệ kèo bóng đá tối nay đường dẫn cập nhật không mong muốn, hãy sử dụng lệnh này:

Chọn * từ pg_extension_update_paths ('extension_name');

34019_34219nullNếu không có đường dẫn cập nhật có sẵn. Đường dẫn được hiển thị ở dạng văn bản với--Dấu tách. Bạn có thể sử dụngregexp_split_to_array (đường dẫn, '-')Nếu bạn thích định dạng mảng.

35.15.5. Cân nhắc bảo mật cho các tiện ích tỷ lệ kèo bóng đá tối nay

Các tiện ích tỷ lệ kèo bóng đá tối nay được phân phối rộng rãi nên giả định rất ít về cơ sở dữ liệu mà chúng chiếm. Do đó, việc viết các chức năng được cung cấp bởi một tiện ích tỷ lệ kèo bóng đá tối nay theo kiểu an toàn không thể bị xâm phạm bởi các cuộc tấn công dựa trên đường dẫn.

Một tiện ích tỷ lệ kèo bóng đá tối nay cóSuperuser34940_35277

Lời khuyên về việc viết tỷ lệ kèo bóng đá tối nay chức năng được cung cấp một cách an toàn trongPhần 35.15.5.1bên dưới và lời khuyên về việc viết tập lệnh cài đặt được cung cấp tỷ lệ kèo bóng đá tối nay cách an toàn trongPhần 35.15.5.2.

35.15.5.1. Cân nhắc bảo mật cho các chức năng tỷ lệ kèo bóng đá tối nay

Các hàm ngôn ngữ SQL và ngôn ngữ PL được cung cấp bởi các phần tỷ lệ kèo bóng đá tối nay có nguy cơ tấn công dựa trên đường dẫn khi chúng được thực thi, vì việc phân tích các chức năng này xảy ra tại thời điểm thực hiện không phải là thời gian tạo.

TheTạo chức năngTrang tham khảo chứa lời khuyên về viếtbảo mật xác địnhchức năng an toàn. Đó là thực tế tốt để áp dụng các kỹ thuật đó cho bất kỳ chức năng nào được cung cấp bởi một tiện ích tỷ lệ kèo bóng đá tối nay, vì chức năng có thể được gọi bởi người dùng đặc quyền cao.

Nếu bạn không thể đặtsearch_pathĐể chỉ chứa tỷ lệ kèo bóng đá tối nay lược đồ an toàn, giả sử rằng mỗi tên không đủ tiêu chuẩn có thể giải quyết cho một đối tượng mà người dùng độc hại đã xác định. Cảnh giác với tỷ lệ kèo bóng đá tối nay cấu trúc phụ thuộc vàosearch_pathngầm; Ví dụ,incaseBiểu thứcKhiLuôn chọn toán tử bằng đường dẫn tìm kiếm. Ở vị trí của họ, sử dụngtoán tử (lược đồ. =) Bất kỳtrường hợp khiBiểu thức.

Một tiện ích tỷ lệ kèo bóng đá tối nay có mục đích chung thường không nên cho rằng nó được cài đặt vào một lược đồ an toàn, điều đó có nghĩa là ngay cả các tham chiếu đủ điều kiện lược đồ đối với các đối tượng của nó không hoàn toàn không có rủi ro. Ví dụ: nếu tiện ích tỷ lệ kèo bóng đá tối nay đã xác định chức năngmyschema.myfunc (bigint)Sau đó, tỷ lệ kèo bóng đá tối nay cuộc gọi nhưmyschema.myfunc (42)Có thể bị bắt bởi chức năng thù địchmyschema.myfunc (integer). Hãy cẩn thận rằng tỷ lệ kèo bóng đá tối nay loại dữ liệu của tỷ lệ kèo bóng đá tối nay tham số chức năng và toán tử khớp chính xác với tỷ lệ kèo bóng đá tối nay loại đối số được khai báo, sử dụng tỷ lệ kèo bóng đá tối nay diễn viên rõ ràng khi cần thiết.

35.15.5.2. Cân nhắc bảo mật cho các tập lệnh tỷ lệ kèo bóng đá tối nay

Cài đặt tỷ lệ kèo bóng đá tối nay hoặc tập lệnh cập nhật nên được viết để bảo vệ chống lại các cuộc tấn công dựa trên đường dẫn xuất hiện khi tập lệnh thực thi. Nếu một tham chiếu đối tượng trong tập lệnh có thể được thực hiện để giải quyết cho một số đối tượng khác ngoài ý định của tác giả tập lệnh, thì một sự thỏa hiệp có thể xảy ra ngay lập tức hoặc sau đó khi sử dụng đối tượng tỷ lệ kèo bóng đá tối nay được xác định sai.

tỷ lệ kèo bóng đá tối nay lệnh DDL nhưTạo chức năngTạo lớp toán tửthường an toàn, nhưng hãy cẩn thận với bất kỳ lệnh nào có biểu thức đa năng như tỷ lệ kèo bóng đá tối nay thành phần. Ví dụ,Tạo chế độ xemCần được xem xét, cũng nhưMặc địnhBiểu thức trongTạo chức năng.

Đôi khi một tập lệnh tỷ lệ kèo bóng đá tối nay có thể cần thực hiện SQL có mục đích chung, ví dụ để thực hiện các điều chỉnh danh mục không thể thông qua DDL. Hãy cẩn thận để thực hiện các lệnh đó bằng một an toànsearch_path; LÀMkhôngTin tưởng đường dẫn được cung cấp bởiTạo/thay đổi tiện ích tỷ lệ kèo bóng đá tối nayĐể được bảo mật. Thực hành tốt nhất là đặt tạm thờisearch_pathđến'pg_catalog, pg_temp'và chèn tham chiếu vào lược đồ cài đặt của tiện ích tỷ lệ kèo bóng đá tối nay một cách rõ ràng khi cần thiết. (Thực hành này cũng có thể hữu ích cho việc tạo chế độ xem.) Các ví dụ có thể được tìm thấy trongĐóng gópMô -đun trongPOSTGRESQLPhân phối mã nguồn.

Tài liệu tham khảo tỷ lệ kèo bóng đá tối nay chéo cực kỳ khó khăn để đảm bảo hoàn toàn, một phần vì sự không chắc chắn về lược đồ nào khác nhau.search_path. Tuy nhiên, hiện tại không có cơ chế nào tồn tại để yêu cầu điều đó.

dokhôngSử dụngTạo hoặc thay thế chức năng, ngoại trừ trong tập lệnh cập nhật phải thay đổi định nghĩa của một hàm được biết là thành viên tỷ lệ kèo bóng đá tối nay. (Tương tự như vậy đối với người kháchoặc thay thếTùy chọn.) Sử dụnghoặc thay thế40121_40339

35.15.6. Ví dụ tiện ích tỷ lệ kèo bóng đá tối nay

Đây là tỷ lệ kèo bóng đá tối nay ví dụ hoàn chỉnh vềSQL40571_40682"K""V"40745_40811

Tệp tập lệnhcặp-1.0.sqlTrông như thế này:

- Khiếu nại nếu tập lệnh có nguồn gốc trong PSQL, thay vì thông qua Tạo tiện ích tỷ lệ kèo bóng đá tối nay
\ Echo Sử dụng "Tạo cặp tỷ lệ kèo bóng đá tối nay" để tải tệp này. \từ bỏ

Tạo cặp loại như (k văn bản, văn bản V);

Tạo cặp chức năng (văn bản, văn bản)
Trả về cặp ngôn ngữ sql là 'chọn hàng ($ 1, $ 2) ::@extschema@.pair;';

Tạo toán tử ~ (leftarg = text, rightarg = text, thủ tục = cặp);

- "Đặt search_path" rất dễ nhận được, nhưng tên đủ điều kiện hoạt động tốt hơn.
Tạo chức năng thấp hơn (cặp)
Trả về cặp ngôn ngữ SQL
Như 'Chọn hàng (thấp hơn ($ 1.K), thấp hơn ($ 1.V)) ::@extschema@.pair;'
Đặt search_path = pg_temp;

Tạo chức năng cặp_concat (cặp, cặp)
Trả về cặp ngôn ngữ SQL
Như 'Chọn hàng (toán tử $ 1.K (pg_catalog. ||) $ 2.K,
               Nhà điều hành $ 1.V (pg_catalog. ||) $ 2.V) ::@extschema@.pair; ';

Tệp điều khiểnPair.ControlTrông như thế này:

# Phần tỷ lệ kèo bóng đá tối nay cặp
Nhận xét = 'Kiểu dữ liệu cặp khóa/giá trị'
default_version = '1.0'
# Không thể di dời vì sử dụng @extschema @
có thể di dời = false

Trong khi bạn hầu như không cần tỷ lệ kèo bóng đá tối nay makefile để cài đặt hai tệp này vào thư mục chính xác, bạn có thể sử dụngMakefileChứa này:

Texts = Pair
Dữ liệu = cặp-- 1.0.sql

Pg_config = pg_config
Pgxs: = $ (shell $ (pg_config) -pgxs)
Bao gồm $ (PGXS)

Makefile này dựa trênPGXS, được mô tả trongPhần 35.16. LệnhTạo cài đặtSẽ cài đặt tỷ lệ kèo bóng đá tối nay tệp điều khiển và tập lệnh vào thư mục chính xác như được báo cáo bởiPG_CONFIG.

Sau khi cài đặt tỷ lệ kèo bóng đá tối nay tệp, hãy sử dụngPostgreSQL: Tài liệu: 9.5: Tạo tiện íchlệnh để tải tỷ lệ kèo bóng đá tối nay đối tượng vào bất kỳ cơ sở dữ liệu cụ thể nào.