summaryrefslogtreecommitdiff
path: root/src/dbinc/partition.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbinc/partition.h')
-rw-r--r--src/dbinc/partition.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/dbinc/partition.h b/src/dbinc/partition.h
new file mode 100644
index 00000000..09e42573
--- /dev/null
+++ b/src/dbinc/partition.h
@@ -0,0 +1,57 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996, 2012 Oracle and/or its affiliates. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+#ifndef _DB_PART_H_
+#define _DB_PART_H_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef struct __db_partition {
+ u_int32_t nparts; /* number of partitions. */
+ DBT *keys; /* array of range keys. */
+ void *data; /* the partition info. */
+ const char **dirs; /* locations for partitions. */
+ DB **handles; /* array of partition handles. */
+ u_int32_t (*callback) (DB *, DBT *);
+#define PART_CALLBACK 0x01
+#define PART_RANGE 0x02
+ u_int32_t flags;
+} DB_PARTITION;
+
+/*
+ * Internal part of a partitioned cursor.
+ */
+typedef struct __part_internal {
+ __DBC_INTERNAL
+ u_int32_t part_id;
+ DBC *sub_cursor;
+} PART_CURSOR;
+
+#ifdef HAVE_PARTITION
+#define PART_NAME "__dbp.%s.%03d"
+#define PART_LEN (strlen("__dbp..")+3)
+#define PART_PREFIX "__dbp."
+#define IS_PARTITION_DB_FILE(name) (strncmp(name, PART_PREFIX, \
+ sizeof(PART_PREFIX) - 1) == 0)
+
+#define DB_IS_PARTITIONED(dbp) \
+ (dbp->p_internal != NULL && \
+ ((DB_PARTITION *)dbp->p_internal)->handles != NULL)
+
+#define DBC_PART_REFRESH(dbc) (F_SET(dbc, DBC_PARTITIONED))
+#else
+#define DBC_PART_REFRESH(dbc)
+#define DB_IS_PARTITIONED(dbp) (0)
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+#endif