Annotation of 43BSD/ingres/doc/quel/modify.nr, revision 1.1.1.1

1.1       root        1: .th MODIFY QUEL 2/23/79
                      2: .sh NAME
                      3: modify \- convert the storage structure of a relation
                      4: .sh SYNOPSIS
                      5: .in +5
                      6: .ti -5
                      7: .bd modify 
                      8: relname 
                      9: .bd to 
                     10: storage-structure
                     11: [
                     12: .bd on 
                     13: key1 [ :
                     14: .it sortorder
                     15: ] [ { , key2 [ :
                     16: .it sortorder
                     17: ] } ] ] 
                     18: [
                     19: .bd where 
                     20: [
                     21: .bd "fillfactor =" 
                     22: .it n
                     23: ] [
                     24: .bd ", minpages =" 
                     25: .it n
                     26: ] [
                     27: .bd ", maxpages =" 
                     28: .it n
                     29: ] [
                     30: .bd ", lidn ="
                     31: .it lidname
                     32: ] [
                     33: .i0
                     34: .sh DESCRIPTION
                     35: .it Relname 
                     36: is modified to the specified storage structure.
                     37: Only the owner of a relation can modify that relation.
                     38: This command is used to increase performance when using large
                     39: or frequently referenced relations.
                     40: The storage structures are specified as follows:
                     41: .s3
                     42: .if n .in +10
                     43: .if t .in +1i
                     44: .de xx
                     45: .if n .ti -5
                     46: .if t .ti -0.5i
                     47: ..
                     48: .xx
                     49: isam \- indexed sequential storage structure
                     50: .xx
                     51: cisam \- compressed isam
                     52: .xx
                     53: hash \- random hah storage structure
                     54: .xx
                     55: chash \- compressed hash
                     56: .xx
                     57: heap \- unkeyed and unstructured
                     58: .xx
                     59: cheap \- compressed heap
                     60: .xx
                     61: heapsort \- heap with tuples sorted and duplicates removed
                     62: .xx
                     63: cheapsort \- compressed heapsort
                     64: .xx
                     65: truncated \- heap with all tuples deleted
                     66: .xx
                     67: orderedn \- ordered relation where n is the ordering dimension
                     68: .s3
                     69: .i0
                     70: The paper ``Creating and Maintaining a Database in \*(II''
                     71: (ERL Memo M77\-71)
                     72: discusses how to select storage structures
                     73: based on how the relation is used.
                     74: .s3
                     75: The current compression algorithm only suppresses trailing
                     76: blanks in character fields.
                     77: A more effective compression scheme may be possible,
                     78: but tradeoffs between that and a larger and slower
                     79: compression algorithm are not clear.
                     80: .s3
                     81: If the 
                     82: .it on
                     83: phrase is omitted when modifying to isam, cisam, hash or chash,
                     84: the relation will automatically be keyed on the first domain.
                     85: When modifying to heap or cheap the 
                     86: .it on
                     87: phrase must be omitted.
                     88: When modifying to heapsort or cheapsort the 
                     89: .it on
                     90: phrase is optional.
                     91: .s3
                     92: When a relation is being sorted (isam, cisam, heapsort and cheapsort),
                     93: the primary sort keys will be those specified in the 
                     94: .it on
                     95: phrase (if any).
                     96: The first key after the 
                     97: .it on
                     98: phrase will be the most significant sort key
                     99: and each successive key specified will be the next most significant
                    100: sort key.
                    101: Any domains not specified in the 
                    102: .it on
                    103: phrase will be used as least
                    104: significant sort keys in domain number sequence.
                    105: .s3
                    106: When a relation is modified to heapsort or cheapsort,
                    107: the 
                    108: .it sortorder
                    109: can be specified to be 
                    110: .bd ascending 
                    111: or
                    112: .bd descending.
                    113: The default is always 
                    114: .bd ascending.
                    115: Each key given in the
                    116: .it on
                    117: phrase can be optionally modified
                    118: to be:
                    119: .s1
                    120: .if n .ti +5
                    121: .if t .ti +0.5i
                    122: key:descending
                    123: .s1
                    124: which will cause that key to be sorted in descending order.
                    125: For completeness, 
                    126: .bd ascending
                    127: can be specified after the colon (`:'),
                    128: although this is unnecessary since
                    129: it is the default.
                    130: .bd Descending
                    131: can be abbreviated by a single `\c
                    132: .bd d\c
                    133: \&' and, correspondingly,
                    134: .bd ascending 
                    135: can be abreviated by a single `\c
                    136: .bd a\c
                    137: \&'.
                    138: .s3
                    139: When modifying to 
                    140: .it orderedn,
                    141: up to n ordering keys can be specified using the
                    142: .it on
                    143: clause.
                    144: Ordering keys are used to specify the ordering of tuples in the new relation.
                    145: Changes on key field values indicate the incrementing of a
                    146: lid value for the lid corresponding to the key change.
                    147: If no ordering keys are specified, only the lid corresponding
                    148: to the lowest lid level is incremented by one for every new tuple.
                    149: In this case,the order of the tuples is determined by their sort order on file.
                    150: However, note that ordering does not destroy any current storage
                    151: structures on a relation (except secondary indices).
                    152: .s3
                    153: .it Lidn
                    154: can only be specified if modifying to 
                    155: .it orderedn.
                    156: Default values are
                    157: .bd lid1
                    158: ,
                    159: .bd lid2
                    160: , and
                    161: .bd lid3.
                    162: .s3
                    163: .it Fillfactor 
                    164: specifies the percentage
                    165: (from 1 to 100)
                    166: of each primary data page that should be filled
                    167: with tuples, under ideal conditions.
                    168: .it Fillfactor
                    169: may be used with isam, cisam, hash and chash.
                    170: Care should be taken when using large fillfactors since a non-uniform
                    171: distribution of key values could cause overflow pages to be created,
                    172: and thus degrade access performance for the relation.
                    173: .s3
                    174: .it Minpages 
                    175: specifies the minimum number of primary pages a hash or chash
                    176: relation must have.
                    177: .it Maxpages
                    178: specifies the maximum number of primary pages
                    179: a hash or chash relation may have.
                    180: .it Minpages 
                    181: and 
                    182: .it maxpages 
                    183: must be at least one.
                    184: If both 
                    185: .bd minpages 
                    186: and 
                    187: .bd maxpages 
                    188: are specified in a modify,
                    189: .bd minpages 
                    190: cannot exceed 
                    191: .bd maxpages.
                    192: .sp
                    193: Default values for 
                    194: .bd fillfactor\c
                    195: , 
                    196: .bd minpages\c
                    197: , and 
                    198: .bd maxpages 
                    199: are as follows:
                    200: .if n .ta 5 12 25 35
                    201: .if t .ta 0.5i 1i 3i 4.5i
                    202: .nf
                    203: .ul
                    204: .s1
                    205:                FILLFACTOR      MINPAGES        MAXPAGES
                    206: .s2
                    207:        hash    50      10      no limit
                    208:        chash   75      1       no limit
                    209:        isam    80      NA      NA
                    210:        cisam   100     NA      NA
                    211: .fi
                    212: .dt
                    213: .sh EXAMPLES
                    214: .nf
                    215: /* modify the emp relation to an indexed
                    216:         sequential storage structure with
                    217:         "name" as the keyed domain */
                    218: .s1
                    219: modify emp to isam on name
                    220: .s1
                    221: /* if "name" is the first domain of the emp relation,
                    222:         the same result can be achieved by */
                    223: .s1
                    224: modify emp to isam
                    225: .s1
                    226: /* do the same modify but request a 60% occupancy
                    227:         on all primary pages */
                    228: .s1
                    229: modify emp to isam on name where fillfactor = 60
                    230: 
                    231: /* modify the supply relation to compressed hash
                    232:         storage structure with "num" and "quan"
                    233:         as keyed domains */
                    234: .s1
                    235: modify supply to chash on num, quan
                    236: .s1
                    237: /* now the same modify but also request 75% occupancy
                    238:         on all primary, a minimum of 7 primary pages
                    239:         pages and a maximum of 43 primary pages */
                    240: .s1
                    241: modify supply to chash on num, quan
                    242:         where fillfactor = 75, minpages = 7,
                    243:         maxpages = 43
                    244: .s1
                    245: /* again the same modify but only request a minimum
                    246:         of 16 primary pages */
                    247: .s1
                    248: modify supply to chash on num, quan
                    249:         where minpages = 16
                    250: .s1
                    251: /* modify parts to a heap storage structure */
                    252: .s1
                    253: modify parts to heap
                    254: .s1
                    255: /* modify parts to a heap again, but have tuples
                    256:         sorted on "pnum" domain and have any duplicate
                    257:         tuples removed */
                    258: .s1
                    259: modify parts to heapsort on pnum
                    260: .s1
                    261: /* modify employee in ascending order by manager,
                    262:         descending order by salary and have any
                    263:         duplicate tuples removed */
                    264: .s1
                    265: modify employee to heapsort on manager, salary:descending
                    266: .s1
                    267: /* ordered relation */
                    268: .s1
                    269: modify text to ordered1 on lid where lid1 = lidfield
                    270: .fi
                    271: .sh "SEE ALSO"
                    272: sysmod(unix)
                    273: ordered(quel)

unix.superglobalmegacorp.com

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