Phiên bản không được hỗ trợ:6.5
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 một trang chohiện tạiPhiên bản hoặc một soi kèo bóng đá truoctran các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

trình soi kèo bóng đá truoctran Sân khấu

TheGiai đoạn soi kèo bóng đá truoctranbao gồm hai Phần:

  • Thesoi kèo bóng đá truoctranđược xác định soi kèo bóng đá truoctrangram.yScan.LIS Được xây dựng bằng Công cụ UNIXyaccLex.

  • TheQuy trình chuyển đổikhông sửa đổi và tăng cường cho các cấu trúc dữ liệu được trả về bởi trình soi kèo bóng đá truoctran.

soi kèo bóng đá truoctran

Trình soi kèo bóng đá truoctran phải kiểm tra chuỗi truy vấn (đến như đơn giản Văn bản ASCII) cho cú pháp hợp lệ. Nếu cú ​​pháp đúng aparse câyđược xây dựng và trao lại Lỗi được trả về. Đối với việc triển khai các công cụ UNIX nổi tiếngLexyaccđược sử dụng.

TheLexerđược xác định soi kèo bóng đá truoctran tệpScan.lvà chịu trách nhiệm nhận dạngĐịnh danh, TheSQL Từ khóavv. Đối với mọi từ khóa hoặc mã định danh được tìm thấy, Amã thông báođược tạo và bàn giao cho trình soi kèo bóng đá truoctran.

Trình soi kèo bóng đá truoctran được xác định trong tệpgram.yvà bao gồm một tập hợpQuy tắc ngữ soi kèo bóng đá truoctranActionđược thực thi bất cứ khi nào một quy tắc được sa thải. Mã của các hành động (thực sự là C-Code) được sử dụng để xây dựng cây soi kèo bóng đá truoctran.

TệpScan.Lđược chuyển đổi thành Tệp C-SourceScan.cSử dụng chương trìnhLexgram.yđược chuyển đổi thànhgram.csử dụngyacc. Sau khi những biến đổi này đã diễn ra một bộ chuyển đổi C bình thường có thể được sử dụng để tạo trình soi kèo bóng đá truoctran. Không bao giờ thực hiện bất kỳ thay đổi nào đối với được tạo C-Files vì ​​chúng sẽ được ghi đè vào lần tiếp theoLexhoặcyaccđược gọi.

Lưu ý:Các phép biến đổi và tổng hợp được đề cập thường được thực hiện tự động bằng cách sử dụngMakefilesĐược vận chuyển vớiPostgressoi kèo bóng đá truoctran phối nguồn.

Một mô tả chi tiết vềyacchoặc các quy tắc ngữ soi kèo bóng đá truoctran được đưa ra tronggram.ysẽ vượt quá phạm vi của bài viết này. Có nhiều sách và tài liệu liên quan đếnLexyacc. Bạn nên quen thuộc vớiyaccTrước khi bạn bắt đầu nghiên cứu Ngữ soi kèo bóng đá truoctran được đưa ra tronggram.yNếu không bạn sẽ không hiểu điều gì xảy ra ở đó.

Để hiểu rõ hơn về các cấu trúc dữ liệu được sử dụng soi kèo bóng đá truoctranPostgresđể xử lý A Truy vấn Chúng tôi sử dụng một ví dụ để minh họa những thay đổi được thực hiện cho những điều này cấu trúc dữ liệu soi kèo bóng đá truoctran mọi giai đoạn.

Ví dụ 51-1. Một lựa chọn đơn giản

Ví dụ này chứa các truy vấn đơn giản sau đây sẽ được sử dụng soi kèo bóng đá truoctran các mô tả và số liệu khác nhau soi kèo bóng đá truoctran suốt các mô tả sau đây phần. Truy vấn giả định rằng các bảng được đưa ra soi kèo bóng đá truoctranCơ sở dữ liệu nhà cung cấpđã được được xác định.

Chọn S.Sname, se.pno
    Từ nhà cung cấp S, bán SE
    soi kèo bóng đá truoctran đó s.sno 2 và s.sno = se.sno;

Hình \ ref parsetree hiển thịParse câyĐược xây dựng bởi các quy tắc và hành động ngữ soi kèo bóng đá truoctran được đưa ra tronggram.yĐối với truy vấn được đưa ra soi kèo bóng đá truoctranMột ví dụ chọn đơn giản này chứa các truy vấn đơn giản sau đây sẽ được sử dụng soi kèo bóng đá truoctran nhiều Mô tả và số liệu soi kèo bóng đá truoctran suốt các phần sau. Các Truy vấn giả định rằng các bảng được đưa ra soi kèo bóng đá truoctran cơ sở dữ liệu nhà cung cấp có đã được xác định. Chọn S.Sname, SE.pno từ nhà cung cấp S, bán se soi kèo bóng đá truoctran đó s.sno 2 và s.sno = se.sno;(không cóCây vận hànhchoĐiều khoản ở đâuđược hiển thị soi kèo bóng đá truoctran Hình \ ref where_clause vì không có đủ không gian để hiển thị cả hai cấu trúc dữ liệu soi kèo bóng đá truoctran một hình).

