diff options
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/probes.d | 19 | ||||
-rw-r--r-- | src/backend/utils/sort/tuplesort.c | 45 |
2 files changed, 41 insertions, 23 deletions
diff --git a/src/backend/utils/probes.d b/src/backend/utils/probes.d index bec3fb1f398..18d1b56f5da 100644 --- a/src/backend/utils/probes.d +++ b/src/backend/utils/probes.d @@ -3,12 +3,17 @@ * * Copyright (c) 2006-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/utils/probes.d,v 1.6 2009/01/01 17:23:48 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/probes.d,v 1.7 2009/03/11 23:19:25 tgl Exp $ * ---------- */ -/* typedefs used in PostgreSQL */ +/* + * Typedefs used in PostgreSQL. + * + * NOTE: Do not use system-provided typedefs (e.g. uintptr_t, uint32_t, etc) + * in probe definitions, as they cause compilation errors on Mac OS X 10.5. + */ #define LocalTransactionId unsigned int #define LWLockId int #define LWLockMode int @@ -20,10 +25,6 @@ provider postgresql { - /* - * Note: Do not use built-in typedefs (e.g. uintptr_t, uint32_t, etc) * as they cause compilation errors in Mac OS X 10.5. - */ - probe transaction__start(LocalTransactionId); probe transaction__commit(LocalTransactionId); probe transaction__abort(LocalTransactionId); @@ -51,7 +52,7 @@ provider postgresql { probe statement__status(const char *); probe sort__start(int, bool, int, int, bool); - probe sort__done(unsigned long, long); + probe sort__done(bool, long); probe buffer__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid, bool); probe buffer__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, bool, bool); @@ -83,9 +84,9 @@ provider postgresql { probe twophase__checkpoint__done(); probe smgr__md__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid); - probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, const char *, int, int); + probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int); probe smgr__md__write__start(ForkNumber, BlockNumber, Oid, Oid, Oid); - probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, const char *, int, int); + probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int); probe xlog__insert(unsigned char, unsigned char); probe xlog__switch(); diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index b6a2c9115e2..92c55219d32 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -91,7 +91,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/sort/tuplesort.c,v 1.89 2009/01/01 17:23:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/sort/tuplesort.c,v 1.90 2009/03/11 23:19:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -117,15 +117,16 @@ #include "utils/tuplesort.h" +/* sort-type codes for sort__start probes */ +#define HEAP_SORT 0 +#define INDEX_SORT 1 +#define DATUM_SORT 2 + /* GUC variables */ #ifdef TRACE_SORT bool trace_sort = false; #endif -#define HEAP_SORT 0 -#define INDEX_SORT 1 -#define DATUM_SORT 2 - #ifdef DEBUG_BOUNDED_SORT bool optimize_bounded_sort = true; #endif @@ -574,10 +575,14 @@ tuplesort_begin_heap(TupleDesc tupDesc, nkeys, workMem, randomAccess ? 't' : 'f'); #endif - TRACE_POSTGRESQL_SORT_START(HEAP_SORT, false, nkeys, workMem, randomAccess); - state->nKeys = nkeys; + TRACE_POSTGRESQL_SORT_START(HEAP_SORT, + false, /* no unique check */ + nkeys, + workMem, + randomAccess); + state->comparetup = comparetup_heap; state->copytup = copytup_heap; state->writetup = writetup_heap; @@ -642,7 +647,11 @@ tuplesort_begin_index_btree(Relation indexRel, state->nKeys = RelationGetNumberOfAttributes(indexRel); - TRACE_POSTGRESQL_SORT_START(INDEX_SORT, enforceUnique, state->nKeys, workMem, randomAccess); + TRACE_POSTGRESQL_SORT_START(INDEX_SORT, + enforceUnique, + state->nKeys, + workMem, + randomAccess); state->comparetup = comparetup_index_btree; state->copytup = copytup_index; @@ -715,10 +724,14 @@ tuplesort_begin_datum(Oid datumType, workMem, randomAccess ? 't' : 'f'); #endif - TRACE_POSTGRESQL_SORT_START(DATUM_SORT, false, 1, workMem, randomAccess); - state->nKeys = 1; /* always a one-column sort */ + TRACE_POSTGRESQL_SORT_START(DATUM_SORT, + false, /* no unique check */ + 1, + workMem, + randomAccess); + state->comparetup = comparetup_datum; state->copytup = copytup_datum; state->writetup = writetup_datum; @@ -826,12 +839,16 @@ tuplesort_end(Tuplesortstate *state) elog(LOG, "internal sort ended, %ld KB used: %s", spaceUsed, pg_rusage_show(&state->ru_start)); } -#endif - TRACE_POSTGRESQL_SORT_DONE(state->tapeset, - (state->tapeset ? LogicalTapeSetBlocks(state->tapeset) : - (state->allowedMem - state->availMem + 1023) / 1024)); + TRACE_POSTGRESQL_SORT_DONE(state->tapeset != NULL, spaceUsed); +#else + /* + * If you disabled TRACE_SORT, you can still probe sort__done, but + * you ain't getting space-used stats. + */ + TRACE_POSTGRESQL_SORT_DONE(state->tapeset != NULL, 0L); +#endif MemoryContextSwitchTo(oldcontext); |