mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Optimizer cleanups.
This commit is contained in:
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/ordering.c,v 1.13 1999/02/11 17:00:48 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/ordering.c,v 1.14 1999/02/11 21:05:28 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -18,7 +18,8 @@
|
|||||||
#include "optimizer/internal.h"
|
#include "optimizer/internal.h"
|
||||||
#include "optimizer/ordering.h"
|
#include "optimizer/ordering.h"
|
||||||
|
|
||||||
static bool equal_sortops_order(Oid *ordering1, Oid *ordering2, int *better_sort);
|
static bool sortops_order_match(Oid *ordering1, Oid *ordering2,
|
||||||
|
int *better_sort);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* equal-path-ordering--
|
* equal-path-ordering--
|
||||||
@ -56,7 +57,7 @@ pathorder_match(PathOrder *path_ordering1,
|
|||||||
else if (path_ordering1->ordtype == SORTOP_ORDER &&
|
else if (path_ordering1->ordtype == SORTOP_ORDER &&
|
||||||
path_ordering2->ordtype == SORTOP_ORDER)
|
path_ordering2->ordtype == SORTOP_ORDER)
|
||||||
{
|
{
|
||||||
return equal_sortops_order(path_ordering1->ord.sortop,
|
return sortops_order_match(path_ordering1->ord.sortop,
|
||||||
path_ordering2->ord.sortop,
|
path_ordering2->ord.sortop,
|
||||||
better_sort);
|
better_sort);
|
||||||
}
|
}
|
||||||
@ -127,7 +128,7 @@ equal_merge_ordering(MergeOrder *merge_ordering1,
|
|||||||
* Returns true iff the sort operators are in the same order.
|
* Returns true iff the sort operators are in the same order.
|
||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
equal_sortops_order(Oid *ordering1, Oid *ordering2, int *better_sort)
|
sortops_order_match(Oid *ordering1, Oid *ordering2, int *better_sort)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.30 1999/02/11 17:21:51 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.31 1999/02/11 21:05:28 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "parser/parsetree.h" /* for getrelid() */
|
#include "parser/parsetree.h" /* for getrelid() */
|
||||||
|
|
||||||
static Path *better_path(Path *new_path, List *unique_paths, bool *isNew);
|
static Path *better_path(Path *new_path, List *unique_paths, bool *is_new);
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -173,11 +173,14 @@ better_path(Path *new_path, List *unique_paths, bool *is_new)
|
|||||||
printf("newpath\n");
|
printf("newpath\n");
|
||||||
pprint(new_path->pathkeys);
|
pprint(new_path->pathkeys);
|
||||||
if (path->pathkeys && new_path->pathkeys &&
|
if (path->pathkeys && new_path->pathkeys &&
|
||||||
length(lfirst(path->pathkeys)) >= 2 &&
|
length(lfirst(path->pathkeys)) >= 2/* &&
|
||||||
length(lfirst(path->pathkeys)) < length(lfirst(new_path->pathkeys)))
|
length(lfirst(path->pathkeys)) <
|
||||||
|
length(lfirst(new_path->pathkeys))*/)
|
||||||
sleep(0); /* set breakpoint here */
|
sleep(0); /* set breakpoint here */
|
||||||
}
|
}
|
||||||
if (!pathorder_match(new_path->pathorder, path->pathorder, &better_sort))
|
if (!pathorder_match(new_path->pathorder, path->pathorder,
|
||||||
|
&better_sort) ||
|
||||||
|
better_sort != 0)
|
||||||
{
|
{
|
||||||
printf("oldord\n");
|
printf("oldord\n");
|
||||||
pprint(path->pathorder);
|
pprint(path->pathorder);
|
||||||
@ -186,9 +189,10 @@ better_path(Path *new_path, List *unique_paths, bool *is_new)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (pathkeys_match(new_path->pathkeys, path->pathkeys, &better_key))
|
if (pathkeys_match(new_path->pathkeys, path->pathkeys,
|
||||||
{
|
&better_key) &&
|
||||||
if (pathorder_match(new_path->pathorder, path->pathorder, &better_sort))
|
pathorder_match(new_path->pathorder, path->pathorder,
|
||||||
|
&better_sort))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Replace pathkeys that match exactly, (1,2), (1,2).
|
* Replace pathkeys that match exactly, (1,2), (1,2).
|
||||||
@ -225,7 +229,6 @@ better_path(Path *new_path, List *unique_paths, bool *is_new)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
*is_new = true;
|
*is_new = true;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Reference in New Issue
Block a user