Re: [HACKERS] What about LIMIT in SELECT ? - Mailing list pgsql-hackers
From | jwieck@debis.com (Jan Wieck) |
---|---|
Subject | Re: [HACKERS] What about LIMIT in SELECT ? |
Date | |
Msg-id | m0zWGUY-000EBPC@orion.SAPserv.Hamburg.dsh.de Whole thread Raw |
In response to | Re: [HACKERS] What about LIMIT in SELECT ? (Bruce Momjian <maillist@candle.pha.pa.us>) |
Responses |
Re: [HACKERS] What about LIMIT in SELECT ?
|
List | pgsql-hackers |
> Jan, we found that I am having to require an initdb for the INET/CIDR > type, so if you want stuff to change the views/rules for the limit > addition post 6.4, please send them in and I will apply them. > > You clearly have the syntax down, so I think you should go ahead. This is the part that will enable post 6.4 add of the LIMIT stuff without initdb. Regression tested. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #======================================== jwieck@debis.com (Jan Wieck) # diff -cr src.orig/backend/nodes/copyfuncs.c src/backend/nodes/copyfuncs.c *** src.orig/backend/nodes/copyfuncs.c Fri Oct 16 11:53:40 1998 --- src/backend/nodes/copyfuncs.c Fri Oct 16 13:32:35 1998 *************** *** 1578,1583 **** --- 1578,1586 ---- newnode->unionClause = temp_list; } + Node_Copy(from, newnode, limitOffset); + Node_Copy(from, newnode, limitCount); + return newnode; } diff -cr src.orig/backend/nodes/outfuncs.c src/backend/nodes/outfuncs.c *** src.orig/backend/nodes/outfuncs.c Fri Oct 16 11:53:40 1998 --- src/backend/nodes/outfuncs.c Fri Oct 16 13:30:50 1998 *************** *** 259,264 **** --- 259,268 ---- appendStringInfo(str, (node->hasSubLinks ? "true" : "false")); appendStringInfo(str, " :unionClause "); _outNode(str, node->unionClause); + appendStringInfo(str, " :limitOffset "); + _outNode(str, node->limitOffset); + appendStringInfo(str, " :limitCount "); + _outNode(str, node->limitCount); } static void diff -cr src.orig/backend/nodes/readfuncs.c src/backend/nodes/readfuncs.c *** src.orig/backend/nodes/readfuncs.c Fri Oct 16 11:53:40 1998 --- src/backend/nodes/readfuncs.c Fri Oct 16 13:31:43 1998 *************** *** 163,168 **** --- 163,174 ---- token = lsptok(NULL, &length); /* skip :unionClause */ local_node->unionClause = nodeRead(true); + token = lsptok(NULL, &length); /* skip :limitOffset */ + local_node->limitOffset = nodeRead(true); + + token = lsptok(NULL, &length); /* skip :limitCount */ + local_node->limitCount = nodeRead(true); + return local_node; } diff -cr src.orig/include/nodes/parsenodes.h src/include/nodes/parsenodes.h *** src.orig/include/nodes/parsenodes.h Fri Oct 16 11:53:58 1998 --- src/include/nodes/parsenodes.h Fri Oct 16 13:35:32 1998 *************** *** 60,65 **** --- 60,67 ---- List *unionClause; /* unions are linked under the previous * query */ + Node *limitOffset; /* # of result tuples to skip */ + Node *limitCount; /* # of result tuples to return */ /* internal to planner */ List *base_rel_list; /* base relation list */ *************** *** 639,644 **** --- 641,648 ---- char *portalname; /* the portal (cursor) to create */ bool binary; /* a binary (internal) portal? */ bool unionall; /* union without unique sort */ + Node *limitOffset; /* # of result tuples to skip */ + Node *limitCount; /* # of result tuples to return */ } SelectStmt;
pgsql-hackers by date: