|
|
1.1 root 1: .ds HE 'Version 6.1 Changes'INGRES'Page %'
2: .so nmacs
3: Version 6.1 of INGRES is upward compatable with version 6.0
4: of INGRES and contains a number of new features.
5: The most important of these are improved aggregation
6: capabilities,
7: macros in the monitor,
8: full concurrency control,
9: and overall speed
10: improvement.
11:
12: The only incompatability with version 6.0 is that
13: secondary indices are stored differently internally
14: and the default for "retrieve into" is now "cheapsort".
15: .sh 1
16: Incompatibilities.
17: .dn
18: Secondary Indices.
19: .PS
20: We have learned that the way in which we formed
21: internal tuple identifiers was not
22: optimal for secondary indices.
23: Consequently we have changed the format of
24: tuple identifiers (tid).
25:
26: Secondary indices must either be
27: destroyed and recreated or else use
28: the program "indconv" to convert the secondary indices.
29: Refer to the accompaning document "indconv(unix)"
30: for details.
31: .sh
32: Retrieve into defaults to cheapsort.
33: .PS
34: On a "retrieve into" the result relation
35: used to be modified to "isam".
36: The default has been changed to be cheapsort.
37: The primary advantage of this is that you
38: don't have the extra processing time needed
39: for the modify to isam.
40:
41: As in the past the default can be overridden
42: at the time INGRES is invoked by using
43: the "-r" flag.
44: Refer to ingres(unix) for details.
45: .sh 1
46: Monitor
47: .dn
48: Saving and restoring queries.
49: .PS
50: Three new commands have
51: been added to help in saving and
52: restoring queries.
53: They are:
54: .nf
55:
56: \\chdir directory (change directory)
57: \\include file (switch input to file)
58: \\write file (write query buffer to file)
59:
60: .fi
61: .sh
62: Alternate Monitor Commands.
63: .PS
64: The Monitor allows you to spell out commands.
65: Thus "\\go" is the same as "\\g".
66: Refer to monitor(quel) for a complete list.
67: .sh 1
68: Parser.
69: .dn
70: Special conversion functions.
71: .PS
72: There are five conversion
73: functions: int1, int2, int4, float4, float8.
74: They allow you to specify the type of
75: any arithmetic expression.
76: For example:
77:
78: .nf
79: range of e is employee
80: retrieve (total = sum(int4(e.salary)))
81:
82: .fi
83: This will take each e.salary and convert it
84: to an i4 before summing.
85: The conversion functions can also be used
86: to convert character values to
87: numeric values.
88: .sh
89: Improved range table.
90: .PS
91: The range table is now completely
92: organized according to least recently
93: used.
94: This means that when you declare more
95: than ten tuple variables, the variable
96: least recently referenced is
97: discarded.
98: .sh
99: New Aggregates.
100: Aggregate facilities have been expanded to include
101: countu, sumu, and avgu.
102: These aggregate only unique values.
103: INGRES removes all duplicates before
104: performing the specified aggregate.
105: For example if the query asks for
106:
107: avgu(p.qoh * p.weight)
108:
109: Then the average will be performed only
110: on the unique values of the product of
111: p.qoh * p.weight.
112: .sh
113: Bugs involving "NOT" and "OR" fixed.
114: .PS
115: There were several bugs involving
116: queries with NOT and OR in the
117: qualification.
118: Those bugs have all been fixed.
119: .sh
120: Default for INDEX on "-n" flag.
121: .PS
122: When invoking INGRES,
123: the -n flag can be used to specify the default
124: structure for relations created by the "index"
125: command.
126: .sh
127: ASCII command accepts character values.
128: .PS
129: ASCII has been changed to accept and ignore
130: character values.
131: This can be useful for equel programs since
132: ascii(any domain) can always be retrieved
133: into a variable of type character.
134: .sh 1
135: OVQP
136: .dn
137: Correct handling of I1 and F4.
138: .PS
139: In the past, a retrieve to the terminal
140: of an i1 or a f4 domain was handled as if
141: the domain were an i2 or f8 respectively.
142: This mattered only when using the -i1 or -f4
143: flags when invoking INGRES.
144: .sh 1
145: DECOMP
146: .dn
147: Aggregate functions no longer produce a cross-product.
148: .PS
149: In the past,
150: if more than one aggregate function was specified on
151: a variable,
152: the system incorrectly produced a cross product
153: on the resulting aggregates.
154: This bug has been fixed and matching by-lists on
155: aggregate functions are always linked correctly
156: to the rest of the query.
157: .sh
158: Multi-variable and nested aggregates.
159: .PS
160: You can now have aggregates which involve
161: more than one relations.
162: For example, a lot of people have wanted
163: to know how many suppliers supply the
164: central processor:
165:
166: .nf
167:
168: range of p is parts
169: range of s is supply
170: retrieve (goodnews = count(s.snum where s.pnum = p.pnum
171: and p.pname = "central processor"))
172: .fi
173:
174: .sh
175: Processing of aggregates in parallel.
176: .PS
177: Whenever possible,
178: two or more aggregates
179: are processed
180: on the same pass through the relation.
181: This means that in the query:
182:
183: .nf
184: range of p is parts
185: retrieve (
186: p.color,
187: cnt = count(p.pname by p.color),
188: wt = sum(p.weight by p.color)
189: )
190:
191: .fi
192: the sum and count would be computed
193: with only one pass over parts.
194: .sh
195: New Definition of Aggregate Functions.
196: .PS
197: In previous versions of INGRES,
198: if a "by-domain" value was excluded
199: by the qualification,
200: the aggregate value of the "by-domain"
201: was undefined.
202: Starting with version 6.1 an
203: undefined value always defaults to zero.
204:
205: Simple aggregates always defaulted to zero
206: if undefined.
207: Aggregate functions are now consistant with
208: that definition.
209:
210: For example:
211:
212: .nf
213: range of e is employee
214: retrieve (e.manager, people =
215: count(e.name by e.manager where
216: e.startdate < 1970))
217: .fi
218:
219: If there is a manager with no employee
220: who started before 1970 then the count will
221: be zero.
222: Previously no value would have appeared
223: for the manager.
224: .sh 1
225: DBU
226: .dn
227: Destroy, Help, and Print can take lists of relations
228: .PS
229: Destroy, help, and print can now take a comma
230: separated list of agruments.
231: .sh
232: System relations cannot be "modified"
233: .PS
234: You can no longer use the modify
235: command on system relations.
236: A separate stand-alone program
237: called "sysmod" must be used
238: to modify the system relations to
239: their optimal structure.
240: .sh
241: Sorting a relation stored as a heap.
242: .PS
243: A heap can be sorted and duplicates
244: removed using the modify command:
245: .br
246:
247: modify relname to heapsort on domain1, domain2 ...
248: .br
249:
250: The relation is sorted on the specified domains
251: and left as a heap.
252: This is faster than modifying the relation to isam.
253:
254: This is useful when it is
255: desired to have the final output sorted
256: in some particular order.
257: .sh
258: Specifing the occupancy of an isam or hash relation
259: .PS
260: The modify command now accepts user information
261: pertaining to how much room to leave when
262: modifing a relation to isam or hash.
263: The new specifications are:
264:
265: fillfactor (how much empty space to leave on each page.
266: Defaults are hash:50%, chash:75%, isam:80%, cisam:100%)
267: .br
268: minpages (hash only. Minimum number of primary pages desired.
269: Default is ten pages.)
270: .br
271: maxpages (hash only. Maximum number of primary pages desired.
272: Default is 2**24.)
273:
274: For example:
275:
276: modify parts to hash on pnum where fillfactor = 100
277:
278: modify emp to hash on eno where fillfactor = 50
279: and minpages = 300
280:
281: .sh
282: COPY allows delimitor specifications.
283: .PS
284: The c0 and d0 options on copy have been extended to
285: allow individual delimitor specification.
286: The general format is dom = c0delim.
287:
288: For example on a copy "from",
289: pname = c0nl will accept only a nl as a delimitor.
290:
291: On a copy "into" the construction pname = c0nl is
292: functionally identical to asking for
293: pname = c0, nl = d1.
294: .sh 1
295: Miscellaneous.
296: .PS
297: .dn
298: Concurrency Control.
299: .PS
300: INGRES now has full concurrency control.
301: By default all new data bases will have
302: concurrency control turned on.
303: Existing data bases can be easily upgraded
304: to have concurrency control.
305: Refer to creatdb(unix) for details.
306: .sh
307: Pathname can be changed without recompilation.
308: .PS
309: The INGRES pathname "/mnt/ingres" is no
310: longer a defined constant.
311: Instead INGRES scans the /etc/passwd file
312: and uses the initial working
313: directory of the user "ingres".
314: .sh
315: Restore Expanded.
316: .PS
317: Restore has been improved and expanded to
318: provide recovery from modify, index,
319: create, and destroy commands in addition
320: to append, delete, and replace commands.
321: .sh
322: Sysmod.
323: .PS
324: Since the structure of the system relations
325: is extremely important,
326: we now provide a stand-alone program which
327: modifies the relation, attribute, and indexes
328: relations to their optimal structure.
329:
330: You are no longer allowed to do this
331: using the modify command.
332: This both prevents the relations from being
333: accidentally modified to a useless structure,
334: and allows INGRES to make certain assumptions
335: which improves performance everywhere.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.