| 3967 | |
| 3968 | |
| 3969 | void VIO_store(thread_db* tdbb, record_param* rpb, jrd_tra* transaction) |
| 3970 | { |
| 3971 | /************************************** |
| 3972 | * |
| 3973 | * V I O _ s t o r e |
| 3974 | * |
| 3975 | ************************************** |
| 3976 | * |
| 3977 | * Functional description |
| 3978 | * Store a new record. |
| 3979 | * |
| 3980 | **************************************/ |
| 3981 | SET_TDBB(tdbb); |
| 3982 | Request* const request = tdbb->getRequest(); |
| 3983 | jrd_rel* relation = rpb->rpb_relation; |
| 3984 | |
| 3985 | DeferredWork* work = NULL; |
| 3986 | MetaName package_name; |
| 3987 | USHORT object_id; |
| 3988 | MetaName object_name; |
| 3989 | |
| 3990 | #ifdef VIO_DEBUG |
| 3991 | VIO_trace(DEBUG_WRITES, |
| 3992 | "VIO_store (rel_id %u, record_param %" QUADFORMAT"d, transaction %" SQUADFORMAT |
| 3993 | ")\n", relation->rel_id, rpb->rpb_number.getValue(), |
| 3994 | transaction ? transaction->tra_number : 0); |
| 3995 | #endif |
| 3996 | |
| 3997 | transaction->tra_flags |= TRA_write; |
| 3998 | DSC desc, desc2; |
| 3999 | |
| 4000 | check_gbak_cheating_insupd(tdbb, relation, "INSERT"); |
| 4001 | |
| 4002 | if (needDfw(tdbb, transaction)) |
| 4003 | { |
| 4004 | switch ((RIDS) relation->rel_id) |
| 4005 | { |
| 4006 | case rel_pages: |
| 4007 | case rel_formats: |
| 4008 | case rel_trans: |
| 4009 | case rel_rcon: |
| 4010 | case rel_refc: |
| 4011 | case rel_ccon: |
| 4012 | case rel_sec_users: |
| 4013 | case rel_sec_user_attributes: |
| 4014 | case rel_msgs: |
| 4015 | case rel_prc_prms: |
| 4016 | case rel_args: |
| 4017 | case rel_auth_mapping: |
| 4018 | case rel_dpds: |
| 4019 | case rel_dims: |
| 4020 | case rel_segments: |
| 4021 | protect_system_table_insert(tdbb, request, relation); |
| 4022 | break; |
| 4023 | |
| 4024 | case rel_roles: |
| 4025 | protect_system_table_insert(tdbb, request, relation); |
| 4026 | EVL_field(0, rpb->rpb_record, f_rol_name, &desc); |
no test coverage detected