|
|
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.