TheGiai đoạn kèo bóng đá hom naybao gồm hai Phần:
Thekèo bóng đá hom nayđược xác định kèo bóng đá hom naygram.yvàScan.LIS Được xây dựng bằng Công cụ UNIXyaccvàLex.
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 kèo bóng đá hom nay.
Trình kèo bóng đá hom nay 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ếngLexvàyaccđược sử dụng.
TheLexerđược xác định kèo bóng đá hom nay 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 kèo bóng đá hom nay.
Trình kèo bóng đá hom nay được xác định trong tệpgram.yvà bao gồm một tập hợpQuy tắc ngữ kèo bóng đá hom nayvàActionđượ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 kèo bóng đá hom nay.
TệpScan.Lđược chuyển đổi thành Tệp C-SourceScan.cSử dụng chương trìnhLexvàgram.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 kèo bóng đá hom nay. 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ớiPostgreskèo bóng đá hom nay phối nguồn.
Một mô tả chi tiết vềyacchoặc các quy tắc ngữ kèo bóng đá hom nay đượ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 đếnLexvàyacc. Bạn nên quen thuộc vớiyaccTrước khi bạn bắt đầu nghiên cứu Ngữ kèo bóng đá hom nay đượ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 kèo bóng đá hom nayPostgresđể 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 kèo bóng đá hom nay mọi giai đoạn.
Ví dụ 61-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 kèo bóng đá hom nay các mô tả và số liệu khác nhau kèo bóng đá hom nay suốt các mô tả sau đây phần. Truy vấn giả định rằng các bảng được đưa ra kèo bóng đá hom nayCơ 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 kèo bóng đá hom nay đó 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ữ kèo bóng đá hom nay được đưa ra tronggram.yĐối với truy vấn được đưa ra kèo bóng đá hom nayMộ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 kèo bóng đá hom nay nhiều Mô tả và số liệu kèo bóng đá hom nay suốt các phần sau. Các Truy vấn giả định rằng các bảng được đưa ra kèo bóng đá hom nay 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 kèo bóng đá hom nay đó 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ị kèo bóng đá hom nay Hình \ ref where_clause vì không có đủ không gian để hiển thị cả hai cấu trúc dữ liệu kèo bóng đá hom nay 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 kèo bóng đá hom naytừ 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 kèo bóng đá hom nay danh sách được gắn vào trườngFromClausecủaselectStmtNode.
Đối với mỗi mục xuất hiện kèo bóng đá hom nayChọ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: 7.0: Giai đoạn kèo bóng đá hom nay 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 kèo bóng đá hom nay đó mệnh đề của truy vấn SQL được đưa ra kèo bóng đá hom nay 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 kèo bóng đá hom nay nhiều Mô tả và số liệu kèo bóng đá hom nay suốt các phần sau. Các Truy vấn giả định rằng các bảng được đưa ra kèo bóng đá hom nay 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 kèo bóng đá hom nay đó 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 chovàHoạt động. Nút này có hai người kế thừa được gọi làLEXPRvàREXPRchỉ 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 kèo bóng đá hom nay truy vấn Aconstnút được tạo giá trị.
TheQuy trình chuyển đổilấy cây được giao lại bởi trình kèo bóng đá hom nay 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 kèo bóng đá hom nay hình \ ref transformed_where vì không đủ không gian để hiển thị tất cả các phần kèo bóng đá hom nay một hình).
Bây giờ kiểm tra được thực hiện, nếuMối quan hệ Tênkèo bóng đá hom nayTừ mệnh đềđược biết đến hệ thống. Đối với mọi tên quan hệ có mặt kèo bóng đá hom nayDanh mục hệ thốngARTEnút được tạo có chứa tên quan hệ, Thetên bí danhvàID quan hệ. Từ giờ trở đi, ID quan hệ được sử dụng để tham khảoQuan hệđược đưa ra kèo bóng đá hom nay truy vấn. Tất cảRTECác nút được thu thập kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay các mối quan hệ được đưa ra kèo bóng đá hom nay 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 kèo bóng đá hom nayvarnút. TrườngVarnođưa ra vị trí của quan hệ chứa thuộc tính hiện tại kèo bóng đá hom nay 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 kèo bóng đá hom nay 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ỏ.