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

1.1       root        1: .ds HE 'Version 6.2 Changes'INGRES'Page %'
                      2: .so nmacs
                      3: Version 6.2 of INGRES is upward compatible
                      4: with version 6.1 of INGRES.
                      5: Version 6.2 supports protection statements,
                      6: integrity constraints, and views.
                      7: In addition, the system can be
                      8: configured to take advantage of separate instruction
                      9: and data spaces on 11/45's and 11/70's.
                     10: 
                     11: There are several new keywords.
                     12: The "-u" flag has a different format.
                     13: The protection, integrity, and view
                     14: subsystems depend on certain system relations
                     15: being present.
                     16: Existing databases can be optionally updated
                     17: by using the creatdb program with the "-e" flag.
                     18: See creatdb(unix) for details.
                     19: As part of the new protection system,
                     20: new databases are placed in .../data/base/
                     21: instead of .../datadir/.
                     22: Existing databases will still operate correctly.
                     23: The reason for this change is to get around
                     24: UNIX protection "features" related to removing files
                     25: and creating directories.
                     26: We found a number of bugs in the floating point to
                     27: character conversion routine.
                     28: It may happen that versions 6.1 and 6.2 give different
                     29: results in the last decimal place.
                     30: The 6.2 results are correctly rounded while the 6.1 are not
                     31: necessarily correct.
                     32: .sh 1
                     33: Monitor
                     34: .dn
                     35: Macros.
                     36: .PS
                     37: The monitor supports user defined macros.
                     38: It is possible to specify alternate keywords,
                     39: shorthands for commonly used phrases
                     40: and even program using the macro facilities.
                     41: In addition ingres can automatically define
                     42: special macros on a per user basis.
                     43: For example "range of p is parts" can be shortened by
                     44: the macro:
                     45: 
                     46: {define;rg $1 $2;range of $1 is $2}
                     47: 
                     48: to be
                     49: 
                     50: rg p parts
                     51: .sh
                     52: Tuple count.
                     53: .PS
                     54: It is now possible to write a macro
                     55: to find out the number of tuples
                     56: which satisfied the query last
                     57: successfully executed.
                     58: Thus updates do not have to be silent.
                     59: .sh
                     60: Trapping queries.
                     61: .PS
                     62: It is possible to save queries run from the monitor.
                     63: The macro "{querytrap}" can be defined to be the pathname
                     64: of a file where the queries are to be saved.
                     65: The date,
                     66: query,
                     67: and tuple count for each successfully parsed query
                     68: are appended to the end of the file whenever the
                     69: macro is defined.
                     70: .sh 1
                     71: Parser.
                     72: .dn
                     73: Retrieve unique.
                     74: .PS
                     75: Retrieves can now be specified to be "unique".
                     76: The result of the retrieve will be sorted from left
                     77: to right and duplicates removed.
                     78: For example:
                     79: 
                     80: .nf
                     81:        range of e is employee
                     82:        retrieve unique (e.manager)
                     83: .fi
                     84: 
                     85: .sh
                     86: Exponential notation.
                     87: .PS
                     88: Exponential notation is now accepted for
                     89: floating point numbers.
                     90: This feature was actually added in most later versions
                     91: of 6.1.
                     92: .sh
                     93: Expanded error checking.
                     94: .PS
                     95: The parser now detects many of the errors that
                     96: OVQP used to detect.
                     97: .sh 1
                     98: Qrymod.
                     99: .PS
                    100: Query modification is the name we give to the
                    101: collection of code which performs the
                    102: protection, integrity, and view functions.
                    103: This feature is new to version 6.2.
                    104: It requires an additional process making 6 processes
                    105: total for an 11/34 system and 5 total for an 11/70
                    106: system.
                    107: When creating a
                    108: database,
                    109: query modification can be optionally permitted.
                    110: An existing database can be changed to allow query modification.
                    111: If a database does not have query modification support,
                    112: then the qrymod process is not invoked.
                    113: .dn
                    114: Views.
                    115: .PS
                    116: The system now supports user defined views.
                    117: A view is a virtual relation.
                    118: The view relation is defined in terms
                    119: of existing relations.
                    120: Any accesses to the view are automatically
                    121: translated to accesses to the relations
                    122: on which it is defined.
                    123: For example:
                    124: 
                    125: .nf
                    126:        range of e is employee
                    127:        define view myemp(e.name, e.salary)
                    128:                where e.manager = 199
                    129: 
                    130:        range of m is myemp
                    131:        retrieve (m.name) where m.salary > 8000
                    132: 
                    133: .fi
                    134: is equivalent to the query:
                    135: 
                    136: .nf
                    137:        range of e is employee
                    138:        retrieve (e.name) where e.salary > 8000
                    139:                and e.manager = 199
                    140: .fi
                    141: 
                    142: .sh
                    143: Protection.
                    144: .PS
                    145: Relations created in a database supporting
                    146: query modification,
                    147: default to no access.
                    148: The DBA can use the
                    149: "permit" command to selectively
                    150: grant access to users.
                    151: For example:
                    152: 
                    153: .nf
                    154:        range of e is employee
                    155:        define permit retrieve on e (name)
                    156:                to sam at tty5
                    157:                from 8:00 to 17:00
                    158:                on mon to fri
                    159:                where e.salary < 15000
                    160: .fi
                    161: .sh
                    162: Integrity.
                    163: .PS
                    164: Updates to a relation can now be constrained to
                    165: satisfy certain conditions.
                    166: Updates which do not satisfy the conditions
                    167: are illegal and are ignored.
                    168: For example if employee names must have
                    169: at least a capital letter followed by a comma
                    170: followed by another capital letter then:
                    171: 
                    172: .nf
                    173:        define integrity on e is
                    174:                e.name = "[A-Z]*,[A-Z]*"
                    175: .fi
                    176: .sh 1
                    177: OVQP.
                    178: .dn
                    179: Expanded pattern matching
                    180: .PS
                    181: OVQP will now take advantage of storage
                    182: structures on pattern matching expressions.
                    183: Previous versions ignored the structure of a
                    184: relation on a pattern matching expression
                    185: and caused a full relation scan.
                    186: The current algorithm will analyze a
                    187: pattern matching constant and use the
                    188: storage structure of a relation if at all possible.
                    189: .sh
                    190: Concat definition changed.
                    191: .PS
                    192: Concat has been changed slightly to allow
                    193: concatenation of blanks.
                    194: It does this by guaranteeing that if the
                    195: value being concatenated is all blank,
                    196: then it is trimmed to be one blank.
                    197: For example:
                    198: 
                    199: .nf
                    200:        concat(x.firstname, concat(" ", x.lastname))
                    201: .fi
                    202: .sh
                    203: Special constants.
                    204: .PS
                    205: There are two constants which are recognized
                    206: by the system and processed specially.
                    207: "Dba" and "usercode" have the values
                    208: of the two character ingres id of the
                    209: database administrator for the current database,
                    210: and the current user.
                    211: Special constants will be expanded in future
                    212: versions.
                    213: For example:
                    214: 
                    215: .nf
                    216:        retrieve (whoami = usercode)
                    217: .fi
                    218: .sh 1
                    219: Decomp.
                    220: .dn
                    221: Ten variable queries.
                    222: .PS
                    223: Decomp can now handle queries of up to ten variables.
                    224: The previous limit was six.
                    225: You are still limited to ten variables defined at
                    226: any one time.
                    227: .sh
                    228: New processing algorithms.
                    229: .PS
                    230: Decomp has been made smarter.
                    231: It now is more intelligent about which variable
                    232: to substitute for and when to reformat a relation.
                    233: The result is that it makes better use of
                    234: existing storage structures whenever possible.
                    235: 
                    236: A new processing technique called "reduction" is now
                    237: considered for queries with three or more variables.
                    238: Details can be found in INGRES memo
                    239: ERL M78/17.
                    240: .sh
                    241: Aggregates correctly linked.
                    242: .PS
                    243: The final few bugs have been fixed in the
                    244: aggregation processor.
                    245: There were some cases when it did not
                    246: correctly process aggregate functions.
                    247: These have all been fixed so you can now
                    248: ask the query, "Which suppliers supply
                    249: all the parts supplied by some other supplier:"
                    250: 
                    251: .nf
                    252:        range of s is supply
                    253:        range of x is supply
                    254:        retrieve (x.snum) where
                    255:                count(s.pnum by s.snum,x.snum
                    256:                        where s.pnum = x.pnum
                    257:                        and   s.snum != x.snum)
                    258:                        =
                    259:                count(s.pnum by s.snum)
                    260: .fi
                    261: .sh 1
                    262: DBU.
                    263: .dn
                    264: Improved modify to isam, hash, or heapsort.
                    265: .PS
                    266: Modify has been greatly improved to speed
                    267: the time required to modify a relation to
                    268: any storage structure.
                    269: .sh
                    270: Sort in reverse.
                    271: .PS
                    272: Modify to heapsort allows you to specify ascending
                    273: or descending sort sequences.
                    274: Previously ascending was the only ordering allowed.
                    275: The sort order of
                    276: individual domains can be specified, for example:
                    277: 
                    278: .nf
                    279:        modify newemp to heapsort on age:descending,
                    280:                salary, name:descending
                    281: .fi
                    282: .sh
                    283: Help remembers you forever.
                    284: .PS
                    285: The help command will now remember who you are,
                    286: even after an interrupt signal.
                    287: Previously it suffered amnesia under certain conditions.
                    288: .sh
                    289: Copy expanded a little.
                    290: .PS
                    291: The copy command now allows arbitrary delimitors
                    292: on c0 and d0 formats.
                    293: Special, single character delimitors
                    294: can be specified by putting the format in quotes.
                    295: 
                    296:        copy parts(name="c0&") from "/mnt/me/myfile"
                    297: 
                    298: specifies that the variable length name is terminated
                    299: by an "&" character.
                    300: 
                    301: On a copy into a relation,
                    302: the c0 format will now allow arbitrarily long fields.
                    303: The previous limit was 1024 characters.
                    304: Now it treats only the first 1024 as significant
                    305: and ignores the remainder.
                    306: .sh
                    307: Query modification information.
                    308: .PS
                    309: Help has been expanded to
                    310: give information about views, protection, and
                    311: integrity.
                    312: For example:
                    313: 
                    314: .nf
                    315:        help integrity parts, supply
                    316: 
                    317: .fi
                    318: would give information about
                    319: the integrity contraints on the parts and supply
                    320: relations.
                    321: .sh
                    322: Destroying integrity and protection constraints.
                    323: .PS
                    324: Integrity and protection constraints can be
                    325: destroyed using a variation of the destroy command.
                    326: By asking for help on a relation,
                    327: you can get identification numbers for the
                    328: contraints.
                    329: The constraints can then be deleted by
                    330: 
                    331: .nf
                    332:        destroy integrity 3, 6, 8
                    333: 
                    334:        or
                    335: 
                    336:        destroy integrity all
                    337: .fi
                    338: .sh
                    339: Help all.
                    340: .PS
                    341: Help now accepts the key word "all".
                    342: Its meaning is to print information
                    343: about all user relations which the user can access.
                    344: 
                    345: .sh 1
                    346: Equel.
                    347: .dn
                    348: Tuple count
                    349: .PS
                    350: A global variable called "IItupcount" is set
                    351: after each query which gives the
                    352: number of tuples in the result.
                    353: For a retrieve,
                    354: this is the number of tuples retrieved,
                    355: and for an update it is the number of tuples
                    356: actually changed.
                    357: .sh
                    358: Equel expanded.
                    359: .PS
                    360: Equel allows nearly all "C" language constructs.
                    361: Specifically it now supports structures,
                    362: pointers, and local variables.
                    363: 
                    364: Quel statements can be parameterized so that
                    365: arbitrary equel statements can be generated
                    366: at run time.
                    367: 
                    368: Equel now accepts "## include" files.
                    369: .sh 1
                    370: Miscellaneous.
                    371: .dn
                    372: 11/70 system.
                    373: .PS
                    374: Ovqp and decomp can be combined on machines
                    375: which support separated instruction and data spaces.
                    376: In addition,
                    377: all the dbu's can be combined into one overlay
                    378: on i and d machines.
                    379: For details,
                    380: see the setup instructions.
                    381: .sh
                    382: Better page buffering.
                    383: .PS
                    384: On 11/70 systems,
                    385: INGRES uses a better buffering algorithm
                    386: which can substantially reduce disk references.
                    387: .sh
                    388: Improved "-u" flag for alter egos.
                    389: .PS
                    390: The "-u" flag now accepts the name of a user.
                    391: The database administrator can run ingres
                    392: as someone else on his/her database by
                    393: specifier the users login name,
                    394: for example "ingres -ubetty empdb"
                    395: would invoke ingres with the user "betty"s
                    396: privileges on the "empdb" database.
                    397: 
                    398: Alternately,
                    399: the INGRES usercode of the user can be specified by
                    400: stating "-u:xx" where "xx" is the INGRES usercode.
                    401: .sh
                    402: Datadir replaced by data/base.
                    403: .PS
                    404: New databases are now placed in the
                    405: directory .../data/base/.
                    406: In previous versions they were placed in .../datadir.
                    407: The reasons for this relate to the fact that creating a directory
                    408: requires read/write/search permission for everyone.
                    409: However,
                    410: such permission also allows any user to remove a file.
                    411: The two level directory allows the creation of directories
                    412: but protects against users accessing the database to remove files.
                    413: Existing databases in .../datadir/ will continue to work
                    414: but you should be aware that users can remove the files holding
                    415: the relations.
                    416: If desired,
                    417: existing databases can be copied from .../datadir/dbname/*
                    418: to .../data/base/dbname/*.
                    419: After being copied,
                    420: the old database must be destroyed.
                    421: You must be logged in as ingres to perform this feat.
                    422: .sh
                    423: Databases outside of .../data/base/.
                    424: .PS
                    425: Database can now exist outside of .../data/base/.
                    426: To do this,
                    427: the ingres superuser must create the directory
                    428: for the database and store the pathname of the
                    429: directory in a file under .../data/base/.
                    430: For details see the creatdb(unix) documentation.
                    431: .sh
                    432: Helpr.
                    433: .PS
                    434: There is a stand alone routine akin to
                    435: "printr" called "helpr".
                    436: Its function is the same as the help command.
                    437: .sh
                    438: Floating point conversion.
                    439: .PS
                    440: Version 6.1 did not correctly round floating point
                    441: numbers with negative exponents.
                    442: Thus it is likely that floating point values printed
                    443: using 6.2 will differ from 6.1.
                    444: .sh
                    445: Improved ISAM search.
                    446: .PS
                    447: The ISAM directory pages are now searched in a
                    448: more efficient manner.

unix.superglobalmegacorp.com

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