40.3. �������׶�

�������׶����������֣�

40.3.1. ������

�����������飨�Դ� ASCII �ı���ʽ�����ģ���ѯ�ִ����﷨�� ����﷨��ȷ���򴴽�һ������������֮���أ� ���򣬷���һ������ʵ�ַ������ʹʷ�������ʹ���������� Unix ���� lex �� yacc��

�ʷ������ļ� scan.l�ﶨ�壬����ʶ����ʶ����SQL �ؼ����ȡ� ���ڷ��ֵ�ÿ���ؼ��ֻ��߱�ʶ����������һ���Ǻ����Ҵ��ݸ���������

���������ļ� gram.y �ﶨ�岢�Ұ���һ���﷨�����ʹ�������ʱִ�е������� �������루ʵ������ C ���룩���ڽ�����������

�ļ� scan.l �� lex ת���� C Դ�ļ� scan.c �� gram.y �� yacc ת���� gram.c�� �������Щת����һ��ͨ�õ� C �������Ϳ������ڴ����������� ǧ��Ҫ�����ɵ� C Դ�ļ����޸ģ���Ϊ��һ�ε��� lex �� yacc ʱ������Ǹ��ǡ�

ע��: �����ᵽ��ת���ͱ�����ʹ�ø��� PostgreSQL ������ makefiles �Զ���ɵġ�

�� yacc ���� gram.y ����﷨�������ϸ�����������ĵķ�Χ�� �кܶ���� lex �� yacc���鼮���ĵ������ڿ�ʼ�о� gram.y ��������﷨֮ǰ����Ӧ�ö� yacc ����Ϥ���������ǿ���������������ݣ���ⲻ�˷�����ʲô����ġ�

40.3.2. ת������

�������ض�ֻʹ�ú� SQL �﷨�ṹ��صĹ̶����򴴽�һ���������� ����������κ�ϵͳ����˾Ͳ�������������ѯ�������ϸ�����⡣ �ڷ���������֮��ת���������ܷ������������ķ�����Ȼ������һ������ ������Щ����ѯ���������ĸ����ĸ������Լ��ĸ������������⡣�����ɵı�ʾ�����Ϣ�����ݽṹ������ѯ����

�����������������ֳ��������̵�ԭ����ϵͳ�����ֻ����һ�������н��У� �����Dz�����һ���յ���ѯ�ִ��ͷ���һ������ ������׶��Ѿ��㹻���Ա�ʶ����������BEGIN��ROLLBACK���ȣ��� ������Щ���������κν�һ���ķ����Ϳ���ִ�С�һ������֪���������ڴ���һ������ �IJ�ѯ������SELECT ���� UPDATE���� ���ǾͿ��Է���һ�������ˣ�������ǻ�û��ʼ��ôһ������ֻ�����ʱ����Ե���ת������

ת���������ɵIJ�ѯ���ṹ���ںܴ�̶������������������������ϸ�����кܶ����� ���磬�ڷ�������� FuncCall �ڵ������Щ����ȥ�������õĶ����� �������õ�������һ����ͨ��������һ���ۼ������� ������ܱ�ת����һ�� FuncExpr ����һ�� Aggref �ڵ㡣 ͬ�����й��ֶκͱ��ʽ����ľ�����������Ҳ��ӵ���ѯ���С