COMPILATION LISTING OF SEGMENT mu_store Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-05-05_1829.93_Fri_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 mu_store: store: proc; /* This entry point is not used */ 19 return; 20 21 /* 22* BEGIN_DESCRIPTION 23* 24* This is the MDBM utility routine which will store a tuple into the database, 25* given information on the relation into which the tuple is to be stored and 26* a list of user-supplied values. 27* 28* END_DESCRIPTION 29* 30* 31* 32**/ 33 34 /* HISTORY: 35* 36* Initially written by JA Weeldreyer -- June, 1978. 37* 6-sep-79 Davids: Modified to accommodate a change to the calling sequence of mu_encd_key 38* 16-oct-79 Davids: Modified to correctly calculate the lengths of varying strings 39* 28-nov-79 Davids: Removed calculation of length (in bits) of varying strings 40* so that length word will consistantly contain the number of bits or characters 41* (depending on data type) throught out MRDS (i hope) 42* Modified by Jim Gray - - Feb. 1980, to make use of extensible non-freeing area. 43* 8-may-80 Davids: modified assignments of tuple_num_atts and 44* tuple_nvar_atts to take values from rm_rel_info.model_num_attr 45* and model_nvar_atts rather than rm_rel_info.num_attr and 46* nvar_atts. This was to fix a problem with submodels were the 47* submodel view did not contain a varying string attribute and the 48* model did. 49* Modified by Jim Gray - - June 1980, to add first_time_flag to direct entry, 50* so that definition of large temp rels could reuse space already allocated. 51* 52* 80-11-04 Davids: removed the code checking for update access on 53* each attribute in the relation since the current definition of 54* store requires only append (s_perm = "1"b) access on the 55* relation. also removed the include file reference to 56* mdbm_rm_db_info.incl.pl1 and declared rdbi_ptr (which was the 57* only thing used from that include file) as an automatic pointer. 58* 59* 80-11-07 Davids: Changed reference to rm_rel_info.s_perm to 60* rm_rel_info.append_tuple_perm to correspond to include file 61* changes. 62* 63* 80-11-21 Davids: For the secured database case, added a check to 64* be sure that r_perm is set for all attributes of the primary key. 65* This was needed to prevent a situation where tuples are stored 66* until the dup_key error is returned - at which time database 67* security has been broken. 68* 69* 81-03-27 Jim Gray : added dbcb_ptr parameter in place of dbi parameter 70* for each entry, as part of getting rid of mus_ptr_man module. 71* Combined mu_sec_store into this module. 72* 73* 81-04-30 Jim Gray : commented out calls to mus_add_btup 74* and mus_add_lks 75* 76* 81-05-01 Jim Gray : removed calls to mu_hash_key and mu_build_parl 77* by commenting them out, since they are only used by blocked files 78* and foreign keys, which are not implemented. 79* 80* 81* 81-05-29 Jim Gray : changed to use new form of resultant structure. 82* Also deleted unused code. 83* 84* 82-09-07 Mike Kubicar : converted to use the tuple structure. Note that 85* this routine should not have to access the internal structure of a tuple 86* since it merely passes tuples between routines via pointer. In this phase 87* of the conversion (of tuples) some code which references the tuple 88* structure has been left in. This is because the code will be deleted soon 89* as it manipulates key lists. Key list code will be deleted when the 90* module is entirely converted. 91* 92* 82-09-24 D. Woodka : Modified for DMS conversion to call mu_cursor_manager 93* and relation_manager put_tuple. 94* 95* 83-03-30 Davids: Eliminated variables that were not used (in some cases they 96* were set but had no impact on the rest of the execution): direct, 97* allocation_flag, temp_flag, TEMP, ncbs, change_bits, cbp, saved_cbp, and i. 98* Removed the references to the mdbm_change_bits mdbm_rm_domain_info 99* mdbm_descriptor mdbm_index and mdbm_rm_db_info include files. 100* Moved the call to build_tuple to before the direct entry so the direct flag 101* indicating the type of entry was not needed (build_tuple is not called if 102* the module is called via the direct entry). Note that the first_time_flag 103* and area_ptr in the calling sequence of the direct entry are no longer 104* needed. Explicitly declared the builtins addr, fixed, and rel which were 105* declared by implication. 106* 107* 83-04-04 Davids: Eliminated the ready_mode, view and security level 108* checking (moved them into mrds_dsl_store). Also eliminated the variables 109* i, mdbm_error_$inc_rel_acc, mdbm_error_$inc_attr_acc, UPDATE, LOAD, 110* SCOPE_UPDATE, mdbm_error_$inc_ready_mode, mdbm_error_$view_prevent, null 111* and the mdbm_rm_attr_info include file which are no longer needed. 112* 113* 83-04-08 Mike Kubicar : Removed unused code (mu_store main entry point). 114* Also unused parameters from mu_store_$direct. Added check of error 115* code after call to mu_cursor_manager_$get and made sure the tuple 116* variable index used in the call is zero. 117* 118* 83-05-23 Mike Kubicar : Changed relation manager calling sequences. 119* 120**/ 121 122 direct: store_direct: entry (dbcb_ptr, rmri_ptr, simple_typed_vector_ptr, code); 123 124 /* get cursor for call to relation_manager put_tuple */ 125 126 tuple_variable_index = 0; /* tvi is always zero for any store */ 127 call mu_cursor_manager_$get (dbcb.dbi, rmri_ptr, tuple_variable_index, 128 rm_rel_info.rel_id, dbcb.relmgr_entries.create_cursor, 129 dbcb.relmgr_entries.open, dbcb.cursor_ptrs_storage_ptr, 130 dbcb.cursor_storage_area_ptr, cursor_ptr, code); 131 if code ^= 0 132 then call error (code); 133 call dbcb.relmgr_entries.put_tuple (cursor_ptr, 134 simple_typed_vector_ptr, tuple_id, code); 135 if code ^= 0 then call error (code); 136 137 138 code = 0; 139 exit: 140 return; 141 142 error: proc (cd); 143 144 /* Error procedure, sets code, cleans up, and exits */ 145 146 dcl cd fixed bin (35); 147 148 code = cd; 149 go to exit; 150 151 end error; 152 153 154 dcl cursor_ptr ptr; /* ptr for cursor to use for put_tuple */ 155 dcl code fixed bin (35); /* Output: status code */ 156 dcl tuple_id bit (36) aligned; /* tuple id for stored tuple */ 157 dcl tuple_variable_index fixed bin (35); /* for call to cursor_manager */ 158 dcl simple_typed_vector_ptr ptr; /* vector to be stored */ 159 dcl (addr, fixed, rel) builtin; 160 dcl mu_cursor_manager_$get entry (fixed bin (35), ptr, fixed bin (35), bit (36) aligned, entry, entry, ptr, ptr, 161 ptr, fixed bin (35)); 162 dcl sys_info$max_seg_size fixed bin (35) ext static; 163 1 1 /* BEGIN mdbm_rm_rel_info.incl.pl1 -- jaw, 11/16/78 */ 1 2 1 3 /* WARNING 1 4* If the rm_rel_info structure is changed then the mrds_data_ 1 5* item saved_res_version MUST be incremented to invalidate all 1 6* existing saved resultants 1 7**/ 1 8 1 9 /* HISTORY: 1 10* 1 11* Modified by Jim Gray - - May 1980, to include model number of 1 12* attributes, and varying attributes, so that partial view 1 13* submodels will have the info needed to properly set up the 1 14* varying length array headers in the tuple structure. 1 15* 1 16* Modified by Jim Gray - - 80-11-06, to rename r_perm = 1 17* status_perm, s_perm = append_tuple_perm, d_perm = 1 18* delete_tuple_perm, and make m_perm = unused_perm. 1 19* 1 20* 81-01-23 Jim Gray : added bit to indicate whether the last model 1 21* view attribute was varying character or bit, since a partial view 1 22* submodel will not have this information in the resultant, and it 1 23* is needed for determining the new tuple length in mus_mod_ubtup, 1 24* since with exact length storage of varying length attributes, 1 25* each tuple can be a different length, which is can only be 1 26* determined by examining the tuple itself. 1 27* 1 28* 81-01-29 Jim Gray : added curent tuple count, to provide for 1 29* interface to allow temp rel population to be known, and to 1 30* provide a more efficient means of finding an approx. current perm 1 31* relation population. 1 32* 1 33* 81-05-28 Jim Gray : removed structure elements referring to 1 34* blocked files, foreign keys, and ids procedures. Also set number 1 35* of files per rel to a constant of 1. 1 36* 1 37* 81-05-28 Jim Gray : combined data from rm_file_info into this 1 38* structure so that only one structure per relation is needed. 1 39* 1 40* 81-07-02 Jim Gray : added total_key and dup_key vfile statistics 1 41* counts. Also added number of operations count since last 1 42* statistics update, and a time since the statistics were last 1 43* updated. 1 44* 1 45* 81-07-06 Jim Gray : added a per selection expression update 1 46* identifier so that small relations could be updated on a per S.E. 1 47* basis 1 48* 1 49* 82-04-21 R. Lackey : Added number_selected (ri_niocbs_init refer (rm_rel_info.niocbs)) fixed bin (35) 1 50* to end of structure TR 12205 (Suggestion). 1 51* 1 52* 82-08-19 D. Woodka : Removed rm_rel_info.max_data_len field for 1 53* the DMS conversion. 1 54* 1 55* 82-08-30 Davids: added the opening_id element and removed the iocb 1 56* array and the niocb element for DMS conversion. Also removed the 1 57* number_selected array (and ri_niocbs_init) since subsets are not 1 58* going to be used. 1 59* 1 60* 82-09-20 Mike Kubicar : changed rm_rel_info.rel_id to bit (36) aligned 1 61* so that it can be used with relation manager. Also added 1 62* rm_rel_info.primary_key_index_id for relation manager. 1 63* 1 64* 82-09-22 Mike Kubicar : Removed the, now useless, fields var_attr_ptrs, 1 65* nvar_atts, model_nvar_atts. 1 66* 1 67* 82-09-24 Davids: Removed current_key_count and current_dup_key_count 1 68* since the duplicate key count for each secondary index is now being 1 69* kept in the attr_info structure and key_count was only needed to 1 70* help in calculating the average selectivity of each index which 1 71* can now be gotten directly from each index's dup key count. Also 1 72* removed the file_id element since it is no longer needed for 1 73* anything. 1 74* 1 75* 82-09-27 Mike Kubicar : removed file_id_len for the same reason file_id 1 76* was removed. 1 77* 1 78* 82-11-05 Mike Kubicar : added a pointer to an id_list structure to be 1 79* used when retrieving tuples from this relation. 1 80* 1 81* 83-04-06 Davids: Added the scope_flags_ptr which points to the scope_flags structure 1 82* for the relation. Note that this structure is part of the resultant NOT 1 83* part of the db.control structure. The scopes are duplicated in the resultant 1 84* to reduce contention for the db.control structure. Note also that the pointer 1 85* will always point to a scope_flags structure even if no scopes have been 1 86* set on the relation, the structure is allocated when the db is opened. 1 87**/ 1 88 1 89 1 90 /* DESCRIPTION: 1 91* 1 92* This structure is allocated in the area part of the structure in 1 93* mdbm_rm_db_info.incl.pl1 as part of the resultant model created 1 94* at open time for a database. There will be one of these 1 95* rm_rel_info structures for each relation appearing in the 1 96* database view (there may be less than the total in the database 1 97* for a submodel openings). There will also be one for each 1 98* temporary relation currently defined for that opening. 1 99* 1 100* The structure in mdbm_rm_rel_array.incl.pl1 contains pointers to 1 101* all rm_rel_info structures allocated. It is used for searching 1 102* for the appropriate structure. This array is pointed to by 1 103* rm_db_info. There are two arrays, one for perm rels, one for temp 1 104* rels. 1 105* 1 106* The rm_rel_info structure points to the 1 107* mdbm_rm_attr_info.incl.pl1 structures, one for each attribute 1 108* appearing in this view of the relation. Each of these in turn 1 109* point to a mdbm_rm_domain_info.incl.pl1 structure for the domain 1 110* info for each attr. 1 111* 1 112* Most of the other information here deals with specifics of the 1 113* relation's logical definition, such as key and secondary index 1 114* attribute inidicators, security permissions, and tuple physical 1 115* construction details. 1 116* 1 117**/ 1 118 1 119 dcl 1 rm_rel_info aligned based (rmri_ptr), /* relation information */ 1 120 2 name char (32), /* from submodel */ 1 121 2 model_name char (30), /* from model */ 1 122 2 rel_id bit (36) aligned, /* unique id. */ 1 123 2 retrieve bit (1) unal, /* operations allowed by this view */ 1 124 2 modify bit (1) unal, 1 125 2 delete bit (1) unal, 1 126 2 store bit (1) unal, 1 127 2 total_key bit (1) unal, /* on if view includes full primary key */ 1 128 2 indexed bit (1) unal, /* on if exists sec. index */ 1 129 2 mdbm_secured bit (1) unal, /* on if mdbm must check security */ 1 130 2 status_perm bit (1) unal, /* if user has status. perm. */ 1 131 2 append_tuple_perm bit (1) unal, /* if user has store perm. */ 1 132 2 delete_tuple_perm bit (1) unal, /* if user has del. perm. */ 1 133 2 unused_perm bit (1) unal, /* for future use. */ 1 134 2 last_model_attr_char_var bit (1) unal, /* on => last model varying attr is char */ 1 135 2 reserved bit (24) unal, /* for future use */ 1 136 2 num_attr fixed bin, /* total no. of attr. in rel. */ 1 137 2 model_num_attr fixed bin, /* total attrs in model relation */ 1 138 2 nkey_attr fixed bin, /* no. of key attr. */ 1 139 2 model_nkey_attr fixed bin, /* total number of keys in model */ 1 140 2 primary_key_index_id bit (36) aligned, /* Index id of relation's primary key */ 1 141 2 nsec_inds fixed bin, /* no. sec. indexes */ 1 142 2 max_key_len fixed bin (35), /* max length (chars) of primary key */ 1 143 2 current_tuple_population fixed bin (35), /* last known total tuple count for this relation */ 1 144 2 last_statistics_update_count fixed bin, /* number of operations's, since this rels stats were updated */ 1 145 2 last_statistics_update_time fixed bin (71),/* last time this rels stats were updated */ 1 146 2 last_statistics_update_s_e_ref_num fixed bin (35), /* last select expr ID that updated this rels stats */ 1 147 2 ready_mode fixed bin, /* 1 => r, 2 => mr, 3 => u, 4 => l, 5 => sr, 6 => su */ 1 148 2 file_type fixed bin, /* 1 => unblocked, 2 => blocked, 3 => temporary */ 1 149 2 tuple_id_len fixed bin, /* no. bits in local tuple id */ 1 150 2 opening_id bit (36) aligned, /* relation manager opening is */ 1 151 2 key_attr_ptrs (nkey_attr_init refer (rm_rel_info.nkey_attr)) ptr, /* ptrs to key attr. */ 1 152 2 attr_ptrs (natts_init refer (rm_rel_info.num_attr)) ptr, /* ptrs to all attr. */ 1 153 2 id_list_ptr ptr, /* Id list for retrieves from the relation */ 1 154 2 scope_flags_ptr ptr; /* pointer to the scope_flags structure for the rel */ 1 155 1 156 dcl rmri_ptr ptr; 1 157 dcl (nkey_attr_init, 1 158 natts_init, 1 159 nvar_atts_init) fixed bin; 1 160 1 161 /* END mdbm_rm_rel_info.incl.pl1 */ 1 162 1 163 164 165 2 1 /* BEGIN mrds_dbcb.incl.pl1 -- jaw, 11/7/78 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 2 7* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 2 8* This entry is being made to cover the change made on 85-07-01 by Thanh 2 9* Nguyen. The scopes_changed flag was added to make checking for this 2 10* more efficient (mrds error list #137). 2 11* 2) change(86-06-10,Blair), approve(86-08-07,MCR7491), 2 12* audit(86-08-07,Gilcrease), install(86-08-15,MR12.0-1127): 2 13* Add a bit called dont_check_txn_id to indicate whether or not we should 2 14* care if multiple txns use the same selection_expression. (mrds #156) 2 15* 3) change(87-11-23,Hergert), approve(88-06-28,MCR7903), 2 16* audit(88-06-28,Dupuis), install(88-08-01,MR12.2-1073): 2 17* Added parser_work_area_ptr and mrds_se_info_ptr for new parser. 2 18* END HISTORY COMMENTS */ 2 19 2 20 2 21 /* WARNING 2 22* If the dbcb structure is changed then the mrds_data_ 2 23* item saved_res_version MUST be incremented to invalidate all 2 24* existing saved resultants 2 25**/ 2 26 2 27 /* HISTORY : 2 28* 2 29* modified by Jim Gray - - 80-10-24, to add new_select_expr bit for 2 30* tid_list management 2 31* 2 32* 81-1-9 Jim Gray : added like reference for ease in making the 2 33* phony resultant in mu_database_index, without having the area dcl 2 34* included. 2 35* 2 36* 81-06-17 Roger Lackey : added last_store_rel_name for use by 2 37* mrds_dsl_store 2 38* 2 39* 81-06-26 Roger Lackey : Added no_optimize and print_search_order 2 40* switches 2 41* 2 42* 81-07-06 Jim Gray : added identifier for the current selection 2 43* expression, so that relation statistics can be updated relative 2 44* to number of selection expressions seem. Also removed init for 2 45* last_store_rel_name, as this iw now properly done in 2 46* mrds_dsl_init_res. 2 47* 2 48* 81-07-17 Roger Lackey : added pred_ptr and unused_ptrs. 2 49* 2 50* 82-08-19 Mike Kubicar : added store_vector field. This is needed 2 51* for the conversion to the relation manager. 2 52* 2 53* 82-08-23 Davids: added the relmgr_entries and access_costs 2 54* substructures so that the entries and costs can change 2 55* depending on the type of database that is opened. 2 56* 2 57* 82-09-09 Mike Kubicar : added modify_vector field. This is needed 2 58* since modify uses a different vector type (general) than does store. 2 59* 2 60* 82-09-20 Davids: changed names of (store modify)_vector to 2 61* (store modify)_vector_ptr. Also (delete modify)_tuple_by_id to 2 62* (delete modify)_tuples_by_id. added the element cursor_storage_ptr 2 63* which should be inited to null and will be set by mu_cursor_manager_$get 2 64* during the first call. 2 65* 2 66* 82-09-21 Davids: renamed cursor_storage_ptr to cursor_ptrs_storage_ptr 2 67* since it deals with the pointers to the cursors and not the cursors 2 68* themelves and added the element cursor_storage_area_ptr which points 2 69* to the area where the cursors are kept. 2 70* 2 71* 82-09-22 Davids: renamed the transact_ctl_seg to transactions_needed. 2 72* the transact_ctl_seg always had a value of 0 and really didn't mean 2 73* anything. 2 74* 2 75* 82-09-22 Mike Kubicar : added create_relation, create_index and 2 76* destroy_relation_by_opening to relmgr_entries. They are needed 2 77* by mrds_dsl_define_temp_rel. 2 78* 2 79* 82-09-24 Donna Woodka : added put_tuple to relmgr_entries. It 2 80* is needed by mu_store. 2 81* 2 82* 82-11-12 Davids: changed the declaration of the access_costs from fixed 2 83* bin to float bin since the values are not integers. 2 84* 2 85* 83-02-02 Davids: added the dbc_uid element. This will allow mrds to make 2 86* sure that the dbc_ptr still points to the correct segment. Element was 2 87* added to the end of the structure to allow modules that don't use 2 88* the element to continue to reference the dbcb structure without recompiling. 2 89* 2 90* 83-02-25 Davids: added the concurrency_on and rollback_on elements. These 2 91* are needed so that temp rels can be created with the same file attributes 2 92* as the permanent relations. 2 93* 2 94* 83-05-02 Mike Kubicar : Deleted get_next_search_specification_ptr and 2 95* added the resultant_in_pdir bit. 2 96* 2 97* 83-05-18 Davids: reduced the number of reserved bits to 14 (from 15) and 2 98* added the res_already_made element. 2 99* 2 100* 83-05-24 Mike Kubicar : Updated the relation manager calling sequences. 2 101* 2 102* 83-08-03 Mike Kubicar : Added the element_id_list_segment_ptr and removed 2 103* one of the unused pointers. 2 104* 2 105* 83-09-20 Ron Harvey: Added relmgr_entries.get_population. 2 106* 2 107* 84-08-27 John Hergert: Created compiled_se_info_ptr from unused_ptrs(2) 2 108* leaving unused_ptrs(1). 2 109* 2 110* 85-01-15 Thanh Nguyen: Added the work_area_ptr and removed the last 2 111* unused_ptrs (1). 2 112* 2 113* 85-04-12 Thanh Nguyen: Added user_started_transaction and 2 114* non_shared_to_shared flags. Also added se_transaction_id and some more 2 115* spare ptrs, entries and reserved storages for future enhancement, since 2 116* we changed the saved_res_version from rslt0001 to rslt0002. 2 117* 2 118* 85-07-01 Thanh Nguyen: Added scopes_changed flag. This flag is set by 2 119* common routine of mrds_dsl_set_scope, reset by mrds_dsl_optimize and 2 120* mrds_dsl_gen_srch_prog when building of a new search_vars. 2 121**/ 2 122 2 123 2 124 /* this structure is based on the {unique_name}.mrds.dbcb segment 2 125* that constitutes the non-secure portion of the resultant model that is 2 126* created during the opening of a database. it contains variables that 2 127* are used during the runtime access of the database, and an area 2 128* for evaluation of requests. it points to four other 2 129* segments in the resultant model, {unique_name}.mrds.rdbi, the secure 2 130* portion of the resultant(see mdbm_rm_db_info.incl.pl1), 2 131* {unique_name}.mrds.select, an area for selection expression evaluation, 2 132* {unique_name}.mrds.curdat, and {unique_name}.mrds.stadat, two segments 2 133* used in the elimination of duplicate tuples during a retrieve. 2 134* the dbcb area holds the structure in mdbm_scope_info.incl.pl1 2 135* that is used when the database is using the file scope mechanism 2 136* for concurrency control over file readying. the segment overlayed via 2 137* mrds_dbc.incl.pl1 structure is pointed to and also handles concurrency control, 2 138* across database openings. the pointer to this dbcb structure is kept in a table 2 139* which associates database indexes(returned from a call to dsl_$open), with particular 2 140* opening instances of resultant models. (see mu_database_index routine) */ 2 141 2 142 dcl 1 dbcb aligned based (dbcb_ptr), /* DBCB -- non-secure portion */ 2 143 2 data like dbcb_data, 2 144 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (dbcb.static_area)))); 2 145 2 146 dcl dbcb_ptr ptr; 2 147 2 148 declare 1 dbcb_data based, /* info part of dbcb, separated out so that 2 149* like references can avoid getting the area declaration */ 2 150 2 rdbi_ptr ptr, /* pointer to write protected mdbm_util_ info. */ 2 151 2 range_ptr ptr, /* ptr to range structure, or null */ 2 152 2 select_ptr ptr, /* ptr to select list, or null */ 2 153 2 sv_ptr ptr, /* pointer to search variables */ 2 154 2 so_ptr ptr, /* pointer to search operators */ 2 155 2 ti_ptr ptr, /* pointer to tuple info */ 2 156 2 lit_ptr ptr, /* pointer to the literal area, or null */ 2 157 2 current_ptr ptr, /* ptr to select list resulting from -current clause */ 2 158 2 ss_ptr ptr, /* ptr to select sets block if not simple s.e. */ 2 159 2 retr_info_ptr ptr, /* ptr to retrieve info area */ 2 160 2 trel_info_ptr ptr, /* ptr to retrieve info area */ 2 161 2 sti_ptr ptr, /* pointer to store info */ 2 162 2 dbc_ptr ptr, /* pointer to the data base control segment */ 2 163 2 sfi_ptr ptr, /* points to head of scalar function list */ 2 164 2 scope_ptr ptr, /* points to array of scope tuples */ 2 165 2 select_area_ptr ptr, /* ptr to area for current selection expression allocations */ 2 166 2 current_data_ptr ptr, /* ptr to one of 2 segments used by mrds_dsl_retrieve 2 167* for eliminating duplicate tuples. */ 2 168 2 static_data_ptr ptr, /* ptr to one of 2 segments used by mrds_dsl_retrieve 2 169* for eliminating duplicate tuples. */ 2 170 2 store_area_ptr ptr, /* temp storage area for dsl_$store */ 2 171 2 retrieve_area_ptr ptr, /* temp storage for dsl_$retrieve */ 2 172 2 modify_area_ptr ptr, /* temp storage area for dsl_$modify */ 2 173 2 delete_area_ptr ptr, /* temp storage area for dsl_$delete */ 2 174 2 def_temp_rel_area_ptr ptr, /* temp storage area for dsl_$define_temp_rel */ 2 175 2 pred_ptr ptr, /* Pointer to pred_array */ 2 176 2 store_vector_ptr ptr, /* Vector structure used during store operations */ 2 177 2 modify_vector_ptr ptr, /* Used during modifies */ 2 178 2 element_id_list_segment_ptr ptr, /* Points to the segment used to hold element_id_list structures */ 2 179 2 compiled_se_info_ptr ptr, /* points to the segment containing all info on compiled sexs */ 2 180 2 work_area_ptr ptr, /* Work area for encode/decode value allocations in mu_retrieve */ 2 181 2 se_info_ptr ptr, /* Points to se_info struct. Primarily for error reports */ 2 182 2 parser_work_area_ptr ptr, /* work area for parser */ 2 183 2 reserved_ptrs (4) ptr, /* Reserved for future use */ 2 184 2 another_flag bit (1) unal, /* on if predicate was -another */ 2 185 2 current_flag bit (1) unal, /* on if predicate was -current clause */ 2 186 2 dbc_incr bit (1) unal, /* on if dbc open mode has been incremented for this user */ 2 187 2 delete_flag bit (1) unal, /* On if search was called from mrds_dsl_sec_delete */ 2 188 2 dup_retain bit (1) unaligned, /* On if dup tuples allowed for retrieval */ 2 189 2 prev_select bit (1) unal, /* on if prev. select block processed in this s.e. */ 2 190 2 possible_op bit (1) unal, /* on of arith op. allowed */ 2 191 2 sel_clause bit (1) unal, /* on if currently in select clause */ 2 192 2 dsm_sw bit (1) unal, /* on if data base was opened via data submodel */ 2 193 2 val_rtrv bit (1) unal, /* if s.e. valid for retrieve */ 2 194 2 val_mod bit (1) unal, /* for modify */ 2 195 2 val_del bit (1) unal, /* for delete */ 2 196 2 val_dtr bit (1) unal, /* for define temp rel */ 2 197 2 transactions_needed bit (1) unal, /* On => transaction must be started or in progress does 2 198* not imply that the database is of type page_file */ 2 199 2 open_mode bit (3) unal, /* 0=>unknown, 1=>r, 2=>u, 3=>er, 4=>eu, >4=>bad */ 2 200 2 new_select_expr bit (1) unal, /* on => starting a new tid list management period */ 2 201 2 no_optimize bit (1) unal, /* On => no optimize */ 2 202 2 print_search_order bit (1) unal, /* On => print the search order */ 2 203 2 resultant_in_pdir bit (1) unal, /* On => Temp segments are in the process dir */ 2 204 2 res_already_made bit (1) unal, /* On => resultant has been made based on a saved copy */ 2 205 2 user_started_transaction bit (1) unal, /* On => user already started his own transaction. */ 2 206 2 non_shared_to_shared bit (1) unal, /* On => user changed the scope from non shared to shared 2 207* inside a sequence of -another selection expression. */ 2 208 2 scopes_changed bit (1) unal, /* On => scopes had been changed by set_scopes or delete_scopes */ 2 209 2 dont_check_txn_id bit (1) unal, /* On => cpmd needs same selection exp across multiple txns */ 2 210 2 reserved bit (10) unal, /* reserved for future use */ 2 211 2 nseq_sch fixed bin (35), /* no. tuples located via sequential search */ 2 212 2 nind_sch fixed bin (35), /* no. tuples located via index search */ 2 213 2 nhash_sch fixed bin (35), /* no. tuples located via hash search */ 2 214 2 nlk_sch fixed bin (35), /* no tuples located via link search */ 2 215 2 cur_lit_offset fixed bin (35), /* current bit offset in literal string */ 2 216 2 dbi fixed bin (35), /* database index for this opening */ 2 217 2 last_s_e_id_num fixed bin (35), /* identifying number for last selection expression seen */ 2 218 2 se_transaction_id bit (36) aligned, /* transaction id from beginning of select expression */ 2 219 2 last_store_rel_name char (32), /* Name of relation last used for store */ 2 220 2 cursor_ptrs_storage_ptr ptr, /* pointer to space where cursor ptrs are stored */ 2 221 2 cursor_storage_area_ptr ptr, /* pointer to area where the cursors are kept */ 2 222 2 reserved_words (10) fixed bin (35), /* Reserved for future use */ 2 223 2 relmgr_entries, /* relation manager entries */ 2 224 3 open entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 2 225 3 close entry (bit (36) aligned, fixed bin (35)), 2 226 3 create_cursor entry (bit (36) aligned, ptr, ptr, fixed bin (35)), 2 227 3 destroy_cursor entry (ptr, ptr, fixed bin (35)), 2 228 3 set_scope entry (bit (36) aligned, bit (2) aligned, bit (2) aligned, fixed bin (35)), 2 229 3 delete_tuples_by_id entry (ptr, ptr, fixed bin (35), fixed bin (35)), 2 230 3 modify_tuples_by_id entry (ptr, ptr, ptr, fixed bin (35), fixed bin (35)), 2 231 3 get_tuple_by_id entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed bin (35)), 2 232 3 get_tuples_by_spec entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)), 2 233 3 get_tuple_id entry (ptr, ptr, ptr, ptr, fixed bin (35)), 2 234 3 put_tuple entry (ptr, ptr, bit (36) aligned, fixed bin (35)), 2 235 3 get_count entry (ptr, ptr, fixed bin (35), fixed bin (35)), 2 236 3 get_duplicate_key_count entry (ptr, bit (36) aligned, fixed bin (17), fixed bin (35), fixed bin (35)), 2 237 3 get_population entry (ptr, fixed bin (35), fixed bin (35)), 2 238 3 create_relation entry (char (*), char (*), ptr, ptr, bit (36) aligned, bit (36) aligned, fixed bin (35)), 2 239 3 create_index entry (bit (36) aligned, ptr, bit (36) aligned, fixed bin (17), bit (36) aligned, fixed bin (35)), 2 240 3 destroy_relation_by_path entry (char (*), char (*), fixed bin (35)), 2 241 3 reserved_entries (5) entry (), 2 242 2 access_costs, /* access costs for permute */ 2 243 3 total_primary_key_cost float bin, 2 244 3 access_cost float bin, 2 245 3 access_overhead float bin, 2 246 3 us_access_cost float bin, 2 247 3 os_access_cost float bin, 2 248 2 dbc_uid bit (36) aligned, /* uid of the segment containing the dbc structure */ 2 249 2 concurrency_on bit (1) unal, /* "1"b implies dmfile concurrency is being used */ 2 250 2 rollback_on bit (1) unal; /* "1"b iomplies before journaling is to be done */ 2 251 2 252 /* END mrds_dbcb.incl.pl1 */ 2 253 2 254 166 167 168 end mu_store; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/05/00 1829.9 mu_store.pl1 >udd>sm>ds>w>ml>mu_store.pl1 164 1 10/14/83 1709.1 mdbm_rm_rel_info.incl.pl1 >ldd>incl>mdbm_rm_rel_info.incl.pl1 166 2 08/04/88 2143.3 mrds_dbcb.incl.pl1 >ldd>incl>mrds_dbcb.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. cd parameter fixed bin(35,0) dcl 146 ref 142 148 code parameter fixed bin(35,0) dcl 155 set ref 122 122 127* 131 131* 133* 135 135* 138* 148* create_cursor 156 based entry variable level 4 dcl 2-142 set ref 127* cursor_ptr 000100 automatic pointer dcl 154 set ref 127* 133* cursor_ptrs_storage_ptr 130 based pointer level 3 dcl 2-142 set ref 127* cursor_storage_area_ptr 132 based pointer level 3 dcl 2-142 set ref 127* data based structure level 2 dcl 2-142 dbcb based structure level 1 dcl 2-142 dbcb_data based structure level 1 unaligned dcl 2-148 dbcb_ptr parameter pointer dcl 2-146 ref 122 122 127 127 127 127 127 133 dbi 114 based fixed bin(35,0) level 3 dcl 2-142 set ref 127* mu_cursor_manager_$get 000010 constant entry external dcl 160 ref 127 open 146 based entry variable level 4 dcl 2-142 set ref 127* put_tuple 216 based entry variable level 4 dcl 2-142 ref 133 rel_id 20 based bit(36) level 2 dcl 1-119 set ref 127* relmgr_entries 146 based structure level 3 dcl 2-142 rm_rel_info based structure level 1 dcl 1-119 rmri_ptr parameter pointer dcl 1-156 set ref 122 122 127* 127 simple_typed_vector_ptr parameter pointer dcl 158 set ref 122 122 133* tuple_id 000102 automatic bit(36) dcl 156 set ref 133* tuple_variable_index 000103 automatic fixed bin(35,0) dcl 157 set ref 126* 127* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 159 fixed builtin function dcl 159 natts_init automatic fixed bin(17,0) dcl 1-157 nkey_attr_init automatic fixed bin(17,0) dcl 1-157 nvar_atts_init automatic fixed bin(17,0) dcl 1-157 rel builtin function dcl 159 sys_info$max_seg_size external static fixed bin(35,0) dcl 162 NAMES DECLARED BY EXPLICIT CONTEXT. direct 000035 constant entry external dcl 122 error 000145 constant entry internal dcl 142 ref 131 135 exit 000144 constant label dcl 139 ref 149 mu_store 000012 constant entry external dcl 18 store 000003 constant entry external dcl 18 store_direct 000025 constant entry external dcl 122 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 232 244 153 242 Length 436 153 12 156 56 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME store 96 external procedure is an external procedure. error internal procedure shares stack frame of external procedure store. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME store 000100 cursor_ptr store 000102 tuple_id store 000103 tuple_variable_index store THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ent_var call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mu_cursor_manager_$get NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000002 19 000017 122 000020 126 000042 127 000043 131 000101 133 000112 135 000131 138 000142 139 000144 142 000145 148 000147 149 000152 ----------------------------------------------------------- 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