mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-06 12:39:21 +02:00
a separate statement (though it can still be invoked as part of VACUUM, too). pg_statistic redesigned to be more flexible about what statistics are stored. ANALYZE now collects a list of several of the most common values, not just one, plus a histogram (not just the min and max values). Random sampling is used to make the process reasonably fast even on very large tables. The number of values and histogram bins collected is now user-settable via an ALTER TABLE command. There is more still to do; the new stats are not being used everywhere they could be in the planner. But the remaining changes for this project should be localized, and the behavior is already better than before. A not-very-related change is that sorting now makes use of btree comparison routines if it can find one, rather than invoking '<' twice.
54 lines
2.0 KiB
C
54 lines
2.0 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* lsyscache.h
|
|
* Convenience routines for common queries in the system catalog cache.
|
|
*
|
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $Id: lsyscache.h,v 1.31 2001/05/07 00:43:26 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef LSYSCACHE_H
|
|
#define LSYSCACHE_H
|
|
|
|
#include "access/htup.h"
|
|
|
|
extern bool op_class(Oid opno, Oid opclass, Oid amopid);
|
|
extern char *get_attname(Oid relid, AttrNumber attnum);
|
|
extern AttrNumber get_attnum(Oid relid, char *attname);
|
|
extern Oid get_atttype(Oid relid, AttrNumber attnum);
|
|
extern bool get_attisset(Oid relid, char *attname);
|
|
extern int32 get_atttypmod(Oid relid, AttrNumber attnum);
|
|
extern RegProcedure get_opcode(Oid opno);
|
|
extern char *get_opname(Oid opno);
|
|
extern bool op_mergejoinable(Oid opno, Oid ltype, Oid rtype,
|
|
Oid *leftOp, Oid *rightOp);
|
|
extern Oid op_hashjoinable(Oid opno, Oid ltype, Oid rtype);
|
|
extern bool op_iscachable(Oid opno);
|
|
extern Oid get_commutator(Oid opno);
|
|
extern Oid get_negator(Oid opno);
|
|
extern RegProcedure get_oprrest(Oid opno);
|
|
extern RegProcedure get_oprjoin(Oid opno);
|
|
extern Oid get_func_rettype(Oid funcid);
|
|
extern bool func_iscachable(Oid funcid);
|
|
extern char *get_rel_name(Oid relid);
|
|
extern int16 get_typlen(Oid typid);
|
|
extern bool get_typbyval(Oid typid);
|
|
extern void get_typlenbyval(Oid typid, int16 *typlen, bool *typbyval);
|
|
extern char get_typstorage(Oid typid);
|
|
extern Datum get_typdefault(Oid typid);
|
|
extern bool get_attstatsslot(HeapTuple statstuple,
|
|
Oid atttype, int32 atttypmod,
|
|
int reqkind, Oid reqop,
|
|
Datum **values, int *nvalues,
|
|
float4 **numbers, int *nnumbers);
|
|
extern void free_attstatsslot(Oid atttype,
|
|
Datum *values, int nvalues,
|
|
float4 *numbers, int nnumbers);
|
|
|
|
#define TypeIsToastable(typid) (get_typstorage(typid) != 'p')
|
|
|
|
#endif /* LSYSCACHE_H */
|