-
backend/executor/Makefile
-
backend/executor/execProcnode.c
-
backend/executor/nodeIgnore.c
-
backend/executor/nodeIgnore.h
-
backend/nodes/copyfuncs.c
-
backend/nodes/equalfuncs.c
-
backend/nodes/outfuncs.c
-
backend/optimizer/plan/createplan.c
-
backend/optimizer/plan/planner.c
-
backend/optimizer/plan/setrefs.c
-
backend/parser/analyze.c
-
backend/parser/gram.y
-
backend/parser/gram.h (this is likely generated from make)
-
backend/parser/parse_clause.c
-
include/executor/nodeIgnore.h (copied here so the definitons would be available for execnodes.h)
-
include/nodes/execnodes.h
-
include/nodes/nodes.h
-
include/nodes/parsenodes.h
-
include/nodes/plannodes.h
-
include/optimizer/planmain.h
-
include/parser/kwlist.h
-
include/parser/parse_clause.h
git diff --name-only lab4 original
This was used to find this list of changes.
Briefly:
Most code was heavily adapted from Limit/Offset segments in each file as much as possible. In fact, nodeIgnore.c is almost a direct copy of nodeLimit.c.
- The gram.y (which is converted into gram.c with BISON/flex/m4/etc) was given additional constructs for a third type of LIMIT part, the IGNORE. The kwlist.h was updated, and from there, the gram.h files were updated as well.
- Getting the data out of the actual query text form is in parse_clause.c with transformIgnoreClause.
- The planner.c preprocessor does "something" to the tuples to select them.
- It comes together in the nodeIgnore.c where the nodes are individually selected or not.
There were other minute changes (usually adding) parts to switch statements; pretty much where ever there was a direct reference to the LIMIT/OFFSET existing code, some IGNORE code was added locally.
SELECT * FROM TABLE [WHERE, ORDERBY] IGNORE ;
You cannot, for example, combine IGNORE with LIMIT or OFFSET.