| 122 | // |
| 123 | |
| 124 | void CMP_compile_request( gpre_req* request) |
| 125 | { |
| 126 | // if there isn't a request handle specified, make one! |
| 127 | |
| 128 | if (!request->req_handle && (request->req_type != REQ_procedure)) |
| 129 | { |
| 130 | request->req_handle = (TEXT*) MSC_alloc(20); |
| 131 | sprintf(request->req_handle, gpreGlob.ident_pattern, CMP_next_ident()); |
| 132 | } |
| 133 | |
| 134 | if (!request->req_trans) |
| 135 | request->req_trans = gpreGlob.transaction_name; |
| 136 | |
| 137 | if (!request->req_request_level) |
| 138 | request->req_request_level = "0"; |
| 139 | |
| 140 | request->req_ident = CMP_next_ident(); |
| 141 | |
| 142 | // If this is an SQL blob cursor, compile the blob and get out fast. |
| 143 | |
| 144 | if (request->req_flags & (REQ_sql_blob_open | REQ_sql_blob_create)) |
| 145 | { |
| 146 | for (blb* blob = request->req_blobs; blob; blob = blob->blb_next) |
| 147 | cmp_blob(blob, true); |
| 148 | return; |
| 149 | } |
| 150 | |
| 151 | // Before we get too far, make sure an eof field has been |
| 152 | // constructed. If not, do so now. |
| 153 | |
| 154 | ref* reference; |
| 155 | if (!eof_field) |
| 156 | { |
| 157 | eof_field = MET_make_field(gpreGlob.utility_name, dtype_short, sizeof(SSHORT), false); |
| 158 | count_field = MET_make_field(gpreGlob.count_name, dtype_long, sizeof(SLONG), false); |
| 159 | slack_byte_field = MET_make_field(gpreGlob.slack_name, dtype_text, 1, false); |
| 160 | reference = (ref*) MSC_alloc(REF_LEN); |
| 161 | reference->ref_value = "0"; |
| 162 | lit0 = MSC_unary(nod_literal, (gpre_nod*) reference); |
| 163 | |
| 164 | reference = (ref*) MSC_alloc(REF_LEN); |
| 165 | reference->ref_value = "1"; |
| 166 | lit1 = MSC_unary(nod_literal, (gpre_nod*) reference); |
| 167 | } |
| 168 | |
| 169 | // Handle different request types differently |
| 170 | |
| 171 | switch (request->req_type) |
| 172 | { |
| 173 | case REQ_create_database: |
| 174 | case REQ_ddl: |
| 175 | CMD_compile_ddl(request); |
| 176 | return; |
| 177 | case REQ_slice: |
| 178 | cmp_slice(request); |
| 179 | return; |
| 180 | |
| 181 | case REQ_ready: |
no test coverage detected