mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-04-20 09:07:44 +03:00
124 lines
4.6 KiB
C++
124 lines
4.6 KiB
C++
/* Copyright (C) 2014 InfiniDB, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; version 2 of
|
|
the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
MA 02110-1301, USA. */
|
|
|
|
/** @file */
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include "IDBFileSystem.h"
|
|
#include "we_type.h"
|
|
|
|
#define EXPORT
|
|
|
|
namespace WriteEngine
|
|
{
|
|
/** @brief Encapsulates logic to confirm and finalize (or abort) changes
|
|
* to an HDFS db file. Class should only be used for HDFS db files.
|
|
*
|
|
* For the HDFS db files that are modified, the new version of the file
|
|
* may be written to a file with an alternative suffix (like .tmp file).
|
|
* The confirmDbFileChange() function confirms that the work is complete,
|
|
* and that the new temporary file (ex: *.tmp) can replace the original file.
|
|
* After all the columns in a table have been confirmed (through calls to
|
|
* confirmDbFileChange()), then endDbFileChange() should be called to finish
|
|
* committing or aborting all the work.
|
|
*/
|
|
class ConfirmHdfsDbFile
|
|
{
|
|
public:
|
|
EXPORT ConfirmHdfsDbFile();
|
|
EXPORT ~ConfirmHdfsDbFile();
|
|
|
|
/** @brief Confirm changes to the specified db file
|
|
* @param backUpFileType Backup file type to confirm. Types:
|
|
* "rlc" - reallocated chunk file
|
|
* "tmp" - updated db file
|
|
* @param filename Name of db file to be confirmed.
|
|
* @param errMsg (out) Error msg associated with a bad return code
|
|
* @return Returns NO_ERROR if call is successful
|
|
*/
|
|
EXPORT int confirmDbFileChange(const std::string& backUpFileType, const std::string& filename,
|
|
std::string& errMsg) const;
|
|
|
|
/** @brief Finalize changes to the specified db file
|
|
*
|
|
* If success flag is true:
|
|
* The old version of the db file is deleted.
|
|
* If success flag is false:
|
|
* The old version is retained, and any temporary file with pending
|
|
* changes is deleted.
|
|
*
|
|
* @param backUpFileType Backup file type to finalize. Types:
|
|
* "rlc" - reallocated chunk file
|
|
* "tmp" - updated db file
|
|
* @param filename Name of db file to be finalized.
|
|
* @param success Final success/fail status of db file changes
|
|
* @param errMsg (out) Error msg associated with a bad return code
|
|
* @return Returns NO_ERROR if call is successful
|
|
*/
|
|
EXPORT int endDbFileChange(const std::string& backUpFileType, const std::string& filename, bool success,
|
|
std::string& errMsg) const;
|
|
|
|
/** @brief Confirm changes to the db files modified for tableOID
|
|
*
|
|
* The HWM db file for each DBRoot, as listed in the bulk rollback meta
|
|
* data file (for the specified tableOID), is confirmed.
|
|
*
|
|
* @param tableOID Table that has changes to be confirmed
|
|
* @param errMsg (out) Error msg associated with a bad return code
|
|
* @return Returns NO_ERROR if call is successful
|
|
*/
|
|
EXPORT int confirmDbFileListFromMetaFile(OID tableOID, std::string& errMsg);
|
|
|
|
/** @brief Finalize changes to the db files modified for tableOID
|
|
*
|
|
* The HWM db file for each DBRoot, as listed in the bulk rollback meta
|
|
* data file (for the specified tableOID), is finalized.
|
|
*
|
|
* If success flag is true:
|
|
* The old version of the db files are deleted.
|
|
* If success flag is false:
|
|
* The old versions are retained, and any temporary files with pending
|
|
* changes are deleted.
|
|
*
|
|
* @param tableOID Table that has changes to be confirmed
|
|
* @param errMsg (out) Error msg associated with a bad return code
|
|
* @return Returns NO_ERROR if call is successful
|
|
*/
|
|
EXPORT int endDbFileListFromMetaFile(OID tableOID, bool success, std::string& errMsg);
|
|
|
|
private:
|
|
void openMetaDataFile(OID tableOID, uint16_t dbRoot, std::istringstream& metaDataStream);
|
|
|
|
void confirmDbFiles(std::istringstream& metaDataStream) const;
|
|
void confirmColumnDbFile(const char* inBuf) const;
|
|
void confirmDctnryStoreDbFile(const char* inBuf) const;
|
|
|
|
void endDbFiles(std::istringstream& metaDataStream, bool success) const;
|
|
void endColumnDbFile(const char* inBuf, bool success) const;
|
|
void endDctnryStoreDbFile(const char* inBuf, bool success) const;
|
|
|
|
idbdatafile::IDBFileSystem& fFs;
|
|
std::string fMetaFileName;
|
|
};
|
|
|
|
} // namespace WriteEngine
|
|
|
|
#undef EXPORT
|