forked from machack666/pgpool-II
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpool_relcache.h
More file actions
77 lines (69 loc) · 2.6 KB
/
pool_relcache.h
File metadata and controls
77 lines (69 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* -*-pgsql-c-*- */
/*
*
* $Header: /cvsroot/pgpool/pgpool-II/pool_relcache.h,v 1.4 2011/01/16 10:31:38 t-ishii Exp $
*
* pgpool: a language independent connection pool server for PostgreSQL
* written by Tatsuo Ishii
*
* Copyright (c) 2003-2010 PgPool Global Development Group
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby
* granted, provided that the above copyright notice appear in all
* copies and that both that copyright notice and this permission
* notice appear in supporting documentation, and that the name of the
* author not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. The author makes no representations about the
* suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* pool_relcache.h.: pool_relcache.c related header file
*
*/
#ifndef POOL_RELCACHE_H
#define POOL_RELCACHE_H
/* ------------------------
* Relation cache structure
*-------------------------
*/
#define MAX_ITEM_LENGTH 1024
/* Relation lookup cache structure */
typedef void *(*func_ptr) ();
typedef struct {
char dbname[MAX_ITEM_LENGTH]; /* database name */
char relname[MAX_ITEM_LENGTH]; /* table name */
void *data; /* user data */
int refcnt; /* reference count */
int session_id; /* LocalSessionId */
time_t expire; /* cache expiration absolute time in seconds */
} PoolRelCache;
typedef struct {
int num; /* number of cache items */
char sql[MAX_ITEM_LENGTH]; /* Query to relation */
/*
* User defined function to be called at data register.
* Argument is POOL_SELECT_RESULT *.
* This function must return a pointer to be
* saved in cache->data.
*/
func_ptr register_func;
/*
* User defined function to be called at data unregister.
* Argument cache->data.
*/
func_ptr unregister_func;
bool cache_is_session_local; /* True if cache life time is session local */
PoolRelCache *cache; /* cache data */
} POOL_RELCACHE;
extern POOL_RELCACHE *pool_create_relcache(int cachesize, char *sql,
func_ptr register_func, func_ptr unregister_func,
bool issessionlocal);
extern void pool_discard_relcache(POOL_RELCACHE *relcache);
extern void *pool_search_relcache(POOL_RELCACHE *relcache, POOL_CONNECTION_POOL *backend, char *table);
extern void *int_register_func(POOL_SELECT_RESULT *res);
extern void *int_unregister_func(void *data);
extern void *string_register_func(POOL_SELECT_RESULT *res);
extern void *string_unregister_func(void *data);
#endif /* POOL_RELCACHE_H */