Annotation of 43BSD/ingres/doc/other/v61v62diff.nr, revision 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.