aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/probes.d19
-rw-r--r--src/backend/utils/sort/tuplesort.c45
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);