| 479 | } |
| 480 | |
| 481 | void BackupRelationTask::initItem(BurpGlobals* tdgbl, Item& item) |
| 482 | { |
| 483 | item.m_gbl = tdgbl; |
| 484 | item.m_relation = m_relation; |
| 485 | |
| 486 | // copy some data from master |
| 487 | tdgbl->gbl_database_file_name = m_masterGbl->gbl_database_file_name; |
| 488 | tdgbl->gbl_sw_verbose = m_masterGbl->gbl_sw_verbose; |
| 489 | tdgbl->gbl_sw_ignore_limbo = m_masterGbl->gbl_sw_ignore_limbo; |
| 490 | tdgbl->gbl_sw_meta = m_masterGbl->gbl_sw_meta; |
| 491 | tdgbl->gbl_sw_compress = m_masterGbl->gbl_sw_compress; |
| 492 | tdgbl->gbl_sw_version = m_masterGbl->gbl_sw_version; |
| 493 | tdgbl->gbl_sw_transportable = m_masterGbl->gbl_sw_transportable; |
| 494 | tdgbl->gbl_sw_blk_factor = m_masterGbl->gbl_sw_blk_factor; |
| 495 | tdgbl->gbl_sw_sql_role = m_masterGbl->gbl_sw_sql_role; |
| 496 | tdgbl->gbl_sw_user = m_masterGbl->gbl_sw_user; |
| 497 | tdgbl->gbl_sw_password = m_masterGbl->gbl_sw_password; |
| 498 | //??? tdgbl->gbl_sw_tr_user = m_masterGbl->gbl_sw_tr_user; |
| 499 | tdgbl->action = m_masterGbl->action; |
| 500 | tdgbl->sw_redirect = m_masterGbl->sw_redirect; |
| 501 | tdgbl->gbl_stat_flags = m_masterGbl->gbl_stat_flags; |
| 502 | |
| 503 | if (item.m_ownAttach) |
| 504 | { |
| 505 | if (!item.m_att) |
| 506 | { |
| 507 | FbLocalStatus status; |
| 508 | DispatcherPtr provider; |
| 509 | |
| 510 | // attach, start tran, etc |
| 511 | |
| 512 | const unsigned char* dpbBuffer = m_masterGbl->gbl_dpb_data.begin(); |
| 513 | const unsigned int dpbLength = m_masterGbl->gbl_dpb_data.getCount(); |
| 514 | |
| 515 | item.m_att = provider->attachDatabase(&status, tdgbl->gbl_database_file_name, |
| 516 | dpbLength, dpbBuffer); |
| 517 | if (status->getState() & IStatus::STATE_ERRORS) |
| 518 | BURP_abort(&status); |
| 519 | |
| 520 | ClumpletWriter tpb(ClumpletReader::Tpb, 128, isc_tpb_version3); |
| 521 | tpb.insertTag(isc_tpb_concurrency); |
| 522 | tpb.insertTag(isc_tpb_read); |
| 523 | if (tdgbl->gbl_sw_ignore_limbo) |
| 524 | tpb.insertTag(isc_tpb_ignore_limbo); |
| 525 | tpb.insertTag(isc_tpb_no_auto_undo); |
| 526 | // add snapshot id |
| 527 | tpb.insertBigInt(isc_tpb_at_snapshot_number, m_masterGbl->tr_snapshot); |
| 528 | |
| 529 | item.m_tra = item.m_att->startTransaction(&status, |
| 530 | tpb.getBufferLength(), tpb.getBuffer()); |
| 531 | |
| 532 | if (status->getState() & IStatus::STATE_ERRORS) |
| 533 | BURP_abort(&status); |
| 534 | } |
| 535 | |
| 536 | tdgbl->db_handle = item.m_att; |
| 537 | tdgbl->tr_handle = item.m_tra; |
| 538 | } |
nothing calls this directly
no test coverage detected