/* BEGIN mdbm_rm_rel_info.incl.pl1 -- jaw, 11/16/78 */ /* WARNING If the rm_rel_info structure is changed then the mrds_data_ item saved_res_version MUST be incremented to invalidate all existing saved resultants */ /* HISTORY: Modified by Jim Gray - - May 1980, to include model number of attributes, and varying attributes, so that partial view submodels will have the info needed to properly set up the varying length array headers in the tuple structure. Modified by Jim Gray - - 80-11-06, to rename r_perm = status_perm, s_perm = append_tuple_perm, d_perm = delete_tuple_perm, and make m_perm = unused_perm. 81-01-23 Jim Gray : added bit to indicate whether the last model view attribute was varying character or bit, since a partial view submodel will not have this information in the resultant, and it is needed for determining the new tuple length in mus_mod_ubtup, since with exact length storage of varying length attributes, each tuple can be a different length, which is can only be determined by examining the tuple itself. 81-01-29 Jim Gray : added curent tuple count, to provide for interface to allow temp rel population to be known, and to provide a more efficient means of finding an approx. current perm relation population. 81-05-28 Jim Gray : removed structure elements referring to blocked files, foreign keys, and ids procedures. Also set number of files per rel to a constant of 1. 81-05-28 Jim Gray : combined data from rm_file_info into this structure so that only one structure per relation is needed. 81-07-02 Jim Gray : added total_key and dup_key vfile statistics counts. Also added number of operations count since last statistics update, and a time since the statistics were last updated. 81-07-06 Jim Gray : added a per selection expression update identifier so that small relations could be updated on a per S.E. basis 82-04-21 R. Lackey : Added number_selected (ri_niocbs_init refer (rm_rel_info.niocbs)) fixed bin (35) to end of structure TR 12205 (Suggestion). 82-08-19 D. Woodka : Removed rm_rel_info.max_data_len field for the DMS conversion. 82-08-30 Davids: added the opening_id element and removed the iocb array and the niocb element for DMS conversion. Also removed the number_selected array (and ri_niocbs_init) since subsets are not going to be used. 82-09-20 Mike Kubicar : changed rm_rel_info.rel_id to bit (36) aligned so that it can be used with relation manager. Also added rm_rel_info.primary_key_index_id for relation manager. 82-09-22 Mike Kubicar : Removed the, now useless, fields var_attr_ptrs, nvar_atts, model_nvar_atts. 82-09-24 Davids: Removed current_key_count and current_dup_key_count since the duplicate key count for each secondary index is now being kept in the attr_info structure and key_count was only needed to help in calculating the average selectivity of each index which can now be gotten directly from each index's dup key count. Also removed the file_id element since it is no longer needed for anything. 82-09-27 Mike Kubicar : removed file_id_len for the same reason file_id was removed. 82-11-05 Mike Kubicar : added a pointer to an id_list structure to be used when retrieving tuples from this relation. 83-04-06 Davids: Added the scope_flags_ptr which points to the scope_flags structure for the relation. Note that this structure is part of the resultant NOT part of the db.control structure. The scopes are duplicated in the resultant to reduce contention for the db.control structure. Note also that the pointer will always point to a scope_flags structure even if no scopes have been set on the relation, the structure is allocated when the db is opened. */ /* DESCRIPTION: This structure is allocated in the area part of the structure in mdbm_rm_db_info.incl.pl1 as part of the resultant model created at open time for a database. There will be one of these rm_rel_info structures for each relation appearing in the database view (there may be less than the total in the database for a submodel openings). There will also be one for each temporary relation currently defined for that opening. The structure in mdbm_rm_rel_array.incl.pl1 contains pointers to all rm_rel_info structures allocated. It is used for searching for the appropriate structure. This array is pointed to by rm_db_info. There are two arrays, one for perm rels, one for temp rels. The rm_rel_info structure points to the mdbm_rm_attr_info.incl.pl1 structures, one for each attribute appearing in this view of the relation. Each of these in turn point to a mdbm_rm_domain_info.incl.pl1 structure for the domain info for each attr. Most of the other information here deals with specifics of the relation's logical definition, such as key and secondary index attribute inidicators, security permissions, and tuple physical construction details. */ dcl 1 rm_rel_info aligned based (rmri_ptr), /* relation information */ 2 name char (32), /* from submodel */ 2 model_name char (30), /* from model */ 2 rel_id bit (36) aligned, /* unique id. */ 2 retrieve bit (1) unal, /* operations allowed by this view */ 2 modify bit (1) unal, 2 delete bit (1) unal, 2 store bit (1) unal, 2 total_key bit (1) unal, /* on if view includes full primary key */ 2 indexed bit (1) unal, /* on if exists sec. index */ 2 mdbm_secured bit (1) unal, /* on if mdbm must check security */ 2 status_perm bit (1) unal, /* if user has status. perm. */ 2 append_tuple_perm bit (1) unal, /* if user has store perm. */ 2 delete_tuple_perm bit (1) unal, /* if user has del. perm. */ 2 unused_perm bit (1) unal, /* for future use. */ 2 last_model_attr_char_var bit (1) unal, /* on => last model varying attr is char */ 2 reserved bit (24) unal, /* for future use */ 2 num_attr fixed bin, /* total no. of attr. in rel. */ 2 model_num_attr fixed bin, /* total attrs in model relation */ 2 nkey_attr fixed bin, /* no. of key attr. */ 2 model_nkey_attr fixed bin, /* total number of keys in model */ 2 primary_key_index_id bit (36) aligned, /* Index id of relation's primary key */ 2 nsec_inds fixed bin, /* no. sec. indexes */ 2 max_key_len fixed bin (35), /* max length (chars) of primary key */ 2 current_tuple_population fixed bin (35), /* last known total tuple count for this relation */ 2 last_statistics_update_count fixed bin, /* number of operations's, since this rels stats were updated */ 2 last_statistics_update_time fixed bin (71),/* last time this rels stats were updated */ 2 last_statistics_update_s_e_ref_num fixed bin (35), /* last select expr ID that updated this rels stats */ 2 ready_mode fixed bin, /* 1 => r, 2 => mr, 3 => u, 4 => l, 5 => sr, 6 => su */ 2 file_type fixed bin, /* 1 => unblocked, 2 => blocked, 3 => temporary */ 2 tuple_id_len fixed bin, /* no. bits in local tuple id */ 2 opening_id bit (36) aligned, /* relation manager opening is */ 2 key_attr_ptrs (nkey_attr_init refer (rm_rel_info.nkey_attr)) ptr, /* ptrs to key attr. */ 2 attr_ptrs (natts_init refer (rm_rel_info.num_attr)) ptr, /* ptrs to all attr. */ 2 id_list_ptr ptr, /* Id list for retrieves from the relation */ 2 scope_flags_ptr ptr; /* pointer to the scope_flags structure for the rel */ dcl rmri_ptr ptr; dcl (nkey_attr_init, natts_init, nvar_atts_init) fixed bin; /* END mdbm_rm_rel_info.incl.pl1 */ */ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull and Bull HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by Bull HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved */