Annotation of 43BSD/ingres/doc/other/v6v61diff.nr, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.