nút trên cùng của cây làselectStmtnút. Đối với mọi mục xuất hiện soi kèo bóng đá truoctrantừ mệnh đềcủa truy vấn SQL ARangevarNode được tạo giữ tên củabí danhvà một con trỏ tớirelexprNode giữ tên củaquan hệ. Tất cảRangevarCác nút được thu thập soi kèo bóng đá truoctran danh sách được gắn vào trườngFromClausecủaselectStmtNode.

Đối với mỗi mục xuất hiện soi kèo bóng đá truoctranChọn danh sáchcủa truy vấn SQL Arestargetnút được tạo ra giữ một con trỏ đến mộtattr106PostgreSQL: Tài liệu: 6.5: Giai đoạn soi kèo bóng đá truoctran cú pháp56attrNode giữTên quan hệcủa mục nhập và một con trỏ tới Agiá trịNode giữ tên củathuộc tính. Tất cảrestargetCác nút được thu thập vào danh sách là kết nối với trườngTargetListcủaselectStmtNode.

Hình \ ref where_clause hiển thị cây vận hành được xây dựng cho soi kèo bóng đá truoctran đó mệnh đề của truy vấn SQL được đưa ra soi kèo bóng đá truoctran ví dụMột ví dụ lựa chọn đơn giản này chứa các truy vấn đơn giản sau đây sẽ được sử dụng soi kèo bóng đá truoctran nhiều Mô tả và số liệu soi kèo bóng đá truoctran suốt các phần sau. Các Truy vấn giả định rằng các bảng được đưa ra soi kèo bóng đá truoctran cơ sở dữ liệu nhà cung cấp có đã được xác định. Chọn S.Sname, SE.pno từ nhà cung cấp S, bán se soi kèo bóng đá truoctran đó s.sno 2 và s.sno = se.sno;được gắn vào trườngQualcủaselectStmtNode. Nút trên cùng của cây vận hành là mộtA_EXPRnút đại diện choHoạt động. Nút này có hai người kế thừa được gọi làLEXPRREXPRchỉ vào haiSubtrees. Subtree được gắn vàoLEXPRđại diện cho trình độS.Sno 2và cái được gắn vàoRexprđại diệns.sno = se.sno. Cho mọi thuộc tính mộtattrNode được tạo giữ tên của mối quan hệ và con trỏ tới Agiá trịnút giữ tên của thuộc tính. Đối với thuật ngữ không đổi xuất hiện soi kèo bóng đá truoctran truy vấn Aconstnút được tạo giá trị.

Chuyển đổi Quá trình

TheQuy trình chuyển đổilấy cây được giao lại bởi trình soi kèo bóng đá truoctran làm đầu vào và các bước đệ quy thông qua nó. Nếu aselectStmtNode được tìm thấy, nó được chuyển đổi thành mộtTruy vấnnút mà sẽ là nút hàng đầu nhất của cấu trúc dữ liệu mới. Nhân vật \ ref biến đổi hiển thị cấu trúc dữ liệu được chuyển đổi (phần cho biến đổiĐiều khoản ở đâuđược đưa ra soi kèo bóng đá truoctran hình \ ref transformed_where vì không đủ không gian để hiển thị tất cả các phần soi kèo bóng đá truoctran một hình).

Bây giờ kiểm tra được thực hiện, nếuMối quan hệ Tênsoi kèo bóng đá truoctranTừ mệnh đềđược biết đến hệ thống. Đối với mọi tên quan hệ có mặt soi kèo bóng đá truoctranDanh mục hệ thốngARTEnút được tạo có chứa tên quan hệ, Thetên bí danhID quan hệ. Từ giờ trở đi, ID quan hệ được sử dụng để tham khảoQuan hệđược đưa ra soi kèo bóng đá truoctran truy vấn. Tất cảRTECác nút được thu thập soi kèo bóng đá truoctran TheDanh sách nhập bảng phạm viđó là kết nối với trườngrtablecủaTruy vấnNode. Nếu một tên của một mối quan hệ không được biết đến hệ thống được phát hiện soi kèo bóng đá truoctran truy vấn, một lỗi sẽ được trả lại và xử lý truy vấn sẽ bị hủy bỏ.

Tiếp theo nó được kiểm tra nếuthuộc tính TênĐược sử dụng được chứa soi kèo bóng đá truoctran các mối quan hệ được đưa ra soi kèo bóng đá truoctran truy vấn. Cho mọi thuộc tính được tìm thấytleNode được tạo giữ một con trỏ đếnResdomnút (giữ tên của cột) và một con trỏ tớivarnút. Ở đó là hai số quan trọng soi kèo bóng đá truoctranvarnút. TrườngVarnođưa ra vị trí của quan hệ chứa thuộc tính hiện tại soi kèo bóng đá truoctran mục nhập bảng phạm vi Danh sách được tạo ở trên. TrườngVarattnođưa ra vị trí của thuộc tính soi kèo bóng đá truoctran quan hệ. Nếu Tên của một thuộc tính không thể tìm thấy một lỗi sẽ được trả về và xử lý truy vấn sẽ bị hủy bỏ.