summaryrefslogtreecommitdiff
path: root/docs/html/xbc6.htm
blob: a7e17461e273b0dfb285cea5d845182b28d3afe4 (plain)
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
<!DOCTYPE HTML PUBLIC>
<HTML>
<TITLE>Xbase DBMS Chapter 6</TITLE>
<BODY BGCOLOR=#FFFFFF>
<H1><p align="center">Index Overview</p></H1>
<p align="center">Chapter Updated 11/27/222</p><hr>

The objective of this chapter is to provide information regarding 
the basic concepts of index processing for the Xbase library.<br><br>


<h2>Overview</h2>

The Xbase library is designed to support multiple index types simultaneously.
Dbase, Clipper and Foxbase each had their own index formats and ultimately the
goal is to provide support for all the legacy index file formats.

<br><br>
The 4.0.x rewrite includes the NDX and MDX formats.  Earlier versions of the
library included NTX and CDX formats which will be brought forward into the 
library rewrite at some point in the future.


<h2>Tags</h2>

Each index file contains one or more tags depending on the file type.  Each tag is a sort order 
and has characteristics:  Sort order (ASC or DESC), unique or not unique and some formats support filtering. 
Each open table (dbf file) has an "active tag" for database operations.


<h2>Index updates</h2>

The library automatically updates all tags in all open index files.


<br><br>
<h2>Index File Types</h2>

<table border=1>
<tr><th>File<br>Type</th><th>Source</th><th>Max Tags<br>Per File</th><th>Auto Opened</th><th>Sort Order</th><th>Unique Keys</th>
     <th>Reclaimed Nodes</th><th>Filter Support</th><th>Status</th></tr>
<tr>
  <td>NDX</td><td>dBase</td>
  <td><center>1</center></td>
  <td><center>Optional</center></td>
  <td>ASC only</td>
  <td><center>Y</center></td>
  <td><center>N</center></td>
  <td><center>N</center></td>
  <td><center>Available in 4.0.1</center></td>
</tr>
<tr>
  <td>MDX</td><td>dBase</td>
  <td><center>47</center></td>
  <td><center>Yes</center></td>
  <td><center>ASC or DESC</center></td>
  <td><center>Y</center></td>
  <td><center>Y</center></td>
  <td><center>Y</center></td>
  <td><center>Available in 4.0.1</center></td>
</tr>
<tr>
  <td>NTX</td>
  <td>Clipper</td>
  <td><center>1</center></td>
  <td><center>Optional</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
   <td><center>Pending upgrades</center></td>
</tr>
<tr>
  <td>CDX</td>
  <td>Fox Pro</td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>?</center></td>
  <td><center>Pending upgrades</center></td>
<tr>
<tr>
  <td>IDX</td><td>Fox Pro</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Undeveloped</td>
<tr>

</table>

<br><br>
<h2>Index/Tag Methods</h2>
<table border=1>
<tr><th>Method</th><th>Description</th></tr>

<tr>
  <td>xbDbf::CheckTagIntegrity</td><td>Checks a tag for missing or duplicate entries.  Available if XB_DEBUG_SUPPORT is on.</td>
</tr>
<tr>
  <td>xbDbf::CreateTag</td><td>Create a new tag.</td>
</tr>
<tr>
  <td>xbDbf::DeleteTag</td><td>Delete existing tag.</td>
</tr>
<tr>
  <td>xbDbf::Find</td><td>Find key value for the active tag.</td>
</tr>
<tr>
  <td>xbDbf::GetFirsKey</td><td>Retrieve the first key for the active tag.</td>
</tr>
<tr>
  <td>xbDbf::GetLastKey</td><td>Retrieve the last key for the active tag.</td>
</tr>
<tr>
  <td>xbDbf::GetNextKey</td><td>Retrieve the next key for the active tag.</td>
</tr>
<tr>
  <td>xbDbf::GetPrevKey</td><td>Retrieve the previous key for the active tag.</td>
</tr>
<tr>
  <td>xbDbf::GetCurTag</td><td>Retrieve the tag name key for the active tag.</td>
</tr>
<tr>
  <td>xbDbf::OpenIndex</td><td>Open an index file.  Only used for index files that aren't automatically opened.</td>
</tr>
<tr>
  <td>xbDbf::Reindex</td><td>Rebuild a tag.  Available if XB_DEBUG_SUPPORT is on.</td>
</tr>
<tr>
  <td>xbDbf::SetCurTag</td><td>Set current tag.</td>
</tr>
</table>

<br><br>
<hr>
<p><img src="xbase.jpg"><br><hr>
</BODY>
</HTML>