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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
|
/*!
* @defgroup bdbmap WiredTiger for Berkeley DB developers
*
* The section explains how to map Oracle Berkeley DB operations onto the
* WiredTiger API.
* @{
*/
struct DB; typedef struct DB DB;
struct DB_BTREE_STAT; typedef struct DB_BTREE_STAT DB_BTREE_STAT;
struct DB_CIPHER; typedef struct DB_CIPHER DB_CIPHER;
struct DB_COMPACT; typedef struct DB_COMPACT DB_COMPACT;
struct DBT; typedef struct DBT DBT;
struct DB_DISTAB; typedef struct DB_DISTAB DB_DISTAB;
struct DB_ENV; typedef struct DB_ENV DB_ENV;
struct DB_HASH_STAT; typedef struct DB_HASH_STAT DB_HASH_STAT;
struct DB_LOCK_ILOCK; typedef struct DB_LOCK_ILOCK DB_LOCK_ILOCK;
struct DB_LOCK_HSTAT; typedef struct DB_LOCK_HSTAT DB_LOCK_HSTAT;
struct DB_LOCK_PSTAT; typedef struct DB_LOCK_PSTAT DB_LOCK_PSTAT;
struct DB_LOCK_STAT; typedef struct DB_LOCK_STAT DB_LOCK_STAT;
struct DB_LOCK; typedef struct DB_LOCK DB_LOCK;
struct DB_LOCKER; typedef struct DB_LOCKER DB_LOCKER;
struct DB_LOCKREQ; typedef struct DB_LOCKREQ DB_LOCKREQ;
struct DB_LOCKTAB; typedef struct DB_LOCKTAB DB_LOCKTAB;
struct DB_LOG; typedef struct DB_LOG DB_LOG;
struct DB_LOGC; typedef struct DB_LOGC DB_LOGC;
struct DB_LOG_STAT; typedef struct DB_LOG_STAT DB_LOG_STAT;
struct DB_LSN; typedef struct DB_LSN DB_LSN;
struct DB_MPOOL; typedef struct DB_MPOOL DB_MPOOL;
struct DB_MPOOL_FSTAT;typedef struct DB_MPOOL_FSTAT DB_MPOOL_FSTAT;
struct DB_MPOOL_STAT; typedef struct DB_MPOOL_STAT DB_MPOOL_STAT;
struct DB_MPOOLFILE; typedef struct DB_MPOOLFILE DB_MPOOLFILE;
struct DB_MUTEX_STAT; typedef struct DB_MUTEX_STAT DB_MUTEX_STAT;
struct DB_MUTEX; typedef struct DB_MUTEX DB_MUTEX;
struct DB_MUTEXMGR; typedef struct DB_MUTEXMGR DB_MUTEXMGR;
struct DB_PREPLIST; typedef struct DB_PREPLIST DB_PREPLIST;
struct DB_QUEUE_STAT; typedef struct DB_QUEUE_STAT DB_QUEUE_STAT;
struct DB_REP; typedef struct DB_REP DB_REP;
struct DB_REP_STAT; typedef struct DB_REP_STAT DB_REP_STAT;
struct DB_REPMGR_SITE;typedef struct DB_REPMGR_SITE DB_REPMGR_SITE;
struct DB_REPMGR_STAT;typedef struct DB_REPMGR_STAT DB_REPMGR_STAT;
struct DB_SEQ_RECORD; typedef struct DB_SEQ_RECORD DB_SEQ_RECORD;
struct DB_SEQUENCE_STAT; typedef struct DB_SEQUENCE_STAT DB_SEQUENCE_STAT;
struct DB_SEQUENCE; typedef struct DB_SEQUENCE DB_SEQUENCE;
struct DB_THREAD_INFO;typedef struct DB_THREAD_INFO DB_THREAD_INFO;
struct DB_TXN; typedef struct DB_TXN DB_TXN;
struct DB_TXN_ACTIVE; typedef struct DB_TXN_ACTIVE DB_TXN_ACTIVE;
struct DB_TXN_STAT; typedef struct DB_TXN_STAT DB_TXN_STAT;
struct DB_TXN_TOKEN; typedef struct DB_TXN_TOKEN DB_TXN_TOKEN;
struct DB_TXNMGR; typedef struct DB_TXNMGR DB_TXNMGR;
struct DBC; typedef struct DBC DBC;
struct DBC_INTERNAL; typedef struct DBC_INTERNAL DBC_INTERNAL;
struct ENV; typedef struct ENV ENV;
struct DB_FH; typedef struct DB_FH DB_FH;
struct FNAME; typedef struct FNAME FNAME;
struct DB_KEY_RANGE; typedef struct DB_KEY_RANGE DB_KEY_RANGE;
struct MPOOLFILE; typedef struct MPOOLFILE MPOOLFILE;
struct DB_LOG_VERIFY_CONFIG;
typedef struct DB_LOG_VERIFY_CONFIG DB_LOG_VERIFY_CONFIG;
/*!
* Key/data structure -- a Data-Base Thang.
*
* <b>Maps to WT_ITEM. Simplified by never overwriting the application's
* buffer: returned values are in memory managed by the WT_CURSOR (probably
* similar to the DB_DBT_REALLOC behavior).</b>
*/
struct DBT {
void *data; /*!< Key/data */
u_int32_t size; /*!< key/data length */
u_int32_t ulen; /*!< RO: length of user buffer. */
u_int32_t dlen; /*!< RO: get/put record length. */
u_int32_t doff; /*!< RO: get/put record offset. */
void *app_data;
#define DB_DBT_APPMALLOC 0x001 /*!< Callback allocated memory. */
#define DB_DBT_BULK 0x002 /*!< Internal: Insert if duplicate. */
#define DB_DBT_DUPOK 0x004 /*!< Internal: Insert if duplicate. */
#define DB_DBT_ISSET 0x008 /*!< Lower level calls set value. */
#define DB_DBT_MALLOC 0x010 /*!< Return in malloc'd memory. */
#define DB_DBT_MULTIPLE 0x020 /*!< References multiple records. */
#define DB_DBT_PARTIAL 0x040 /*!< Partial put/get. */
#define DB_DBT_REALLOC 0x080 /*!< Return in realloc'd memory. */
#define DB_DBT_STREAMING 0x100 /*!< Internal: DBT is being streamed. */
#define DB_DBT_USERCOPY 0x200 /*!< Use the user-supplied callback. */
#define DB_DBT_USERMEM 0x400 /*!< Return in user's memory. */
u_int32_t flags;
};
/*******************************************************
* Mutexes.
*******************************************************/
/*!
* Mutex statistics
*
* <b>Not required.</b>
*/
struct DB_MUTEX_STAT;
/*******************************************************
* Locking.
*******************************************************/
/*!
* Deadlock detector modes; used in the DB_ENV structure to configure the
* locking subsystem.
*
* <b>Not required directly.</b>
*/
#define DB_LOCK_NORUN 0
#define DB_LOCK_DEFAULT 1 /*!< Default policy. */
#define DB_LOCK_EXPIRE 2 /*!< Only expire locks, no detection. */
#define DB_LOCK_MAXLOCKS 3 /*!< Select locker with max locks. */
#define DB_LOCK_MAXWRITE 4 /*!< Select locker with max writelocks. */
#define DB_LOCK_MINLOCKS 5 /*!< Select locker with min locks. */
#define DB_LOCK_MINWRITE 6 /*!< Select locker with min writelocks. */
#define DB_LOCK_OLDEST 7 /*!< Select oldest locker. */
#define DB_LOCK_RANDOM 8 /*!< Select random locker. */
#define DB_LOCK_YOUNGEST 9 /*!< Select youngest locker. */
/*!
* Lock modes.
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
typedef enum {
DB_LOCK_NG=0, /*!< Not granted. */
DB_LOCK_READ=1, /*!< Shared/read. */
DB_LOCK_WRITE=2, /*!< Exclusive/write. */
DB_LOCK_WAIT=3, /*!< Wait for event */
DB_LOCK_IWRITE=4, /*!< Intent exclusive/write. */
DB_LOCK_IREAD=5, /*!< Intent to share/read. */
DB_LOCK_IWR=6, /*!< Intent to read and write. */
DB_LOCK_READ_UNCOMMITTED=7, /*!< Degree 1 isolation. */
DB_LOCK_WWRITE=8 /*!< Was Written. */
} db_lockmode_t;
/*!
* Lock request types.
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
typedef enum {
DB_LOCK_DUMP=0, /*!< Display held locks. */
DB_LOCK_GET=1, /*!< Get the lock. */
DB_LOCK_GET_TIMEOUT=2, /*!< Get lock with a timeout. */
DB_LOCK_INHERIT=3, /*!< Pass locks to parent. */
DB_LOCK_PUT=4, /*!< Release the lock. */
DB_LOCK_PUT_ALL=5, /*!< Release locker's locks. */
DB_LOCK_PUT_OBJ=6, /*!< Release locker's locks on obj. */
DB_LOCK_PUT_READ=7, /*!< Release locker's read locks. */
DB_LOCK_TIMEOUT=8, /*!< Force a txn to timeout. */
DB_LOCK_TRADE=9, /*!< Trade locker ids on a lock. */
DB_LOCK_UPGRADE_WRITE=10 /*!< Upgrade writes for dirty reads. */
} db_lockop_t;
/*!
* Status of a lock.
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
typedef enum {
DB_LSTAT_ABORTED=1, /*!< Lock belongs to an aborted txn. */
DB_LSTAT_EXPIRED=2, /*!< Lock has expired. */
DB_LSTAT_FREE=3, /*!< Lock is unallocated. */
DB_LSTAT_HELD=4, /*!< Lock is currently held. */
DB_LSTAT_PENDING=5, /*!< Lock was waiting and has been
* promoted; waiting for the owner
* to run and upgrade it to held. */
DB_LSTAT_WAITING=6 /*!< Lock is on the wait queue. */
}db_status_t;
/*! Lock statistics.
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
struct DB_LOCK_STAT {
u_int32_t st_id; /*!< Last allocated locker ID. */
u_int32_t st_cur_maxid; /*!< Current maximum unused ID. */
u_int32_t st_maxlocks; /*!< Maximum number of locks in table. */
u_int32_t st_maxlockers; /*!< Maximum num of lockers in table. */
u_int32_t st_maxobjects; /*!< Maximum num of objects in table. */
u_int32_t st_partitions; /*!< number of partitions. */
int st_nmodes; /*!< Number of lock modes. */
u_int32_t st_nlockers; /*!< Current number of lockers. */
#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_nlocks; /*!< Current number of locks. */
u_int32_t st_maxnlocks; /*!< Maximum number of locks so far. */
u_int32_t st_maxhlocks; /*!< Maximum number of locks in any bucket. */
uintmax_t st_locksteals; /*!< Number of lock steals so far. */
uintmax_t st_maxlsteals; /*!< Maximum number steals in any partition. */
u_int32_t st_maxnlockers; /*!< Maximum number of lockers so far. */
u_int32_t st_nobjects; /*!< Current number of objects. */
u_int32_t st_maxnobjects; /*!< Maximum number of objects so far. */
u_int32_t st_maxhobjects; /*!< Maximum number of objectsin any bucket. */
uintmax_t st_objectsteals; /*!< Number of objects steals so far. */
uintmax_t st_maxosteals; /*!< Maximum number of steals in any partition. */
uintmax_t st_nrequests; /*!< Number of lock gets. */
uintmax_t st_nreleases; /*!< Number of lock puts. */
uintmax_t st_nupgrade; /*!< Number of lock upgrades. */
uintmax_t st_ndowngrade; /*!< Number of lock downgrades. */
uintmax_t st_lock_wait; /*!< Lock conflicts w/ subsequent wait */
uintmax_t st_lock_nowait; /*!< Lock conflicts w/o subsequent wait */
uintmax_t st_ndeadlocks; /*!< Number of lock deadlocks. */
db_timeout_t st_locktimeout; /*!< Lock timeout. */
uintmax_t st_nlocktimeouts; /*!< Number of lock timeouts. */
db_timeout_t st_txntimeout; /*!< Transaction timeout. */
uintmax_t st_ntxntimeouts; /*!< Number of transaction timeouts. */
uintmax_t st_part_wait; /*!< Partition lock granted after wait. */
uintmax_t st_part_nowait; /*!< Partition lock granted without wait. */
uintmax_t st_part_max_wait; /*!< Max partition lock granted after wait. */
uintmax_t st_part_max_nowait; /*!< Max partition lock granted without wait. */
uintmax_t st_objs_wait; /*!< Object lock granted after wait. */
uintmax_t st_objs_nowait; /*!< Object lock granted without wait. */
uintmax_t st_lockers_wait; /*!< Locker lock granted after wait. */
uintmax_t st_lockers_nowait; /*!< Locker lock granted without wait. */
uintmax_t st_region_wait; /*!< Region lock granted after wait. */
uintmax_t st_region_nowait; /*!< Region lock granted without wait. */
u_int32_t st_hash_len; /*!< Max length of bucket. */
roff_t st_regsize; /*!< Region size. */
#endif
};
/*! Lock hash statistics
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
struct DB_LOCK_HSTAT {
uintmax_t st_nrequests; /*!< Number of lock gets. */
uintmax_t st_nreleases; /*!< Number of lock puts. */
uintmax_t st_nupgrade; /*!< Number of lock upgrades. */
uintmax_t st_ndowngrade; /*!< Number of lock downgrades. */
u_int32_t st_nlocks; /*!< Current number of locks. */
u_int32_t st_maxnlocks; /*!< Maximum number of locks so far. */
u_int32_t st_nobjects; /*!< Current number of objects. */
u_int32_t st_maxnobjects; /*!< Maximum number of objects so far. */
uintmax_t st_lock_wait; /*!< Lock conflicts w/ subsequent wait */
uintmax_t st_lock_nowait; /*!< Lock conflicts w/o subsequent wait */
uintmax_t st_nlocktimeouts; /*!< Number of lock timeouts. */
uintmax_t st_ntxntimeouts; /*!< Number of transaction timeouts. */
u_int32_t st_hash_len; /*!< Max length of bucket. */
};
/*! Lock partition statistics
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
struct DB_LOCK_PSTAT {
u_int32_t st_nlocks; /*!< Current number of locks. */
u_int32_t st_maxnlocks; /*!< Maximum number of locks so far. */
u_int32_t st_nobjects; /*!< Current number of objects. */
u_int32_t st_maxnobjects; /*!< Maximum number of objects so far. */
uintmax_t st_locksteals; /*!< Number of lock steals so far. */
uintmax_t st_objectsteals; /*!< Number of objects steals so far. */
};
/*!
* The structure is allocated by the caller and filled in during a
* lock_get request (or a lock_vec/DB_LOCK_GET).
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
struct DB_LOCK {
roff_t off; /*!< Offset of the lock in the region */
u_int32_t ndx; /*!< Index of the object referenced by
* this lock; used for locking. */
u_int32_t gen; /*!< Generation number of this lock. */
db_lockmode_t mode; /*!< mode of this lock. */
};
/*! Lock request structure.
*
* <b>Not required: explicit locking not in the WiredTiger API.</b>
*/
struct DB_LOCKREQ {
db_lockop_t op; /*!< Operation. */
db_lockmode_t mode; /*!< Requested mode. */
db_timeout_t timeout; /*!< Time to expire lock. */
DBT *obj; /*!< Object being locked. */
DB_LOCK lock; /*!< Lock returned. */
};
/*******************************************************
* Logging.
*******************************************************/
/*!
* A Log Sequence Number (LSN).
*
* A DB_LSN has two parts, a fileid which identifies a specific file, and an
* offset within that file. The fileid is an unsigned 4-byte quantity that
* uniquely identifies a file within the log directory -- currently a simple
* counter inside the log. The offset is also an unsigned 4-byte value. The
* log manager guarantees the offset is never more than 4 bytes by switching
* to a new log file before the maximum length imposed by an unsigned 4-byte
* offset is reached.
*
* <b>Not part of the public WiredTiger API, implemented internally by a
* combination of timestamps, transaction IDs and log file offsets.</b>
*/
struct DB_LSN {
u_int32_t file; /*!< File ID. */
u_int32_t offset; /*!< File offset. */
};
/*!
* Application-specified log record types start at DB_user_BEGIN, and must not
* equal or exceed DB_debug_FLAG.
*
* DB_debug_FLAG is the high-bit of the u_int32_t that specifies a log record
* type. If the flag is set, it's a log record that was logged for debugging
* purposes only, even if it reflects a database change -- the change was part
* of a non-durable transaction.
*/
#define DB_user_BEGIN 10000
#define DB_debug_FLAG 0x80000000
/*!
* Log cursor.
*
* <b>Not part of the public WiredTiger API, implemented internally.</b>
*/
struct DB_LOGC {
/* DB_LOGC PUBLIC HANDLE LIST BEGIN */
int close(DB_LOGC *, u_int32_t);
int get(DB_LOGC *, DB_LSN *, DBT *, u_int32_t);
int version(DB_LOGC *, u_int32_t *, u_int32_t);
/* DB_LOGC PUBLIC HANDLE LIST END */
#define DB_LOG_DISK 0x01 /*!< Log record came from disk. */
#define DB_LOG_LOCKED 0x02 /*!< Log region already locked */
#define DB_LOG_SILENT_ERR 0x04 /*!< Turn-off error messages. */
u_int32_t flags;
};
/*! Log statistics structure.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b>
*/
struct DB_LOG_STAT {
u_int32_t st_magic; /*!< Log file magic number. */
u_int32_t st_version; /*!< Log file version number. */
int st_mode; /*!< Log file permissions mode. */
u_int32_t st_lg_bsize; /*!< Log buffer size. */
u_int32_t st_lg_size; /*!< Log file size. */
u_int32_t st_wc_bytes; /*!< Bytes to log since checkpoint. */
u_int32_t st_wc_mbytes; /*!< Megabytes to log since checkpoint. */
#ifndef __TEST_DB_NO_STATISTICS
uintmax_t st_record; /*!< Records entered into the log. */
u_int32_t st_w_bytes; /*!< Bytes to log. */
u_int32_t st_w_mbytes; /*!< Megabytes to log. */
uintmax_t st_wcount; /*!< Total I/O writes to the log. */
uintmax_t st_wcount_fill; /*!< Overflow writes to the log. */
uintmax_t st_rcount; /*!< Total I/O reads from the log. */
uintmax_t st_scount; /*!< Total syncs to the log. */
uintmax_t st_region_wait; /*!< Region lock granted after wait. */
uintmax_t st_region_nowait; /*!< Region lock granted without wait. */
u_int32_t st_cur_file; /*!< Current log file number. */
u_int32_t st_cur_offset; /*!< Current log file offset. */
u_int32_t st_disk_file; /*!< Known on disk log file number. */
u_int32_t st_disk_offset; /*!< Known on disk log file offset. */
u_int32_t st_maxcommitperflush; /*!< Max number of commits in a flush. */
u_int32_t st_mincommitperflush; /*!< Min number of commits in a flush. */
roff_t st_regsize; /*!< Region size. */
#endif
};
/*!
* Log record field types.
*
* <b>Not part of the public WiredTiger API, may be implemented internally.</b>
*/
typedef enum {
LOGREC_Done,
LOGREC_ARG,
LOGREC_HDR,
LOGREC_DATA,
LOGREC_DB,
LOGREC_DBOP,
LOGREC_DBT,
LOGREC_LOCKS,
LOGREC_OP,
LOGREC_PGDBT,
LOGREC_PGDDBT,
LOGREC_PGLIST,
LOGREC_POINTER,
LOGREC_TIME
} log_rec_type_t;
/*!
* Definition of the structure which specifies marshalling of log records.
*
* <b>Not part of the public WiredTiger API, may be implemented internally.</b>
*/
typedef const struct __log_rec_spec {
log_rec_type_t type;
u_int32_t offset;
const char *name;
const char fmt[4];
} DB_LOG_RECSPEC;
/*******************************************************
* Shared buffer cache (mpool).
*******************************************************/
/*! Priority values for DB_MPOOLFILE::put, DB_MPOOLFILE::set_priority.
*
* <b>Not part of the public WiredTiger API, may be supported via @p config parameter to WT_SESSION::open_cursor.</b>
*/
typedef enum {
DB_PRIORITY_UNCHANGED=0,
DB_PRIORITY_VERY_LOW=1,
DB_PRIORITY_LOW=2,
DB_PRIORITY_DEFAULT=3,
DB_PRIORITY_HIGH=4,
DB_PRIORITY_VERY_HIGH=5
} DB_CACHE_PRIORITY;
/*! Per-process DB_MPOOLFILE information.
*
* <b>Not part of the public WiredTiger API, may be implemented internally.</b>
*/
struct DB_MPOOLFILE {
/* DB_MPOOLFILE PUBLIC HANDLE LIST BEGIN */
int close(DB_MPOOLFILE *, u_int32_t);
int get
(DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *);
int get_clear_len(DB_MPOOLFILE *, u_int32_t *);
int get_fileid(DB_MPOOLFILE *, u_int8_t *);
int get_flags(DB_MPOOLFILE *, u_int32_t *);
int get_ftype(DB_MPOOLFILE *, int *);
int get_last_pgno(DB_MPOOLFILE *, db_pgno_t *);
int get_lsn_offset(DB_MPOOLFILE *, int32_t *);
int get_maxsize(DB_MPOOLFILE *, u_int32_t *, u_int32_t *);
int get_pgcookie(DB_MPOOLFILE *, DBT *);
int get_priority(DB_MPOOLFILE *, DB_CACHE_PRIORITY *);
int open(DB_MPOOLFILE *, const char *, u_int32_t, int, size_t);
int put(DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t);
int set_clear_len(DB_MPOOLFILE *, u_int32_t);
int set_fileid(DB_MPOOLFILE *, u_int8_t *);
int set_flags(DB_MPOOLFILE *, u_int32_t, int);
int set_ftype(DB_MPOOLFILE *, int);
int set_lsn_offset(DB_MPOOLFILE *, int32_t);
int set_maxsize(DB_MPOOLFILE *, u_int32_t, u_int32_t);
int set_pgcookie(DB_MPOOLFILE *, DBT *);
int set_priority(DB_MPOOLFILE *, DB_CACHE_PRIORITY);
int sync(DB_MPOOLFILE *);
/* DB_MPOOLFILE PUBLIC HANDLE LIST END */
/*
* MP_FILEID_SET, MP_OPEN_CALLED and MP_READONLY do not need to be
* thread protected because they are initialized before the file is
* linked onto the per-process lists, and never modified.
*
* MP_FLUSH is thread protected because it is potentially read/set by
* multiple threads of control.
*/
#define MP_FILEID_SET 0x001 /*!< Application supplied a file ID. */
#define MP_FLUSH 0x002 /*!< Was opened to flush a buffer. */
#define MP_MULTIVERSION 0x004 /*!< Opened for multiversion access. */
#define MP_OPEN_CALLED 0x008 /*!< File opened. */
#define MP_READONLY 0x010 /*!< File is readonly. */
#define MP_DUMMY 0x020 /*!< File is dummy for __memp_fput. */
u_int32_t flags;
};
/*! Mpool statistics structure.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b>
*/
struct DB_MPOOL_STAT {
u_int32_t st_gbytes; /*!< Total cache size: GB. */
u_int32_t st_bytes; /*!< Total cache size: B. */
u_int32_t st_ncache; /*!< Number of cache regions. */
u_int32_t st_max_ncache; /*!< Maximum number of regions. */
size_t st_mmapsize; /*!< Maximum file size for mmap. */
int st_maxopenfd; /*!< Maximum number of open fd's. */
int st_maxwrite; /*!< Maximum buffers to write. */
db_timeout_t st_maxwrite_sleep; /*!< Sleep after writing max buffers. */
u_int32_t st_pages; /*!< Total number of pages. */
#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /*!< Pages from mapped files. */
uintmax_t st_cache_hit; /*!< Pages found in the cache. */
uintmax_t st_cache_miss; /*!< Pages not found in the cache. */
uintmax_t st_page_create; /*!< Pages created in the cache. */
uintmax_t st_page_in; /*!< Pages read in. */
uintmax_t st_page_out; /*!< Pages written out. */
uintmax_t st_ro_evict; /*!< Clean pages forced from the cache. */
uintmax_t st_rw_evict; /*!< Dirty pages forced from the cache. */
uintmax_t st_page_trickle; /*!< Pages written by memp_trickle. */
u_int32_t st_page_clean; /*!< Clean pages. */
u_int32_t st_page_dirty; /*!< Dirty pages. */
u_int32_t st_hash_buckets; /*!< Number of hash buckets. */
u_int32_t st_hash_mutexes; /*!< Number of hash bucket mutexes. */
u_int32_t st_pagesize; /*!< Assumed page size. */
u_int32_t st_hash_searches; /*!< Total hash chain searches. */
u_int32_t st_hash_longest; /*!< Longest hash chain searched. */
uintmax_t st_hash_examined; /*!< Total hash entries searched. */
uintmax_t st_hash_nowait; /*!< Hash lock granted with nowait. */
uintmax_t st_hash_wait; /*!< Hash lock granted after wait. */
uintmax_t st_hash_max_nowait; /*!< Max hash lock granted with nowait. */
uintmax_t st_hash_max_wait; /*!< Max hash lock granted after wait. */
uintmax_t st_region_nowait; /*!< Region lock granted with nowait. */
uintmax_t st_region_wait; /*!< Region lock granted after wait. */
uintmax_t st_mvcc_frozen; /*!< Buffers frozen. */
uintmax_t st_mvcc_thawed; /*!< Buffers thawed. */
uintmax_t st_mvcc_freed; /*!< Frozen buffers freed. */
uintmax_t st_alloc; /*!< Number of page allocations. */
uintmax_t st_alloc_buckets; /*!< Buckets checked during allocation. */
uintmax_t st_alloc_max_buckets;/*!< Max checked during allocation. */
uintmax_t st_alloc_pages; /*!< Pages checked during allocation. */
uintmax_t st_alloc_max_pages; /*!< Max checked during allocation. */
uintmax_t st_io_wait; /*!< Thread waited on buffer I/O. */
uintmax_t st_sync_interrupted; /*!< Number of times sync interrupted. */
roff_t st_regsize; /*!< Region size. */
#endif
};
/*! Mpool file statistics structure.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b>
*/
struct DB_MPOOL_FSTAT {
char *file_name; /*!< File name. */
u_int32_t st_pagesize; /*!< Page size. */
#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /*!< Pages from mapped files. */
uintmax_t st_cache_hit; /*!< Pages found in the cache. */
uintmax_t st_cache_miss; /*!< Pages not found in the cache. */
uintmax_t st_page_create; /*!< Pages created in the cache. */
uintmax_t st_page_in; /*!< Pages read in. */
uintmax_t st_page_out; /*!< Pages written out. */
#endif
};
/*******************************************************
* Transactions and recovery.
*******************************************************/
/*! Transaction recovery operation types
*
* <b>Not part of the public API: no application-level logging.</b>
*/
typedef enum {
DB_TXN_ABORT=0, /* Public. */
DB_TXN_APPLY=1, /* Public. */
DB_TXN_BACKWARD_ROLL=3, /* Public. */
DB_TXN_FORWARD_ROLL=4, /* Public. */
DB_TXN_OPENFILES=5, /* Internal. */
DB_TXN_POPENFILES=6, /* Internal. */
DB_TXN_PRINT=7, /* Public. */
DB_TXN_LOG_VERIFY=8 /* Internal. */
} db_recops;
/*! A transaction handle
*
* <b>Part of the WT_SESSION context, see WT_SESSION::begin_transaction</b>
*/
struct DB_TXN {
/* DB_TXN PUBLIC HANDLE LIST BEGIN */
int abort(DB_TXN *); /*!< <b>WT_SESSION::rollback_transaction</b> */
int commit(DB_TXN *, u_int32_t); /*!< <b>WT_SESSION::commit_transaction</b> */
int discard(DB_TXN *, u_int32_t); /*!< <b>Not required (XA)</b> */
int get_name(DB_TXN *, const char **); /*!< <b>Not implemented.</b> */
int get_priority(DB_TXN *, u_int32_t *); /*!< <b>Not implemented.</b> */
u_int32_t id(DB_TXN *); /*!< <b>Not implemented.</b> */
int prepare(DB_TXN *, u_int8_t *); /*!< <b>Not required (XA)</b> */
int set_commit_token(DB_TXN *, DB_TXN_TOKEN *); /*!< <b>Not required (replication)<b> */
int set_name(DB_TXN *, const char *); /*!< <b>@p config parameter <tt>"name=\<name\>"</tt> to WT_SESSION::begin_transaction</b> */
int set_priority(DB_TXN *, u_int32_t); /*!< <b>@p config parameter <tt>"priority=\<priority\>"</tt> to WT_SESSION::begin_transaction</b> */
int set_timeout(DB_TXN *, db_timeout_t, u_int32_t); /*!< <b>@p config parameter <tt>"timeout=\<timeout\>"</tt> to WT_SESSION::begin_transaction</b> */
/* DB_TXN PUBLIC HANDLE LIST END */
#define TXN_CHILDCOMMIT 0x00001 /*!< Txn has committed. */
#define TXN_COMPENSATE 0x00002 /*!< Compensating transaction. */
#define TXN_DEADLOCK 0x00004 /*!< Txn has deadlocked. */
#define TXN_FAMILY 0x00008 /*!< Cursors/children are independent. */
#define TXN_IGNORE_LEASE 0x00010 /*!< Skip lease check at commit time. */
#define TXN_INFAMILY 0x00020 /*!< Part of a transaction family. */
#define TXN_LOCKTIMEOUT 0x00040 /*!< Txn has a lock timeout. */
#define TXN_MALLOC 0x00080 /*!< Structure allocated by TXN system. */
#define TXN_NOSYNC 0x00100 /*!< Do not sync on prepare and commit. */
#define TXN_NOWAIT 0x00200 /*!< Do not wait on locks. */
#define TXN_PRIVATE 0x00400 /*!< Txn owned by cursor. */
#define TXN_READONLY 0x00800 /*!< CDS group handle. */
#define TXN_READ_COMMITTED 0x01000 /*!< Txn has degree 2 isolation. */
#define TXN_READ_UNCOMMITTED 0x02000 /*!< Txn has degree 1 isolation. */
#define TXN_RESTORED 0x04000 /*!< Txn has been restored. */
#define TXN_SNAPSHOT 0x08000 /*!< Snapshot Isolation. */
#define TXN_SYNC 0x10000 /*!< Write and sync on prepare/commit. */
#define TXN_WRITE_NOSYNC 0x20000 /*!< Write only on prepare/commit. */
#define TXN_BULK 0x40000 /*!< Enable bulk loading optimization. */
u_int32_t flags;
};
/*!
* Structure used for two phase commit interface.
* We set the size of our global transaction id (gid) to be 128 in order
* to match that defined by the XA X/Open standard.
*
* <b>Not required (XA).</b>
*/
struct DB_PREPLIST {
DB_TXN *txn;
#define DB_GID_SIZE 128
u_int8_t gid[DB_GID_SIZE];
};
/*! Statistics for an active transaction.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b>
*/
struct DB_TXN_ACTIVE {
u_int32_t txnid; /*!< Transaction ID */
u_int32_t parentid; /*!< Transaction ID of parent */
pid_t pid; /*!< Process owning txn ID */
db_threadid_t tid; /*!< Thread owning txn ID */
DB_LSN lsn; /*!< LSN when transaction began */
DB_LSN read_lsn; /*!< Read LSN for MVCC */
u_int32_t mvcc_ref; /*!< MVCC reference count */
u_int32_t priority; /*!< Deadlock resolution priority */
#define TXN_ABORTED 1
#define TXN_COMMITTED 2
#define TXN_PREPARED 3
#define TXN_RUNNING 4
u_int32_t status; /*!< Status of the transaction */
u_int8_t gid[DB_GID_SIZE]; /*!< Global transaction ID */
char name[51]; /*!< 50 bytes of name, nul termination */
};
/*! Transaction manager statistics structure.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b>
*/
struct DB_TXN_STAT {
u_int32_t st_nrestores; /*!< number of restored transactions
after recovery. */
#ifndef __TEST_DB_NO_STATISTICS
DB_LSN st_last_ckp; /*!< lsn of the last checkpoint */
time_t st_time_ckp; /*!< time of last checkpoint */
u_int32_t st_last_txnid; /*!< last transaction id given out */
u_int32_t st_maxtxns; /*!< maximum txns possible */
uintmax_t st_naborts; /*!< number of aborted transactions */
uintmax_t st_nbegins; /*!< number of begun transactions */
uintmax_t st_ncommits; /*!< number of committed transactions */
u_int32_t st_nactive; /*!< number of active transactions */
u_int32_t st_nsnapshot; /*!< number of snapshot transactions */
u_int32_t st_maxnactive; /*!< maximum active transactions */
u_int32_t st_maxnsnapshot; /*!< maximum snapshot transactions */
DB_TXN_ACTIVE *st_txnarray; /*!< array of active transactions */
uintmax_t st_region_wait; /*!< Region lock granted after wait. */
uintmax_t st_region_nowait; /*!< Region lock granted without wait. */
roff_t st_regsize; /*!< Region size. */
#endif
};
#define DB_TXN_TOKEN_SIZE 20
/*! Transaction tokens, used by replication to check ordering
*
* <b>Not implemented (replication).</b>
*/
struct DB_TXN_TOKEN {
u_int8_t buf[DB_TXN_TOKEN_SIZE];
};
/*******************************************************
* Replication.
*******************************************************/
/*! Special, out-of-band environment IDs.
*
* <b>Not implemented (replication).</b>
*/
enum {
DB_EID_BROADCAST = -1,
DB_EID_INVALID = -2,
};
/*! Default replication priority
*
* <b>Not implemented (replication).</b>
*/
#define DB_REP_DEFAULT_PRIORITY 100
/*! Replication Manager acknowledgement policies.
*
* <b>Not implemented (replication).</b>
*/
enum {
DB_REPMGR_ACKS_ALL = 1,
DB_REPMGR_ACKS_ALL_AVAILABLE,
DB_REPMGR_ACKS_ALL_PEERS,
DB_REPMGR_ACKS_NONE,
DB_REPMGR_ACKS_ONE,
DB_REPMGR_ACKS_ONE_PEER,
DB_REPMGR_ACKS_QUORUM,
};
/*! Replication timeout configuration values.
*
* <b>Not implemented (replication).</b>
*/
enum {
DB_REP_ACK_TIMEOUT = 1, /*!< RepMgr acknowledgements. */
DB_REP_CHECKPOINT_DELAY, /*!< Master checkpoint delay. */
DB_REP_CONNECTION_RETRY /*!< RepMgr connections. */
DB_REP_ELECTION_RETRY, /*!< RepMgr elect retries. */
DB_REP_ELECTION_TIMEOUT, /*!< Rep normal elections. */
DB_REP_FULL_ELECTION_TIMEOUT, /*!< Rep full elections. */
DB_REP_HEARTBEAT_MONITOR, /*!< RepMgr client HB monitor. */
DB_REP_HEARTBEAT_SEND, /*!< RepMgr master send freq. */
DB_REP_LEASE_TIMEOUT, /*!< Master leases. */
};
/*! Event notification types.
*
* <b>Not implemented (replication).</b>
*/
enum {
DB_EVENT_PANIC = 0,
DB_EVENT_REG_ALIVE,
DB_EVENT_REG_PANIC,
DB_EVENT_REP_CLIENT,
DB_EVENT_REP_DUPMASTER,
DB_EVENT_REP_ELECTED,
DB_EVENT_REP_ELECTION_FAILED,
DB_EVENT_REP_JOIN_FAILURE,
DB_EVENT_REP_MASTER,
DB_EVENT_REP_MASTER_FAILURE,
DB_EVENT_REP_NEWMASTER,
DB_EVENT_REP_PERM_FAILED,
DB_EVENT_REP_STARTUPDONE,
DB_EVENT_WRITE_FAILED,
DB_EVENT_NO_SUCH_EVENT = 0xffffffff /* OOB sentinel value */
};
/*! Replication Manager site status.
*
* <b>Not implemented (replication).</b>
*/
struct DB_REPMGR_SITE {
int eid;
char *host;
u_int port;
#define DB_REPMGR_CONNECTED 1
#define DB_REPMGR_DISCONNECTED 2
u_int32_t status;
#define DB_REPMGR_ISPEER 0x01
u_int32_t flags;
};
/*! Replication statistics.
*
* <b>Not implemented (replication).</b>
*/
struct DB_REP_STAT {
u_int32_t st_startup_complete; /*!< Site completed client sync-up. */
#ifndef __TEST_DB_NO_STATISTICS
uintmax_t st_log_queued; /*!< Log records currently queued.+ */
u_int32_t st_status; /*!< Current replication status. */
DB_LSN st_next_lsn; /*!< Next LSN to use or expect. */
DB_LSN st_waiting_lsn; /*!< LSN we're awaiting, if any. */
DB_LSN st_max_perm_lsn; /*!< Maximum permanent LSN. */
db_pgno_t st_next_pg; /*!< Next pg we expect. */
db_pgno_t st_waiting_pg; /*!< pg we're awaiting, if any. */
u_int32_t st_dupmasters; /*!< # of times a duplicate master
condition was detected.+ */
int st_env_id; /*!< Current environment ID. */
u_int32_t st_env_priority; /*!< Current environment priority. */
uintmax_t st_bulk_fills; /*!< Bulk buffer fills. */
uintmax_t st_bulk_overflows; /*!< Bulk buffer overflows. */
uintmax_t st_bulk_records; /*!< Bulk records stored. */
uintmax_t st_bulk_transfers; /*!< Transfers of bulk buffers. */
uintmax_t st_client_rerequests;/*!< Number of forced rerequests. */
uintmax_t st_client_svc_req; /*!< Number of client service requests
received by this client. */
uintmax_t st_client_svc_miss; /*!< Number of client service requests
missing on this client. */
u_int32_t st_gen; /*!< Current generation number. */
u_int32_t st_egen; /*!< Current election gen number. */
uintmax_t st_lease_chk; /*!< Lease validity checks. */
uintmax_t st_lease_chk_misses; /*!< Lease checks invalid. */
uintmax_t st_lease_chk_refresh; /*!< Lease refresh attempts. */
uintmax_t st_lease_sends; /*!< Lease messages sent live. */
uintmax_t st_log_duplicated; /*!< Log records received multiply.+ */
uintmax_t st_log_queued_max; /*!< Max. log records queued at once.+ */
uintmax_t st_log_queued_total; /*!< Total # of log recs. ever queued.+ */
uintmax_t st_log_records; /*!< Log records received and put.+ */
uintmax_t st_log_requested; /*!< Log recs. missed and requested.+ */
int st_master; /*!< Env. ID of the current master. */
uintmax_t st_master_changes; /*!< # of times we've switched masters. */
uintmax_t st_msgs_badgen; /*!< Messages with a bad generation #.+ */
uintmax_t st_msgs_processed; /*!< Messages received and processed.+ */
uintmax_t st_msgs_recover; /*!< Messages ignored because this site
was a client in recovery.+ */
uintmax_t st_msgs_send_failures;/*!< # of failed message sends.+ */
uintmax_t st_msgs_sent; /*!< # of successful message sends.+ */
uintmax_t st_newsites; /*!< # of NEWSITE msgs. received.+ */
u_int32_t st_nsites; /*!< Current number of sites we will
assume during elections. */
uintmax_t st_nthrottles; /*!< # of times we were throttled. */
uintmax_t st_outdated; /*!< # of times we detected and returned
an OUTDATED condition.+ */
uintmax_t st_pg_duplicated; /*!< Pages received multiply.+ */
uintmax_t st_pg_records; /*!< Pages received and stored.+ */
uintmax_t st_pg_requested; /*!< Pages missed and requested.+ */
uintmax_t st_txns_applied; /*!< # of transactions applied.+ */
uintmax_t st_startsync_delayed;/*!< # of STARTSYNC msgs delayed.+ */
/*!< Elections generally. */
uintmax_t st_elections; /*!< # of elections held.+ */
uintmax_t st_elections_won; /*!< # of elections won by this site.+ */
/*!< Statistics about an in-progress election. */
int st_election_cur_winner; /*!< Current front-runner. */
u_int32_t st_election_gen; /*!< Election generation number. */
u_int32_t st_election_datagen; /*!< Election data generation number. */
DB_LSN st_election_lsn; /*!< Max. LSN of current winner. */
u_int32_t st_election_nsites; /*!< # of "registered voters". */
u_int32_t st_election_nvotes; /*!< # of "registered voters" needed. */
u_int32_t st_election_priority; /*!< Current election priority. */
int st_election_status; /*!< Current election status. */
u_int32_t st_election_tiebreaker;/*!< Election tiebreaker value. */
u_int32_t st_election_votes; /*!< Votes received in this round. */
u_int32_t st_election_sec; /*!< Last election time seconds. */
u_int32_t st_election_usec; /*!< Last election time useconds. */
u_int32_t st_max_lease_sec; /*!< Maximum lease timestamp seconds. */
u_int32_t st_max_lease_usec; /*!< Maximum lease timestamp useconds. */
#endif
};
/*! Replication Manager statistics.
*
* <b>Not implemented (replication).</b>
*/
struct DB_REPMGR_STAT {
uintmax_t st_perm_failed; /*!< # of insufficiently ack'ed msgs. */
uintmax_t st_msgs_queued; /*!< # msgs queued for network delay. */
uintmax_t st_msgs_dropped; /*!< # msgs discarded due to excessive
queue length. */
uintmax_t st_connection_drop; /*!< Existing connections dropped. */
uintmax_t st_connect_fail; /*!< Failed new connection attempts. */
uintmax_t st_elect_threads; /*!< # of active election threads. */
uintmax_t st_max_elect_threads; /*!< Max concurrent e-threads ever. */
};
/*******************************************************
* Sequences.
*******************************************************/
/*!
* The storage record for a sequence.
*/
struct DB_SEQ_RECORD {
u_int32_t seq_version; /*!< Version size/number. */
u_int32_t flags; /*!< DB_SEQ_* Flags. */
db_seq_t seq_value; /*!< Current value. */
db_seq_t seq_max; /*!< Max permitted. */
db_seq_t seq_min; /*!< Min permitted. */
};
/*!
* Handle for a sequence object.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "sequence:<seqname>"</b>
*/
struct DB_SEQUENCE {
/* DB_SEQUENCE PUBLIC HANDLE LIST BEGIN */
int close(DB_SEQUENCE *, u_int32_t); /*!< <b>WT_CURSOR::close</b> */
int get(DB_SEQUENCE *, DB_TXN *, int32_t, db_seq_t *, u_int32_t); /*!< <b>WT_CURSOR::insert</b> */
int get_cachesize(DB_SEQUENCE *, int32_t *); /*!< <b>Not implemented.</b> */
int get_db(DB_SEQUENCE *, DB **); /*!< <b>N/A</b> */
int get_flags(DB_SEQUENCE *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_key(DB_SEQUENCE *, DBT *); /*!< <b>Not implemented (getter)</b> */
int get_range(DB_SEQUENCE *, db_seq_t *, db_seq_t *); /*!< <b>Not implemented (getter).</b> */
int initial_value(DB_SEQUENCE *, db_seq_t); /*!< <b>Set via @p config parameter of WT_SESSION::open_cursor: <tt>"initial_value=\<x\>"</tt></b> */
int open(DB_SEQUENCE *, DB_TXN *, DBT *, u_int32_t); /*!< <b>WT_SESSION::open_cursor</b> */
int remove(DB_SEQUENCE *, DB_TXN *, u_int32_t); /*!< <b>WT_CURSOR::del on the sequences cursor</b> */
int set_cachesize(DB_SEQUENCE *, int32_t); /*!< <b>Set via the @p config parameter of WT_SESSION::open_cursor: <tt>"cachesize=\<x\>"</tt></b> */
int set_flags(DB_SEQUENCE *, u_int32_t); /*!< <b>Set via the @p config parameter of WT_SESSION::open_cursor</b> */
int set_range(DB_SEQUENCE *, db_seq_t, db_seq_t); /*!< <b>WT_CURSOR::close</b> */
int stat(DB_SEQUENCE *, DB_SEQUENCE_STAT **, u_int32_t); /*!< <b>WT_SESSION::open_cursor with the URI @p "statistics:sequence:<seqname>" */
int stat_print(DB_SEQUENCE *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
/* DB_SEQUENCE PUBLIC HANDLE LIST END */
};
/*! Sequence statistics.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:sequence:"</b>
*/
struct DB_SEQUENCE_STAT {
uintmax_t st_wait; /*!< Sequence lock granted w/o wait. */
uintmax_t st_nowait; /*!< Sequence lock granted after wait. */
db_seq_t st_current; /*!< Current value in db. */
db_seq_t st_value; /*!< Current cached value. */
db_seq_t st_last_value; /*!< Last cached value. */
db_seq_t st_min; /*!< Minimum value. */
db_seq_t st_max; /*!< Maximum value. */
int32_t st_cache_size; /*!< Cache size. */
u_int32_t st_flags; /*!< Flag value. */
};
/*******************************************************
* Access methods.
*******************************************************/
/*! Database types
*
* <b>Passed in @p config parameter to WT_SESSION::create_table.</b>
*/
typedef enum {
DB_BTREE=1,
DB_HASH=2,
DB_RECNO=3,
DB_QUEUE=4,
DB_UNKNOWN=5 /*!< Figure it out on open. */
} DBTYPE;
/*!
* DB access method and cursor operation values. Each value is an operation
* code to which additional bit flags are added.
*/
enum {
DB_AFTER = 1, /*!< DBC::put, <b>not needed in WiredTiger: no unsorted dups.</b> */
DB_APPEND, /*!< DB::put, <b>WT_CURSOR::insert</b> */
DB_BEFORE, /*!< DBC::put, <b>not needed in WiredTiger: no unsorted dups.</b> */
DB_CONSUME, /*!< DB::get, <b>not needed in WiredTiger: no queue.</b> */
DB_CONSUME_WAIT, /*!< DB::get, <b>not needed in WiredTiger: no queue.</b> */
DB_CURRENT, /*!< DBC::get, DBC::put, DB_LOGC::get <b>WT_CURRENT</b> */
DB_FIRST, /*!< DBC::get, DB_LOGC::get <b>WT_FIRST</b> */
DB_GET_BOTH, /*!< DB::get, DBC::get <b>WT_CURSOR::search with non-NULL @p value parameter</b> */
DB_GET_BOTHC, /*!< DBC::get (internal) <b>N/A</b> */
DB_GET_BOTH_RANGE, /*!< DB::get, DBC::get <b>WT_CURSOR::search with non-NULL @p value parameter, returned as <tt>result != WT_CURRENT</tt>. */
DB_GET_RECNO, /*!< DBC::get <b>N/A for WiredTiger: no DB_RECNUM equivalent.</b> */
DB_JOIN_ITEM, /*!< DBC::get; don't do primary lookup <b>Special join cursor</b> */
DB_KEYFIRST, /*!< DBC::put <b>not needed in WiredTiger: no unsorted dups.</b> */
DB_KEYLAST, /*!< DBC::put <b>not needed in WiredTiger: no unsorted dups.</b> */
DB_LAST, /*!< DBC::get, DB_LOGC::get, <b>WT_LAST</b> */
DB_NEXT, /*!< DBC::get, DB_LOGC::get, <b>WT_NEXT</b> */
DB_NEXT_DUP, /*!< DBC::get, <b>default behavior or WT_NEXT</b> */
DB_NEXT_NODUP, /*!< DBC::get, <b>WT_NEXT with @p "nodup" config to WT_SESSION::open_cursor</b>. */
DB_NODUPDATA, /*!< DB::put, DBC::put, <b>WT_CURSOR::insert with @p "nodup" config to WT_SESSION::open_cursor</b> */
DB_NOOVERWRITE, /*!< DB::put <b>default behavior of WT_CURSOR::insert</b> */
DB_OVERWRITE_DUP, /*!< DBC::put, DB::put; no DB_KEYEXIST <b>WT_CURSOR::update</b> */
DB_POSITION, /*!< DBC::dup <b>default behavior of WT_SESSION::dup_cursor.</b> */
DB_PREV, /*!< DBC::get, DB_LOGC::get <b>WT_PREV</b> */
DB_PREV_DUP, /*!< DBC::get <b>default behavior of WT_PREV</b> */
DB_PREV_NODUP, /*!< DBC::get <b>WT_PREV with @p "nodup" config to WT_SESSION::open_cursor</b> */
DB_SET, /*!< DBC::get, DB_LOGC::get <b>WT_CURSOR::search default</b> */
DB_SET_RANGE, /*!< DBC::get <b>WT_CURSOR::search returns <tt>result != DB_CURRENT</tt></b> */
DB_SET_RECNO, /*!< DB::get, DBC::get <b>N/A for WiredTiger: no DB_RECNUM equivalent.</b> */
DB_UPDATE_SECONDARY, /*!< DBC::get, DBC::del (internal) <b>N/A for WiredTiger</b> */
DB_SET_LTE, /*!< DBC::get (internal) <b>WT_CURSOR::search returns <tt>result != DB_CURRENT</b> */
DB_GET_BOTH_LTE, /*!< DBC::get (internal) <b>WT_CURSOR::search returns <tt>result != DB_CURRENT</b> */
};
/*
* DB (user visible) error return codes.
*
* !!!
* We don't want our error returns to conflict with other packages where
* possible, so pick a base error value that's hopefully not common. We
* document that we own the error name space from -30,800 to -30,999.
*/
/* DB (public) error return codes. */
#define DB_BUFFER_SMALL (-30999)/*!< User memory too small for return. */
#define DB_DONOTINDEX (-30998)/*!< "Null" return from 2ndary callbk. */
#define DB_FOREIGN_CONFLICT (-30997)/*!< A foreign db constraint triggered. */
#define DB_KEYEMPTY (-30996)/*!< Key/data deleted or never created. */
#define DB_KEYEXIST (-30995)/*!< The key/data pair already exists. */
#define DB_LOCK_DEADLOCK (-30994)/*!< Deadlock. */
#define DB_LOCK_NOTGRANTED (-30993)/*!< Lock unavailable. */
#define DB_LOG_BUFFER_FULL (-30992)/*!< In-memory log buffer full. */
#define DB_LOG_VERIFY_BAD (-30991)/*!< Log verification failed. */
#define DB_NOSERVER (-30990)/*!< Server panic return. */
#define DB_NOSERVER_HOME (-30989)/*!< Bad home sent to server. */
#define DB_NOSERVER_ID (-30988)/*!< Bad ID sent to server. */
#define DB_NOTFOUND (-30987)/*!< Key/data pair not found (EOF). */
#define DB_OLD_VERSION (-30986)/*!< Out-of-date version. */
#define DB_PAGE_NOTFOUND (-30985)/*!< Requested page not found. */
#define DB_REP_DUPMASTER (-30984)/*!< There are two masters. */
#define DB_REP_HANDLE_DEAD (-30983)/*!< Rolled back a commit. */
#define DB_REP_HOLDELECTION (-30982)/*!< Time to hold an election. */
#define DB_REP_IGNORE (-30981)/*!< This msg should be ignored.*/
#define DB_REP_ISPERM (-30980)/*!< Cached not written perm written.*/
#define DB_REP_JOIN_FAILURE (-30979)/*!< Unable to join replication group. */
#define DB_REP_LEASE_EXPIRED (-30978)/*!< Master lease has expired. */
#define DB_REP_LOCKOUT (-30977)/*!< API/Replication lockout now. */
#define DB_REP_NEWSITE (-30976)/*!< New site entered system. */
#define DB_REP_NOTPERM (-30975)/*!< Permanent log record not written. */
#define DB_REP_UNAVAIL (-30974)/*!< Site cannot currently be reached. */
#define DB_RUNRECOVERY (-30973)/*!< Panic return. */
#define DB_SECONDARY_BAD (-30972)/*!< Secondary index corrupt. */
#define DB_TIMEOUT (-30971)/*!< Timed out on read consistency. */
#define DB_VERIFY_BAD (-30970)/*!< Verify failed; bad format. */
#define DB_VERSION_MISMATCH (-30969)/*!< Environment version mismatch. */
/*!< DB (private) error return codes. */
#define DB_ALREADY_ABORTED (-30899)
#define DB_DELETED (-30898)/*!< Recovery file marked deleted. */
#define DB_EVENT_NOT_HANDLED (-30897)/*!< Forward event to application. */
#define DB_NEEDSPLIT (-30896)/*!< Page needs to be split. */
#define DB_REP_BULKOVF (-30895)/*!< Rep bulk buffer overflow. */
#define DB_REP_LOGREADY (-30894)/*!< Rep log ready for recovery. */
#define DB_REP_NEWMASTER (-30893)/*!< We have learned of a new master. */
#define DB_REP_PAGEDONE (-30892)/*!< This page was already done. */
#define DB_SURPRISE_KID (-30891)/*!< Child commit where parent
didn't know it was a parent. */
#define DB_SWAPBYTES (-30890)/*!< Database needs byte swapping. */
#define DB_TXN_CKP (-30889)/*!< Encountered ckp record in log. */
#define DB_VERIFY_FATAL (-30888)/*!< DB::verify cannot proceed. */
/*! Database handle. */
struct DB {
void *app_private; /*!< Application-private handle. */
/* DB PUBLIC HANDLE LIST BEGIN */
int associate(DB *, DB_TXN *, DB *, int (DB *, const DBT *, const DBT *, DBT *), u_int32_t); /*!< <b>WT_SESSION::open_cursor with a join cursor</b> */
int associate_foreign(DB *, DB *, int (DB *, const DBT *, DBT *, const DBT *, int *), u_int32_t); /*!< <b>WT_SESSION::open_cursor with a cursor type that maintains foreign keys</b> */
int close(DB *, u_int32_t); /*!< <b>WT_SESSION::close</b> */
int compact(DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *); /*!< <b>Not implemented (would be WT_SESSION::compact)</b> */
int cursor(DB *, DB_TXN *, DBC **, u_int32_t); /*!< <b>WT_SESSION::open_cursor</b> */
int del(DB *, DB_TXN *, DBT *, u_int32_t); /*!< <b>WT_CURSOR::del</b> */
void err(DB *, int, const char *, ...); /*!< <b>Not implemented.</b> */
void errx(DB *, const char *, ...); /*!< <b>Not implemented.</b> */
int exists(DB *, DB_TXN *, DBT *, u_int32_t); /*!< <b>WT_SESSION::open_cursor with <tt>uri == "table:"</tt>, then WT_CURSOR::search</b> */
int fd(DB *, int *); /*!< <b>WT_SESSION::open_cursor</b> */
int get(DB *, DB_TXN *, DBT *, DBT *, u_int32_t); /*!< <b>WT_SESSION::open_cursor</b> */
int get_alloc(DB *, void **(size_t, void **(void *, size_t), void *(void *))); /*!< <b>Not implemented (getter).</b> */
int get_append_recno(DB *, int *(DB *, DBT *, db_recno_t)); /*!< <b>Not implemented (getter).</b> */
int get_assoc_flags(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_bt_compare(DB *, int *(DB *, const DBT *, const DBT *)); /*!< <b>Not implemented (getter).</b> */
int get_bt_compress(DB *, int *(DB *, const DBT *, const DBT *, const DBT *, const DBT *, DBT *), int *(DB *, const DBT *, const DBT *, DBT *, DBT *, DBT *)); /*!< <b>Not implemented (getter).</b> */
int get_bt_minkey(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_bt_prefix(DB *, size_t *(DB *, const DBT *, const DBT *)); /*!< <b>Not implemented (getter).</b> */
int get_byteswapped(DB *, int *); /*!< <b>Not implemented (getter).</b> */
int get_cachesize(DB *, u_int32_t *, u_int32_t *, int *); /*!< <b>Not implemented (getter).</b> */
int get_create_dir(DB *, const char **); /*!< <b>Not implemented (getter).</b> */
int get_dbname(DB *, const char **, const char **); /*!< <b>Not implemented (getter).</b> */
int get_dup_compare(DB *, int *(DB *, const DBT *, const DBT *)); /*!< <b>Not implemented (getter).</b> */
int get_encrypt_flags(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
DB_ENV *get_env(DB *); /*!< <b>Not implemented (DB handle).</b> */
void get_errcall(DB *, void *(const DB_ENV *, const char *, const char *)); /*!< <b>Not implemented (getter).</b> */
void get_errfile(DB *, FILE **); /*!< <b>Not implemented (getter).</b> */
void get_errpfx(DB *, const char **); /*!< <b>Not implemented (getter).</b> */
int get_feedback(DB *, void *(DB *, int, int)); /*!< <b>Not implemented (getter).</b> */
int get_flags(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_h_compare(DB *, int *(DB *, const DBT *, const DBT *)); /*!< <b>Not implemented (getter).</b> */
int get_h_ffactor(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_h_hash(DB *, u_int32_t *(DB *, const void *, u_int32_t)); /*!< <b>Not implemented (getter).</b> */
int get_h_nelem(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_lorder(DB *, int *); /*!< <b>Not implemented (getter).</b> */
DB_MPOOLFILE *get_mpf(DB *); /*!< <b>Not implemented (getter).</b> */
void get_msgcall(DB *, void *(const DB_ENV *, const char *)); /*!< <b>Not implemented (getter).</b> */
void get_msgfile(DB *, FILE **); /*!< <b>Not implemented (getter).</b> */
int get_multiple(DB *); /*!< <b>Not implemented (getter).</b> */
int get_open_flags(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_pagesize(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_partition_callback(DB *, u_int32_t *, u_int32_t *(DB *, DBT *key)); /*!< <b>Not implemented (getter).</b> */
int get_partition_dirs(DB *, const char ***); /*!< <b>Not implemented (getter).</b> */
int get_partition_keys(DB *, u_int32_t *, DBT **); /*!< <b>Not implemented (getter).</b> */
int get_priority(DB *, DB_CACHE_PRIORITY *); /*!< <b>Not implemented (getter).</b> */
int get_q_extentsize(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_re_delim(DB *, int *); /*!< <b>Not implemented (getter).</b> */
int get_re_len(DB *, u_int32_t *); /*!< <b>Not implemented (getter).</b> */
int get_re_pad(DB *, int *); /*!< <b>Not implemented (getter).</b> */
int get_re_source(DB *, const char **); /*!< <b>Not implemented (getter).</b> */
int get_transactional(DB *); /*!< <b>Not implemented (getter).</b> */
int get_type(DB *, DBTYPE *); /*!< <b>Not implemented (getter).</b> */
int join(DB *, DBC **, DBC **, u_int32_t); /*!< <b>WT_SESSION::open_cursor</b> */
int key_range(DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t); /*!< <b>Not implemented?</b> */
int open(DB *, DB_TXN *, const char *, const char *, DBTYPE, u_int32_t, int); /*!< <b>WT_SESSION::open_cursor</b> */
int pget(DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t); /*!< <b>WT_CURSOR::insert or WT_CURSOR::update</b> */
int put(DB *, DB_TXN *, DBT *, DBT *, u_int32_t); /*!< <b>WT_CURSOR::insert or WT_CURSOR::update</b> */
int remove(DB *, const char *, const char *, u_int32_t); /*!< <b>WT_SESSION::drop_table</b> */
int rename(DB *, const char *, const char *, const char *, u_int32_t); /*!< <b>WT_SESSION::rename_table</b> */
int set_alloc(DB *, void *(size_t, void *(void *, size_t), void (void *))); /*!< <b>Not implemented (OS layer).</b> */
int set_append_recno(DB *, int (DB *, DBT *, db_recno_t)); /*!< <b>Not implemented (record numbers).</b> */
int set_bt_compare(DB *, int (DB *, const DBT *, const DBT *)); /*!< <b>WT_SCHEMA</b> */
int set_bt_compress(DB *, int (DB *, const DBT *, const DBT *, const DBT *, const DBT *, DBT *), int (DB *, const DBT *, const DBT *, DBT *, DBT *, DBT *)); /*!< <b>Special cursor type</b> */
int set_bt_minkey(DB *, u_int32_t); /*!< <b>Not implemented?</b> */
int set_bt_prefix(DB *, size_t (DB *, const DBT *, const DBT *)); /*!< <b>Not implemented?</b> */
int set_cachesize(DB *, u_int32_t, u_int32_t, int); /*!< <b>@p config parameter to ::wt_open</b> */
int set_create_dir(DB *, const char *); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_dup_compare(DB *, int (DB *, const DBT *, const DBT *)); /*!< <b>WT_SCHEMA::dup_cmp</b> */
int set_encrypt(DB *, const char *, u_int32_t); /*!< <b>Not implemented.</b> */
void set_errcall(DB *, void (const DB_ENV *, const char *, const char *)); /*!< <b>set WT_SESSION::handle_error</b> */
void set_errfile(DB *, FILE *); /*!< <b>Not implemented.</b> */
void set_errpfx(DB *, const char *); /*!< <b>Not implemented.</b> */
int set_feedback(DB *, void (DB *, int, int)); /*!< <b>Not implemented.</b> */
int set_flags(DB *, u_int32_t); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_h_compare(DB *, int (DB *, const DBT *, const DBT *)); /*!< <b>Not implemented (hash).</b> */
int set_h_ffactor(DB *, u_int32_t); /*!< <b>Not implemented (hash).</b> */
int set_h_hash(DB *, u_int32_t (DB *, const void *, u_int32_t)); /*!< <b>Not implemented (hash).</b> */
int set_h_nelem(DB *, u_int32_t); /*!< <b>Not implemented (hash).</b> */
int set_lorder(DB *, int); /*!< <b>Not implemented (fixed byte order).</b> */
void set_msgcall(DB *, void (const DB_ENV *, const char *)); /*!< <b>Not implemented.</b> */
void set_msgfile(DB *, FILE *); /*!< <b>Not implemented.</b> */
int set_pagesize(DB *, u_int32_t); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_paniccall(DB *, void (DB_ENV *, int)); /*!< <b>Not implemented?</b> */
int set_partition(DB *, u_int32_t, DBT *, u_int32_t (DB *, DBT *key)); /*!< <b>Special cursor type</b> */
int set_partition_dirs(DB *, const char **); /*!< <b>Special cursor type</b> */
int set_priority(DB *, DB_CACHE_PRIORITY); /*!< <b>@p config parameter to WT_SESSION::open_cursor</b> */
int set_q_extentsize(DB *, u_int32_t); /*!< <b>Not implemented (queue).</b> */
int set_re_delim(DB *, int); /*!< <b>Not implemented (recno).</b> */
int set_re_len(DB *, u_int32_t); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_re_pad(DB *, int); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_re_source(DB *, const char *); /*!< <b>Not implemented (recno).</b> */
int sort_multiple(DB *, DBT *, DBT *, u_int32_t); /*!< <b>Not implemented directly, could be via a bulk cursor.</b> */
int stat(DB *, DB_TXN *, void *, u_int32_t); /*!< <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:table:<tablename>"</b> */
int stat_print(DB *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int sync(DB *, u_int32_t); /*!< <b>Not implemented. Could be WT_SESSION::sync if needed later.</b> */
int truncate(DB *, DB_TXN *, u_int32_t *, u_int32_t); /*!< <b>WT_SESSION::truncate_table</b> */
int upgrade(DB *, const char *, u_int32_t); /*!< <b>Not in version 1.0, could be WT_SESSION::upgrade_table, but better to build into ::wt_open</b> */
int verify(DB *, const char *, const char *, FILE *, u_int32_t); /*!< <b>WT_SESSION::verify_table</b> */
/* DB PUBLIC HANDLE LIST END */
#define DB_AM_CHKSUM 0x00000001 /*!< Checksumming */
#define DB_AM_COMPENSATE 0x00000002 /*!< Created by compensating txn */
#define DB_AM_COMPRESS 0x00000004 /*!< Compressed BTree */
#define DB_AM_CREATED 0x00000008 /*!< Database was created upon open */
#define DB_AM_CREATED_MSTR 0x00000010 /*!< Encompassing file was created */
#define DB_AM_DBM_ERROR 0x00000020 /*!< Error in DBM/NDBM database */
#define DB_AM_DELIMITER 0x00000040 /*!< Variable length delimiter set */
#define DB_AM_DISCARD 0x00000080 /*!< Discard any cached pages */
#define DB_AM_DUP 0x00000100 /*!< DB_DUP */
#define DB_AM_DUPSORT 0x00000200 /*!< DB_DUPSORT */
#define DB_AM_ENCRYPT 0x00000400 /*!< Encryption */
#define DB_AM_FIXEDLEN 0x00000800 /*!< Fixed-length records */
#define DB_AM_INMEM 0x00001000 /*!< In-memory; no sync on close */
#define DB_AM_INORDER 0x00002000 /*!< DB_INORDER */
#define DB_AM_IN_RENAME 0x00004000 /*!< File is being renamed */
#define DB_AM_NOT_DURABLE 0x00008000 /*!< Do not log changes */
#define DB_AM_OPEN_CALLED 0x00010000 /*!< DB::open called */
#define DB_AM_PAD 0x00020000 /*!< Fixed-length record pad */
#define DB_AM_PGDEF 0x00040000 /*!< Page size was defaulted */
#define DB_AM_RDONLY 0x00080000 /*!< Database is readonly */
#define DB_AM_READ_UNCOMMITTED 0x00100000 /*!< Support degree 1 isolation */
#define DB_AM_RECNUM 0x00200000 /*!< DB_RECNUM */
#define DB_AM_RECOVER 0x00400000 /*!< DB opened by recovery routine */
#define DB_AM_RENUMBER 0x00800000 /*!< DB_RENUMBER */
#define DB_AM_REVSPLITOFF 0x01000000 /*!< DB_REVSPLITOFF */
#define DB_AM_SECONDARY 0x02000000 /*!< Database is a secondary index */
#define DB_AM_SNAPSHOT 0x04000000 /*!< DB_SNAPSHOT */
#define DB_AM_SUBDB 0x08000000 /*!< Subdatabases supported */
#define DB_AM_SWAP 0x10000000 /*!< Pages need to be byte-swapped */
#define DB_AM_TXN 0x20000000 /*!< Opened in a transaction */
#define DB_AM_VERIFYING 0x40000000 /*!< DB handle is in the verifier */
u_int32_t flags;
};
/*!
* Macros for bulk operations. These are only intended for the C API.
* For C++, use DbMultiple*Iterator or DbMultiple*Builder.
*
* Bulk operations store multiple entries into a single DBT structure. The
* following macros assist with creating and reading these Multiple DBTs.
*
* The basic layout for single data items is:
*
* -------------------------------------------------------------------------
* | data1 | ... | dataN | ..... |-1 | dNLen | dNOff | ... | d1Len | d1Off |
* -------------------------------------------------------------------------
*
* For the DB_MULTIPLE_KEY* macros, the items are in key/data pairs, so data1
* would be a key, and data2 its corresponding value (N is always even).
*
* For the DB_MULTIPLE_RECNO* macros, the record number is stored along with
* the len/off pair in the "header" section, and the list is zero terminated
* (since -1 is a valid record number):
*
* --------------------------------------------------------------------------
* | d1 |..| dN |..| 0 | dNLen | dNOff | recnoN |..| d1Len | d1Off | recno1 |
* --------------------------------------------------------------------------
*
* <b>Map to a special 'bulk' cursor type that maintains a buffer of a
* specified size and iterates through the buffer to return keys. May not be
* implemented in release 1.0. Similarly for bulk inserts: records would be
* buffered until either the buffer becomes full or the bulk cursor is
* closed.</b>
*/
#define DB_MULTIPLE_INIT(pointer, dbt) \
(pointer = (u_int8_t *)(dbt)->data + \
(dbt)->ulen - sizeof(u_int32_t))
#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
do { \
u_int32_t *__p = (u_int32_t *)(pointer); \
if __p == (u_int32_t-1) { \
retdata = NULL; \
pointer = NULL; \
break; \
} \
retdata = (u_int8_t *)(dbt)->data + *__p--; \
retdlen = *__p--; \
pointer = __p; \
if (retdlen == 0 && retdata == (u_int8_t *)(dbt)->data) \
retdata = NULL; \
} while (0)
#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
do { \
u_int32_t *__p = (u_int32_t *)(pointer); \
if __p == (u_int32_t-1) { \
retdata = NULL; \
retkey = NULL; \
pointer = NULL; \
break; \
} \
retkey = (u_int8_t *)(dbt)->data + *__p--; \
retklen = *__p--; \
retdata = (u_int8_t *)(dbt)->data + *__p--; \
retdlen = *__p--; \
pointer = __p; \
} while (0)
#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
do { \
u_int32_t *__p = (u_int32_t *)(pointer); \
if __p == (u_int32_t0) { \
recno = 0; \
retdata = NULL; \
pointer = NULL; \
break; \
} \
recno = *__p--; \
retdata = (u_int8_t *)(dbt)->data + *__p--; \
retdlen = *__p--; \
pointer = __p; \
} while (0)
#define DB_MULTIPLE_WRITE_INIT(pointer, dbt) \
do { \
(dbt)->flags |= DB_DBT_BULK; \
pointer = (u_int8_t *)(dbt)->data + \
(dbt)->ulen - sizeof(u_int32_t); \
*(u_int32_t *)(pointer) = (u_int32_t)-1; \
} while (0)
#define DB_MULTIPLE_RESERVE_NEXT(pointer, dbt, writedata, writedlen) \
do { \
u_int32_t *__p = (u_int32_t *)(pointer); \
u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\
(dbt)->ulen - sizeof(u_int32_t)) ? 0 : __p[1] + __p[2];\
if ((u_int8_t *)(dbt)->data + __off + (writedlen) > \
(u_int8_t *)(__p - 2)) \
writedata = NULL; \
else { \
writedata = (u_int8_t *)(dbt)->data + __off; \
__p[0] = __off; \
__p[-1] = (u_int32_t)(writedlen); \
__p[-2] = (u_int32_t)-1; \
pointer = __p - 2; \
} \
} while (0)
#define DB_MULTIPLE_WRITE_NEXT(pointer, dbt, writedata, writedlen) \
do { \
void *__destd; \
DB_MULTIPLE_RESERVE_NEXT((pointer), (dbt), \
__destd, (writedlen)); \
if (__destd == NULL) \
pointer = NULL; \
else \
memcpy(__destd, (writedata), (writedlen)); \
} while (0)
#define DB_MULTIPLE_KEY_RESERVE_NEXT(pointer, dbt, writekey, writeklen, writedata, writedlen) \
do { \
u_int32_t *__p = (u_int32_t *)(pointer); \
u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\
(dbt)->ulen - sizeof(u_int32_t)) ? 0 : __p[1] + __p[2];\
if ((u_int8_t *)(dbt)->data + __off + (writeklen) + \
(writedlen) > (u_int8_t *)(__p - 4)) { \
writekey = NULL; \
writedata = NULL; \
} else { \
writekey = (u_int8_t *)(dbt)->data + __off; \
__p[0] = __off; \
__p[-1] = (u_int32_t)(writeklen); \
__p -= 2; \
__off += (u_int32_t)(writeklen); \
writedata = (u_int8_t *)(dbt)->data + __off; \
__p[0] = __off; \
__p[-1] = (u_int32_t)(writedlen); \
__p[-2] = (u_int32_t)-1; \
pointer = __p - 2; \
} \
} while (0)
#define DB_MULTIPLE_KEY_WRITE_NEXT(pointer, dbt, writekey, writeklen, writedata, writedlen) \
do { \
void *__destk, *__destd; \
DB_MULTIPLE_KEY_RESERVE_NEXT((pointer), (dbt), \
__destk, (writeklen), __destd, (writedlen)); \
if (__destk == NULL) \
pointer = NULL; \
else { \
memcpy(__destk, (writekey), (writeklen)); \
if (__destd != NULL) \
memcpy(__destd, (writedata), (writedlen));\
} \
} while (0)
#define DB_MULTIPLE_RECNO_WRITE_INIT(pointer, dbt) \
do { \
(dbt)->flags |= DB_DBT_BULK; \
pointer = (u_int8_t *)(dbt)->data + \
(dbt)->ulen - sizeof(u_int32_t); \
*(u_int32_t *)(pointer) = 0; \
} while (0)
#define DB_MULTIPLE_RECNO_RESERVE_NEXT(pointer, dbt, recno, writedata, writedlen) \
do { \
u_int32_t *__p = (u_int32_t *)(pointer); \
u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\
(dbt)->ulen - sizeof(u_int32_t)) ? 0 : __p[1] + __p[2]; \
if (((u_int8_t *)(dbt)->data + __off) + (writedlen) > \
(u_int8_t *)(__p - 3)) \
writedata = NULL; \
else { \
writedata = (u_int8_t *)(dbt)->data + __off; \
__p[0] = (u_int32_t)(recno); \
__p[-1] = __off; \
__p[-2] = (u_int32_t)(writedlen); \
__p[-3] = 0; \
pointer = __p - 3; \
} \
} while (0)
#define DB_MULTIPLE_RECNO_WRITE_NEXT(pointer, dbt, recno, writedata, writedlen)\
do { \
void *__destd; \
DB_MULTIPLE_RECNO_RESERVE_NEXT((pointer), (dbt), \
(recno), __destd, (writedlen)); \
if (__destd == NULL) \
pointer = NULL; \
else if ((writedlen) != 0) \
memcpy(__destd, (writedata), (writedlen)); \
} while (0)
/*******************************************************
* Access method cursors.
*******************************************************/
/*! Cursor handle. */
struct DBC {
/* DBC PUBLIC HANDLE LIST BEGIN */
int close(DBC *); /*!< <b>WT_CURSOR::close</b> */
int cmp(DBC *, DBC *, int *, u_int32_t); /*!< <b>Not implemented.</b> */
int count(DBC *, db_recno_t *, u_int32_t); /*!< <b>Not implemented.</b> */
int del(DBC *, u_int32_t); /*!< <b>WT_CURSOR::del</b> */
int dup(DBC *, DBC **, u_int32_t); /*!< <b>WT_SESSION::dup_cursor</b> */
int get(DBC *, DBT *, DBT *, u_int32_t); /*!< <b>WT_CURSOR::get and WT_CURSOR::search</b> */
int get_priority(DBC *, DB_CACHE_PRIORITY *); /*!< <b>Not implemented.</b> */
int pget(DBC *, DBT *, DBT *, DBT *, u_int32_t); /*!< <b>WT_CURSOR::get with @p config parameter to WT_SESSION::open_cursor</b> */
int put(DBC *, DBT *, DBT *, u_int32_t); /*!< <b>WT_CURSOR::insert and WT_CURSOR::update</b> */
int set_priority(DBC *, DB_CACHE_PRIORITY); /*!< <b>@p config parameter to WT_SESSION::open_cursor</b> */
/* DBC PUBLIC HANDLE LIST END */
/*
* DBC_DONTLOCK and DBC_RECOVER are used during recovery and transaction
* abort. If a transaction is being aborted or recovered then DBC_RECOVER
* will be set and locking and logging will be disabled on this cursor. If
* we are performing a compensating transaction (e.g. free page processing)
* then DB_DONTLOCK will be set to inhibit locking, but logging will still
* be required. DB_DONTLOCK is also used if the whole database is locked.
*/
#define DBC_ACTIVE 0x00001 /*!< Cursor in use. */
#define DBC_BULK 0x00002 /*!< Bulk update cursor. */
#define DBC_DONTLOCK 0x00004 /*!< Don't lock on this cursor. */
#define DBC_DOWNREV 0x00008 /*!< Down rev replication master. */
#define DBC_DUPLICATE 0x00010 /*!< Create a duplicate cursor. */
#define DBC_ERROR 0x00020 /*!< Error in this request. */
#define DBC_FAMILY 0x00040 /*!< Part of a locker family. */
#define DBC_FROM_DB_GET 0x00080 /*!< Called from the DB::get() method. */
#define DBC_MULTIPLE 0x00100 /*!< Return Multiple data. */
#define DBC_MULTIPLE_KEY 0x00200 /*!< Return Multiple keys and data. */
#define DBC_OPD 0x00400 /*!< Cursor references off-page dups. */
#define DBC_OWN_LID 0x00800 /*!< Free lock id on destroy. */
#define DBC_PARTITIONED 0x01000 /*!< Cursor for a partitioned db. */
#define DBC_READ_COMMITTED 0x02000 /*!< Cursor has degree 2 isolation. */
#define DBC_READ_UNCOMMITTED 0x04000 /*!< Cursor has degree 1 isolation. */
#define DBC_RECOVER 0x08000 /*!< Recovery cursor; don't log/lock. */
#define DBC_RMW 0x10000 /*!< Acquire write flag in read op. */
#define DBC_TRANSIENT 0x20000 /*!< Cursor is transient. */
#define DBC_WAS_READ_COMMITTED 0x40000 /*!< Cursor holds a read commited lock. */
#define DBC_WRITECURSOR 0x80000 /*!< Cursor may be used to write (CDB). */
#define DBC_WRITER 0x100000 /*!< Cursor immediately writing (CDB). */
u_int32_t flags;
};
/*! Key range statistics structure */
struct DB_KEY_RANGE {
double less;
double equal;
double greater;
};
/*! Btree/Recno statistics structure.
*
* <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:table:<tablename>"</b>
*/
struct DB_BTREE_STAT {
u_int32_t bt_magic; /*!< Magic number. */
u_int32_t bt_version; /*!< Version number. */
u_int32_t bt_metaflags; /*!< Metadata flags. */
u_int32_t bt_nkeys; /*!< Number of unique keys. */
u_int32_t bt_ndata; /*!< Number of data items. */
u_int32_t bt_pagecnt; /*!< Page count. */
u_int32_t bt_pagesize; /*!< Page size. */
u_int32_t bt_minkey; /*!< Minkey value. */
u_int32_t bt_re_len; /*!< Fixed-length record length. */
u_int32_t bt_re_pad; /*!< Fixed-length record pad. */
u_int32_t bt_levels; /*!< Tree levels. */
u_int32_t bt_int_pg; /*!< Internal pages. */
u_int32_t bt_leaf_pg; /*!< Leaf pages. */
u_int32_t bt_dup_pg; /*!< Duplicate pages. */
u_int32_t bt_over_pg; /*!< Overflow pages. */
u_int32_t bt_empty_pg; /*!< Empty pages. */
u_int32_t bt_free; /*!< Pages on the free list. */
uintmax_t bt_int_pgfree; /*!< Bytes free in internal pages. */
uintmax_t bt_leaf_pgfree; /*!< Bytes free in leaf pages. */
uintmax_t bt_dup_pgfree; /*!< Bytes free in duplicate pages. */
uintmax_t bt_over_pgfree; /*!< Bytes free in overflow pages. */
};
/*! DB::compact configuration and status.
*
* <b>Not supported by the initial release of WiredTiger?</b>
*/
struct DB_COMPACT {
/*!< Input Parameters. */
u_int32_t compact_fillpercent; /*!< Desired fillfactor: 1-100 */
db_timeout_t compact_timeout; /*!< Lock timeout. */
u_int32_t compact_pages; /*!< Max pages to process. */
/*!< Output Stats. */
u_int32_t compact_empty_buckets; /*!< Empty hash buckets found. */
u_int32_t compact_pages_free; /*!< Number of pages freed. */
u_int32_t compact_pages_examine; /*!< Number of pages examine. */
u_int32_t compact_levels; /*!< Number of levels removed. */
u_int32_t compact_deadlock; /*!< Number of deadlocks. */
db_pgno_t compact_pages_truncated; /*!< Pages truncated to OS. */
/*!< Internal. */
db_pgno_t compact_truncate; /*!< Page number for truncation */
};
/*! Hash statistics structure.
*
* <b>No support for the hash access method in WiredTiger.</b>
*/
struct DB_HASH_STAT {
u_int32_t hash_magic; /*!< Magic number. */
u_int32_t hash_version; /*!< Version number. */
u_int32_t hash_metaflags; /*!< Metadata flags. */
u_int32_t hash_nkeys; /*!< Number of unique keys. */
u_int32_t hash_ndata; /*!< Number of data items. */
u_int32_t hash_pagecnt; /*!< Page count. */
u_int32_t hash_pagesize; /*!< Page size. */
u_int32_t hash_ffactor; /*!< Fill factor specified at create. */
u_int32_t hash_buckets; /*!< Number of hash buckets. */
u_int32_t hash_free; /*!< Pages on the free list. */
uintmax_t hash_bfree; /*!< Bytes free on bucket pages. */
u_int32_t hash_bigpages; /*!< Number of big key/data pages. */
uintmax_t hash_big_bfree; /*!< Bytes free on big item pages. */
u_int32_t hash_overflows; /*!< Number of overflow pages. */
uintmax_t hash_ovfl_free; /*!< Bytes free on ovfl pages. */
u_int32_t hash_dup; /*!< Number of dup pages. */
uintmax_t hash_dup_free; /*!< Bytes free on duplicate pages. */
};
/*! Queue statistics structure.
*
* <b>No support for the queue access method in WiredTiger.</b>
*/
struct DB_QUEUE_STAT {
u_int32_t qs_magic; /*!< Magic number. */
u_int32_t qs_version; /*!< Version number. */
u_int32_t qs_metaflags; /*!< Metadata flags. */
u_int32_t qs_nkeys; /*!< Number of unique keys. */
u_int32_t qs_ndata; /*!< Number of data items. */
u_int32_t qs_pagesize; /*!< Page size. */
u_int32_t qs_extentsize; /*!< Pages per extent. */
u_int32_t qs_pages; /*!< Data pages. */
u_int32_t qs_re_len; /*!< Fixed-length record length. */
u_int32_t qs_re_pad; /*!< Fixed-length record pad. */
u_int32_t qs_pgfree; /*!< Bytes free in data pages. */
u_int32_t qs_first_recno; /*!< First not deleted record. */
u_int32_t qs_cur_recno; /*!< Next available record number. */
};
/*******************************************************
* Environment.
*******************************************************/
/*!
* Database environment structure.
*
* This is the public database environment handle. The private environment
* handle is the ENV structure. The user owns this structure, the library
* owns the ENV structure. The reason there are two structures is because
* the user's configuration outlives any particular DB_ENV::open call, and
* separate structures allows us to easily discard internal information without
* discarding the user's configuration.
*
* Fields in the DB_ENV structure should normally be set only by application
* DB_ENV handle methods.
*/
struct DB_ENV {
#define DB_ENV_AUTO_COMMIT 0x00000001 /*!< DB_AUTO_COMMIT */
#define DB_ENV_CDB_ALLDB 0x00000002 /*!< CDB environment wide locking */
#define DB_ENV_FAILCHK 0x00000004 /*!< Failchk is running */
#define DB_ENV_DIRECT_DB 0x00000008 /*!< DB_DIRECT_DB set */
#define DB_ENV_DSYNC_DB 0x00000010 /*!< DB_DSYNC_DB set */
#define DB_ENV_DATABASE_LOCKING 0x00000020 /*!< Try database-level locking */
#define DB_ENV_MULTIVERSION 0x00000040 /*!< DB_MULTIVERSION set */
#define DB_ENV_NOLOCKING 0x00000080 /*!< DB_NOLOCKING set */
#define DB_ENV_NOMMAP 0x00000100 /*!< DB_NOMMAP set */
#define DB_ENV_NOPANIC 0x00000200 /*!< Okay if panic set */
#define DB_ENV_OVERWRITE 0x00000400 /*!< DB_OVERWRITE set */
#define DB_ENV_REGION_INIT 0x00000800 /*!< DB_REGION_INIT set */
#define DB_ENV_TIME_NOTGRANTED 0x00001000 /*!< DB_TIME_NOTGRANTED set */
#define DB_ENV_TXN_NOSYNC 0x00002000 /*!< DB_TXN_NOSYNC set */
#define DB_ENV_TXN_NOWAIT 0x00004000 /*!< DB_TXN_NOWAIT set */
#define DB_ENV_TXN_SNAPSHOT 0x00008000 /*!< DB_TXN_SNAPSHOT set */
#define DB_ENV_TXN_WRITE_NOSYNC 0x00010000 /*!< DB_TXN_WRITE_NOSYNC set */
#define DB_ENV_YIELDCPU 0x00020000 /*!< DB_YIELDCPU set */
#define DB_ENV_HOTBACKUP 0x00040000 /*!< DB_HOTBACKUP_IN_PROGRESS set */
#define DB_ENV_NOFLUSH 0x00080000 /*!< DB_NOFLUSH set */
u_int32_t flags;
/* DB_ENV PUBLIC HANDLE LIST BEGIN */
int add_data_dir(DB_ENV *, const char *); /*!< <b>@p "config:" cursor</b> */
int cdsgroup_begin(DB_ENV *, DB_TXN **); /*!< <b>Not implemented (CDS).</b> */
int close(DB_ENV *, u_int32_t);
int dbremove(DB_ENV *, DB_TXN *, const char *, const char *, u_int32_t);
int dbrename(DB_ENV *, DB_TXN *, const char *, const char *, const char *, u_int32_t);
void err(const DB_ENV *, int, const char *, ...); /*!< <b>Not implemented.</b> */
void errx(const DB_ENV *, const char *, ...); /*!< <b>Not implemented.</b> */
int failchk(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int fileid_reset(DB_ENV *, const char *, u_int32_t);
int get_alloc(DB_ENV *, void **(size_t, void **(void *, size_t), void *(void *))); /*!< <b>Not implemented (getter).</b> */
int get_app_dispatch(DB_ENV *, int *(DB_ENV *, DBT *, DB_LSN *, db_recops)); /*!< <b>Not implemented (getter).</b> */
int get_cache_max(DB_ENV *, u_int32_t *, u_int32_t *); /*!< <b>Not required.</b> */
int get_cachesize(DB_ENV *, u_int32_t *, u_int32_t *, int *); /*!< <b>@p "config:" cursor</b> */
int get_create_dir(DB_ENV *, const char **); /*!< <b>@p "config:" cursor</b> */
int get_data_dirs(DB_ENV *, const char ***); /*!< <b>@p "config:" cursor</b> */
int get_data_len(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_encrypt_flags(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
void get_errcall(DB_ENV *, void *(const DB_ENV *, const char *, const char *)); /*!< <b>Not implemented.</b> */
void get_errfile(DB_ENV *, FILE **); /*!< <b>Not implemented.</b> */
void get_errpfx(DB_ENV *, const char **); /*!< <b>Not implemented.</b> */
int get_flags(DB_ENV *, u_int32_t *); /*!< <b>@p "config:" cursor</b> */
int get_feedback(DB_ENV *, void *(DB_ENV *, int, int)); /*!< <b>Not implemented.</b> */
int get_home(DB_ENV *, const char **); /*!< <b>WT_CONNECTION::home</b> */
int get_intermediate_dir_mode(DB_ENV *, const char **); /*!< <b>Not implemented.</b> */
int get_isalive(DB_ENV *, int *(DB_ENV *, pid_t, db_threadid_t, u_int32_t)); /*!< <b>Not implemented.</b> */
int get_lg_bsize(DB_ENV *, u_int32_t *); /*!< <b>@p "config:" cursor</b> */
int get_lg_dir(DB_ENV *, const char **); /*!< <b>@p "config:" cursor</b> */
int get_lg_filemode(DB_ENV *, int *); /*!< <b>Not implemented.</b> */
int get_lg_max(DB_ENV *, u_int32_t *) /*!< <b>@p "config:" cursor</b> */;
int get_lg_regionmax(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_lk_conflicts(DB_ENV *, const u_int8_t **, int *); /*!< <b>Not implemented.</b> */
int get_lk_detect(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_lk_max_lockers(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_lk_max_locks(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_lk_max_objects(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_lk_partitions(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_lk_priority(DB_ENV *, u_int32_t, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_mp_max_openfd(DB_ENV *, int *); /*!< <b>Not implemented.</b> */
int get_mp_max_write(DB_ENV *, int *, db_timeout_t *); /*!< <b>@p "config:" cursor</b> */
int get_mp_mmapsize(DB_ENV *, size_t *); /*!< <b>Not implemented.</b> */
int get_mp_mtxcount(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_mp_pagesize(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int get_mp_tablesize(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
void get_msgcall(DB_ENV *, void *(const DB_ENV *, const char *)); /*!< <b>Not implemented.</b> */
void get_msgfile(DB_ENV *, FILE **); /*!< <b>Not implemented.</b> */
int get_open_flags(DB_ENV *, u_int32_t *); /*!< <b>@p "config:" cursor</b> */
int get_shm_key(DB_ENV *, long *); /*!< <b>Not implemented.</b> */
int get_thread_count(DB_ENV *, u_int32_t *); /*!< <b>@p "config:" cursor</b> */
int get_thread_id_fn(DB_ENV *, void *(DB_ENV *, pid_t *, db_threadid_t *)); /*!< <b>Not implemented.</b> */
int get_thread_id_string_fn(DB_ENV *, char **(DB_ENV *, pid_t, db_threadid_t, char *)); /*!< <b>Not implemented.</b> */
int get_timeout(DB_ENV *, db_timeout_t *, u_int32_t); /*!< <b>@p "config:" cursor</b> */
int get_tmp_dir(DB_ENV *, const char **); /*!< <b>@p "config:" cursor</b> */
int get_tx_max(DB_ENV *, u_int32_t *); /*!< <b>@p "config:" cursor</b> */
int get_tx_timestamp(DB_ENV *, time_t *); /*!< <b>@p "config:" cursor</b> */
int get_verbose(DB_ENV *, u_int32_t, int *); /*!< <b>@p "config:" cursor</b> */
int is_bigendian(void); /*!< <b>Not implemented.</b> */
int lock_detect(DB_ENV *, u_int32_t, u_int32_t, int *); /*!< <b>Not implemented.</b> */
int lock_get(DB_ENV *, u_int32_t, u_int32_t, DBT *, db_lockmode_t, DB_LOCK *); /*!< <b>Not implemented.</b> */
int lock_id(DB_ENV *, u_int32_t *); /*!< <b>Not implemented.</b> */
int lock_id_free(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int lock_put(DB_ENV *, DB_LOCK *); /*!< <b>Not implemented.</b> */
int lock_stat(DB_ENV *, DB_LOCK_STAT **, u_int32_t); /*!< <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b> */
int lock_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int lock_vec(DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **); /*!< <b>Not implemented.</b> */
int log_archive(DB_ENV *, char **[], u_int32_t); /*!< <b>WT_SESSION::checkpoint</b> */
int log_cursor(DB_ENV *, DB_LOGC **, u_int32_t); /*!< <b>Not implemented, but could be a special cursor type.</b> */
int log_file(DB_ENV *, const DB_LSN *, char *, size_t); /*!< <b>Not implemented.</b> */
int log_flush(DB_ENV *, const DB_LSN *); /*!< <b>WT_SESSION::checkpoint</b> */
int log_get_config(DB_ENV *, u_int32_t, int *); /*!< <b>@p "config:" cursor</b> */
int log_printf(DB_ENV *, DB_TXN *, const char *, ...); /*!< <b>Not implemented, but could be a log cursor insert.</b> */
int log_put(DB_ENV *, DB_LSN *, const DBT *, u_int32_t); /*!< <b>Not implemented, but could be a log cursor insert.</b> */
int log_put_record(DB_ENV *, DB *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, DB_LOG_RECSPEC *, ...); /*!< <b>Not implemented.</b> */
int log_read_record(DB_ENV *, DB **, void *, void *, DB_LOG_RECSPEC *, u_int32_t, void **); /*!< <b>Not implemented.</b> */
int log_set_config(DB_ENV *, u_int32_t, int); /*!< <b>@p config parameter to ::wt_open</b> */
int log_stat(DB_ENV *, DB_LOG_STAT **, u_int32_t); /*!< <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b> */
int log_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int log_verify(DB_ENV *, const DB_LOG_VERIFY_CONFIG *);
int lsn_reset(DB_ENV *, const char *, u_int32_t);
int memp_fcreate(DB_ENV *, DB_MPOOLFILE **, u_int32_t);
int memp_register(DB_ENV *, int, int (*(DB_ENV *, db_pgno_t,
void *, DBT *), int (DB_ENV *, db_pgno_t, void *, DBT *)));
int memp_stat(DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t); /*!< <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b> */
int memp_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int memp_sync(DB_ENV *, DB_LSN *); /*!< <b>WT_SESSION::checkpoint</b> */
int memp_trickle(DB_ENV *, int, int *);
int mutex_alloc(DB_ENV *, u_int32_t, db_mutex_t *);
int mutex_free(DB_ENV *, db_mutex_t);
int mutex_get_align(DB_ENV *, u_int32_t *);
int mutex_get_increment(DB_ENV *, u_int32_t *);
int mutex_get_max(DB_ENV *, u_int32_t *);
int mutex_get_tas_spins(DB_ENV *, u_int32_t *);
int mutex_lock(DB_ENV *, db_mutex_t);
int mutex_set_align(DB_ENV *, u_int32_t);
int mutex_set_increment(DB_ENV *, u_int32_t);
int mutex_set_max(DB_ENV *, u_int32_t);
int mutex_set_tas_spins(DB_ENV *, u_int32_t);
int mutex_stat(DB_ENV *, DB_MUTEX_STAT **, u_int32_t); /*!< <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b> */
int mutex_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int mutex_unlock(DB_ENV *, db_mutex_t);
int open(DB_ENV *, const char *, u_int32_t, int);
int remove(DB_ENV *, const char *, u_int32_t);
int rep_elect(DB_ENV *, u_int32_t, u_int32_t, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_flush(DB_ENV *); /*!< <b>Not implemented (replication)</b> */
int rep_get_clockskew(DB_ENV *, u_int32_t *, u_int32_t *); /*!< <b>Not implemented (replication)</b> */
int rep_get_config(DB_ENV *, u_int32_t, int *); /*!< <b>Not implemented (replication)</b> */
int rep_get_limit(DB_ENV *, u_int32_t *, u_int32_t *); /*!< <b>Not implemented (replication)</b> */
int rep_get_nsites(DB_ENV *, u_int32_t *); /*!< <b>Not implemented (replication)</b> */
int rep_get_priority(DB_ENV *, u_int32_t *); /*!< <b>Not implemented (replication)</b> */
int rep_get_request(DB_ENV *, u_int32_t *, u_int32_t *); /*!< <b>Not implemented (replication)</b> */
int rep_get_timeout(DB_ENV *, int, u_int32_t *); /*!< <b>Not implemented (replication)</b> */
int rep_process_message(DB_ENV *, DBT *, DBT *, int, DB_LSN *); /*!< <b>Not implemented (replication)</b> */
int rep_set_clockskew(DB_ENV *, u_int32_t, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_set_config(DB_ENV *, u_int32_t, int); /*!< <b>Not implemented (replication)</b> */
int rep_set_limit(DB_ENV *, u_int32_t, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_set_nsites(DB_ENV *, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_set_priority(DB_ENV *, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_set_request(DB_ENV *, u_int32_t, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_set_timeout(DB_ENV *, int, db_timeout_t); /*!< <b>Not implemented (replication)</b> */
int rep_set_transport(DB_ENV *, int, int (*(DB_ENV *, const DBT *, const DBT *, const DB_LSN *, int, u_int32_t))); /*!< <b>Not implemented (replication)</b> */
int rep_start(DB_ENV *, DBT *, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_stat(DB_ENV *, DB_REP_STAT **, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int rep_sync(DB_ENV *, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int repmgr_add_remote_site(DB_ENV *, const char *, u_int, int *, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int repmgr_get_ack_policy(DB_ENV *, int *); /*!< <b>Not implemented (replication)</b> */
int repmgr_get_local_site(DB_ENV *, const char **, u_int *); /*!< <b>Not implemented (replication)</b> */
int repmgr_set_ack_policy(DB_ENV *, int); /*!< <b>Not implemented (replication)</b> */
int repmgr_set_local_site(DB_ENV *, const char *, u_int, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int repmgr_site_list(DB_ENV *, u_int *, DB_REPMGR_SITE **); /*!< <b>Not implemented (replication)</b> */
int repmgr_start(DB_ENV *, int, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int repmgr_stat(DB_ENV *, DB_REPMGR_STAT **, u_int32_t); /*!< <b>Not implemented (replication)</b> */
int repmgr_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int set_alloc(DB_ENV *, void *(size_t, void *(void *, size_t), void (void *))); /*!< <b>Not implemented (OS interface)</b> */
int set_app_dispatch(DB_ENV *, int (DB_ENV *, DBT *, DB_LSN *, db_recops)); /*!< <b>Not implemented (application-level logging)</b> */
int set_cache_max(DB_ENV *, u_int32_t, u_int32_t); /*!< <b>Not required.</b> */
int set_cachesize(DB_ENV *, u_int32_t, u_int32_t, int); /*!< <b>@p config parameter to ::wt_open</b> */
int set_create_dir(DB_ENV *, const char *); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_data_dir(DB_ENV *, const char *); /*!< <b>@p config parameter to WT_SESSION::create_table</b> */
int set_data_len(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_encrypt(DB_ENV *, const char *, u_int32_t); /*!< <b>Not implemented (encryption).</b> */
void set_errcall(DB_ENV *, void (const DB_ENV *, const char *, const char *)); /*!< <b>set WT_SESSION::handle_error</b> */
void set_errfile(DB_ENV *, FILE *); /*!< <b>Not implemented.</b> */
void set_errpfx(DB_ENV *, const char *); /*!< <b>Not implemented.</b> */
int set_event_notify(DB_ENV *, void (DB_ENV *, u_int32_t, void *)); /*!< <b>Not implemented.</b> */
int set_feedback(DB_ENV *, void (DB_ENV *, int, int)); /*!< <b>Not implemented.</b> */
int set_flags(DB_ENV *, u_int32_t, int); /*!< <b>@p config parameter to ::wt_open</b> */
int set_intermediate_dir_mode(DB_ENV *, const char *); /*!< <b>Not implemented.</b> */
int set_isalive(DB_ENV *, int (DB_ENV *, pid_t, db_threadid_t, u_int32_t)); /*!< <b>Not implemented.</b> */
int set_lg_bsize(DB_ENV *, u_int32_t); /*!< <b>@p config parameter to ::wt_open</b> */
int set_lg_dir(DB_ENV *, const char *); /*!< <b>@p config parameter to ::wt_open</b> */
int set_lg_filemode(DB_ENV *, int); /*!< <b>@p config parameter to ::wt_open</b> */
int set_lg_max(DB_ENV *, u_int32_t); /*!< <b>@p config parameter to ::wt_open</b> */
int set_lg_regionmax(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_lk_conflicts(DB_ENV *, u_int8_t *, int); /*!< <b>Not implemented.</b> */
int set_lk_detect(DB_ENV *, u_int32_t); /*!< <b>If needed, @p config parameter to ::wt_open</b> */
int set_lk_max_lockers(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_lk_max_locks(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_lk_max_objects(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_lk_partitions(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_lk_priority(DB_ENV *, u_int32_t, u_int32_t); /*!< <b>@p config parameter to WT_SESSION::begin_transaction.</b> */
int set_mp_max_openfd(DB_ENV *, int); /*!< <b>Not implemented.</b> */
int set_mp_max_write(DB_ENV *, int, db_timeout_t); /*!< <b>Not implemented.</b> */
int set_mp_mmapsize(DB_ENV *, size_t); /*!< <b>Not implemented.</b> */
int set_mp_mtxcount(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_mp_pagesize(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
int set_mp_tablesize(DB_ENV *, u_int32_t); /*!< <b>Not implemented.</b> */
void set_msgcall(DB_ENV *, void (const DB_ENV *, const char *)); /*!< <b>Not implemented.</b> */
void set_msgfile(DB_ENV *, FILE *); /*!< <b>Not implemented.</b> */
int set_paniccall(DB_ENV *, void (DB_ENV *, int)); /*!< <b>Not implemented.</b> */
int set_shm_key(DB_ENV *, long); /*!< <b>Not implemented.</b> */
int set_thread_count(DB_ENV *, u_int32_t); /*!< <b>@p config parameter to ::wt_open</b> */
int set_thread_id(DB_ENV *, void (DB_ENV *, pid_t *, db_threadid_t *)); /*!< <b>Not implemented.</b> */
int set_thread_id_string(DB_ENV *, char *(DB_ENV *, pid_t, db_threadid_t, char *)); /*!< <b>Not implemented.</b> */
int set_timeout(DB_ENV *, db_timeout_t, u_int32_t); /*!< <b>@p config parameter to ::wt_open</b> */
int set_tmp_dir(DB_ENV *, const char *); /*!< <b>@p config parameter to ::wt_open</b> */
int set_tx_max(DB_ENV *, u_int32_t); /*!< <b>Not implemented: equivalent to thread count</b> */
int set_tx_timestamp(DB_ENV *, time_t *); /*!< <b>Not implemented.</b> */
int set_verbose(DB_ENV *, u_int32_t, int); /*!< <b>Not implemented.</b> */
int txn_applied(DB_ENV *, DB_TXN_TOKEN *, db_timeout_t, u_int32_t);
int stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
int txn_begin(DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t); /*!< <b>WT_SESSION::begin_transaction</b> */
int txn_checkpoint(DB_ENV *, u_int32_t, u_int32_t, u_int32_t); /*!< <b>WT_SESSION::checkpoint</b> */
int txn_recover(DB_ENV *, DB_PREPLIST *, u_int32_t, u_int32_t *, u_int32_t); /*!< <b>Not implemented</b> */
int txn_stat(DB_ENV *, DB_TXN_STAT **, u_int32_t); /*!< <b>Accessed via WT_SESSION::open_cursor with the URI @p "statistics:"</b> */
int txn_stat_print(DB_ENV *, u_int32_t); /*!< <b>Not implemented (easy with cursor interface)</b> */
/* DB_ENV PUBLIC HANDLE LIST END */
};
/*!
* Log verification configuration structure.
*
* <b>Not supported.</b>
*/
struct DB_LOG_VERIFY_CONFIG {
int continue_after_fail, verbose;
u_int32_t cachesize;
const char *temp_envhome;
const char *dbfile, *dbname;
DB_LSN start_lsn, end_lsn;
time_t start_time, end_time;
};
/* DO NOT EDIT: automatically built by dist/s_apiflags. */
#define DB_AGGRESSIVE 0x00000001
#define DB_ARCH_ABS 0x00000001
#define DB_ARCH_DATA 0x00000002
#define DB_ARCH_LOG 0x00000004
#define DB_ARCH_REMOVE 0x00000008
#define DB_AUTO_COMMIT 0x00000100
#define DB_CDB_ALLDB 0x00000040
#define DB_CHKSUM 0x00000008
#define DB_CKP_INTERNAL 0x00000002
#define DB_CREATE 0x00000001
#define DB_CURSOR_BULK 0x00000001
#define DB_CURSOR_TRANSIENT 0x00000004
#define DB_CXX_NO_EXCEPTIONS 0x00000002
#define DB_DATABASE_LOCKING 0x00000080
#define DB_DIRECT 0x00000010
#define DB_DIRECT_DB 0x00000200
#define DB_DSYNC_DB 0x00000400
#define DB_DUP 0x00000010
#define DB_DUPSORT 0x00000004
#define DB_DURABLE_UNKNOWN 0x00000020
#define DB_ENCRYPT 0x00000001
#define DB_ENCRYPT_AES 0x00000001
#define DB_EXCL 0x00000040
#define DB_EXTENT 0x00000040
#define DB_FAILCHK 0x00000020
#define DB_FAST_STAT 0x00000001
#define DB_FCNTL_LOCKING 0x00000800
#define DB_FLUSH 0x00000001
#define DB_FORCE 0x00000001
#define DB_FORCESYNC 0x00000001
#define DB_FOREIGN_ABORT 0x00000001
#define DB_FOREIGN_CASCADE 0x00000002
#define DB_FOREIGN_NULLIFY 0x00000004
#define DB_FREELIST_ONLY 0x00000001
#define DB_FREE_SPACE 0x00000002
#define DB_HOTBACKUP_IN_PROGRESS 0x00000800
#define DB_IGNORE_LEASE 0x00001000
#define DB_IMMUTABLE_KEY 0x00000002
#define DB_INIT_CDB 0x00000040
#define DB_INIT_LOCK 0x00000080
#define DB_INIT_LOG 0x00000100
#define DB_INIT_MPOOL 0x00000200
#define DB_INIT_REP 0x00000400
#define DB_INIT_TXN 0x00000800
#define DB_INORDER 0x00000020
#define DB_JOIN_NOSORT 0x00000001
#define DB_LOCKDOWN 0x00001000
#define DB_LOCK_CHECK 0x00000001
#define DB_LOCK_NOWAIT 0x00000002
#define DB_LOCK_RECORD 0x00000004
#define DB_LOCK_SET_TIMEOUT 0x00000008
#define DB_LOCK_SWITCH 0x00000010
#define DB_LOCK_UPGRADE 0x00000020
#define DB_LOG_AUTO_REMOVE 0x00000001
#define DB_LOG_CHKPNT 0x00000002
#define DB_LOG_COMMIT 0x00000004
#define DB_LOG_DIRECT 0x00000002
#define DB_LOG_DSYNC 0x00000004
#define DB_LOG_IN_MEMORY 0x00000008
#define DB_LOG_NOCOPY 0x00000008
#define DB_LOG_NOT_DURABLE 0x00000010
#define DB_LOG_NO_DATA 0x00000004
#define DB_LOG_VERIFY_CAF 0x00000001
#define DB_LOG_VERIFY_DBFILE 0x00000002
#define DB_LOG_VERIFY_ERR 0x00000004
#define DB_LOG_VERIFY_FORWARD 0x00000008
#define DB_LOG_VERIFY_INTERR 0x00000010
#define DB_LOG_VERIFY_PARTIAL 0x00000020
#define DB_LOG_VERIFY_VERBOSE 0x00000040
#define DB_LOG_VERIFY_WARNING 0x00000080
#define DB_LOG_WRNOSYNC 0x00000020
#define DB_LOG_ZERO 0x00000010
#define DB_MPOOL_CREATE 0x00000001
#define DB_MPOOL_DIRTY 0x00000002
#define DB_MPOOL_DISCARD 0x00000001
#define DB_MPOOL_EDIT 0x00000004
#define DB_MPOOL_FREE 0x00000008
#define DB_MPOOL_LAST 0x00000010
#define DB_MPOOL_NEW 0x00000020
#define DB_MPOOL_NOFILE 0x00000001
#define DB_MPOOL_NOLOCK 0x00000002
#define DB_MPOOL_TRY 0x00000040
#define DB_MPOOL_UNLINK 0x00000002
#define DB_MULTIPLE 0x00000800
#define DB_MULTIPLE_KEY 0x00004000
#define DB_MULTIVERSION 0x00000004
#define DB_MUTEX_ALLOCATED 0x00000001
#define DB_MUTEX_LOCKED 0x00000002
#define DB_MUTEX_LOGICAL_LOCK 0x00000004
#define DB_MUTEX_PROCESS_ONLY 0x00000008
#define DB_MUTEX_SELF_BLOCK 0x00000010
#define DB_MUTEX_SHARED 0x00000020
#define DB_NOERROR 0x00001000
#define DB_NOFLUSH 0x00001000
#define DB_NOLOCKING 0x00002000
#define DB_NOMMAP 0x00000008
#define DB_NOORDERCHK 0x00000002
#define DB_NOPANIC 0x00004000
#define DB_NOSYNC 0x00000001
#define DB_NO_AUTO_COMMIT 0x00002000
#define DB_NO_CHECKPOINT 0x00002000
#define DB_ODDFILESIZE 0x00000080
#define DB_ORDERCHKONLY 0x00000004
#define DB_OVERWRITE 0x00008000
#define DB_PANIC_ENVIRONMENT 0x00010000
#define DB_PRINTABLE 0x00000008
#define DB_PRIVATE 0x00004000
#define DB_PR_PAGE 0x00000010
#define DB_PR_RECOVERYTEST 0x00000020
#define DB_RDONLY 0x00000400
#define DB_RDWRMASTER 0x00004000
#define DB_READ_COMMITTED 0x00000400
#define DB_READ_UNCOMMITTED 0x00000200
#define DB_RECNUM 0x00000040
#define DB_RECOVER 0x00000002
#define DB_RECOVER_FATAL 0x00008000
#define DB_REGION_INIT 0x00020000
#define DB_REGISTER 0x00010000
#define DB_RENUMBER 0x00000080
#define DB_REPMGR_CONF_2SITE_STRICT 0x00000001
#define DB_REPMGR_CONF_ELECTIONS 0x00000002
#define DB_REPMGR_PEER 0x00000001
#define DB_REP_ANYWHERE 0x00000001
#define DB_REP_CLIENT 0x00000001
#define DB_REP_CONF_AUTOINIT 0x00000004
#define DB_REP_CONF_BULK 0x00000008
#define DB_REP_CONF_DELAYCLIENT 0x00000010
#define DB_REP_CONF_INMEM 0x00000020
#define DB_REP_CONF_LEASE 0x00000040
#define DB_REP_CONF_NOWAIT 0x00000080
#define DB_REP_ELECTION 0x00000004
#define DB_REP_MASTER 0x00000002
#define DB_REP_NOBUFFER 0x00000002
#define DB_REP_PERMANENT 0x00000004
#define DB_REP_REREQUEST 0x00000008
#define DB_REVSPLITOFF 0x00000100
#define DB_RMW 0x00002000
#define DB_SALVAGE 0x00000040
#define DB_SA_SKIPFIRSTKEY 0x00000080
#define DB_SA_UNKNOWNKEY 0x00000100
#define DB_SEQ_DEC 0x00000001
#define DB_SEQ_INC 0x00000002
#define DB_SEQ_RANGE_SET 0x00000004
#define DB_SEQ_WRAP 0x00000008
#define DB_SEQ_WRAPPED 0x00000010
#define DB_SET_LOCK_TIMEOUT 0x00000001
#define DB_SET_REG_TIMEOUT 0x00000004
#define DB_SET_TXN_NOW 0x00000008
#define DB_SET_TXN_TIMEOUT 0x00000002
#define DB_SHALLOW_DUP 0x00000100
#define DB_SNAPSHOT 0x00000200
#define DB_STAT_ALL 0x00000004
#define DB_STAT_CLEAR 0x00000001
#define DB_STAT_LOCK_CONF 0x00000008
#define DB_STAT_LOCK_LOCKERS 0x00000010
#define DB_STAT_LOCK_OBJECTS 0x00000020
#define DB_STAT_LOCK_PARAMS 0x00000040
#define DB_STAT_MEMP_HASH 0x00000008
#define DB_STAT_MEMP_NOERROR 0x00000010
#define DB_STAT_SUBSYSTEM 0x00000002
#define DB_ST_DUPOK 0x00000200
#define DB_ST_DUPSET 0x00000400
#define DB_ST_DUPSORT 0x00000800
#define DB_ST_IS_RECNO 0x00001000
#define DB_ST_OVFL_LEAF 0x00002000
#define DB_ST_RECNUM 0x00004000
#define DB_ST_RELEN 0x00008000
#define DB_ST_TOPLEVEL 0x00010000
#define DB_SYSTEM_MEM 0x00020000
#define DB_THREAD 0x00000010
#define DB_TIME_NOTGRANTED 0x00040000
#define DB_TRUNCATE 0x00008000
#define DB_TXN_BULK 0x00000008
#define DB_TXN_FAMILY 0x00000040
#define DB_TXN_NOSYNC 0x00000001
#define DB_TXN_NOT_DURABLE 0x00000002
#define DB_TXN_NOWAIT 0x00000002
#define DB_TXN_SNAPSHOT 0x00000010
#define DB_TXN_SYNC 0x00000004
#define DB_TXN_WAIT 0x00000080
#define DB_TXN_WRITE_NOSYNC 0x00000020
#define DB_UNREF 0x00020000
#define DB_UPGRADE 0x00000001
#define DB_USE_ENVIRON 0x00000004
#define DB_USE_ENVIRON_ROOT 0x00000008
#define DB_VERB_DEADLOCK 0x00000001
#define DB_VERB_FILEOPS 0x00000002
#define DB_VERB_FILEOPS_ALL 0x00000004
#define DB_VERB_RECOVERY 0x00000008
#define DB_VERB_REGISTER 0x00000010
#define DB_VERB_REPLICATION 0x00000020
#define DB_VERB_REPMGR_CONNFAIL 0x00000040
#define DB_VERB_REPMGR_MISC 0x00000080
#define DB_VERB_REP_ELECT 0x00000100
#define DB_VERB_REP_LEASE 0x00000200
#define DB_VERB_REP_MISC 0x00000400
#define DB_VERB_REP_MSGS 0x00000800
#define DB_VERB_REP_SYNC 0x00001000
#define DB_VERB_REP_SYSTEM 0x00002000
#define DB_VERB_REP_TEST 0x00004000
#define DB_VERB_WAITSFOR 0x00008000
#define DB_VERIFY 0x00000002
#define DB_VERIFY_PARTITION 0x00040000
#define DB_WRITECURSOR 0x00000008
#define DB_WRITELOCK 0x00000020
#define DB_WRITEOPEN 0x00010000
#define DB_YIELDCPU 0x00080000
/* DO NOT EDIT: automatically built by dist/s_include. */
int db_create(DB **, DB_ENV *, u_int32_t); /*!< <b>Indirectly, via WT_SESSION::create_table</b> */
char *db_strerror(int); /*!< <b>::wt_strerror</b> */
int db_env_set_func_close(int (int)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_dirfree(void (char **, int)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_dirlist(int (const char *, char ***, int *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_exists(int (const char *, int *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_free(void (void *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_fsync(int (int)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_ftruncate(int (int, off_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_ioinfo(int (const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_malloc(void *(size_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_file_map(int (DB_ENV *, char *, size_t, int, void **), int (DB_ENV *, void *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_region_map(int (DB_ENV *, char *, size_t, int *, void **), int (DB_ENV *, void *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_pread(ssize_t (int, void *, size_t, off_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_pwrite(ssize_t (int, const void *, size_t, off_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_open(int (const char *, int, ...)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_read(ssize_t (int, void *, size_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_realloc(void *(void *, size_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_rename(int (const char *, const char *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_seek(int (int, off_t, int)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_unlink(int (const char *)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_write(ssize_t (int, const void *, size_t)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_set_func_yield(int (u_long, u_long)); /*!< <b>Not implemented (OS interface).</b> */
int db_env_create(DB_ENV **, u_int32_t); /*!< <b>::wt_open</b> */
char *db_version(int *, int *, int *); /*!< <b>::wt_version</b> */
char *db_full_version(int *, int *, int *, int *, int *); /*!< <b>::wt_version</b> */
int log_compare(const DB_LSN *, const DB_LSN *); /*!< <b>Not implemented.</b> */
int db_sequence_create(DB_SEQUENCE **, DB *, u_int32_t); /*!< <b>WT_CURSOR::insert on a cursor with <tt>uri == "sequence:"</tt></b> */
/*! @} */
|