You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-30 07:25:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			178 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			5.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. */
 | |
| 
 | |
| //  $Id: we_dbfileop.h 4726 2013-08-07 03:38:36Z bwilkinson $
 | |
| 
 | |
| /** @file */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "we_type.h"
 | |
| #include "we_fileop.h"
 | |
| #include "we_blockop.h"
 | |
| #include "we_cache.h"
 | |
| 
 | |
| #define EXPORT
 | |
| 
 | |
| /** Namespace WriteEngine */
 | |
| namespace WriteEngine
 | |
| {
 | |
| // forward reference
 | |
| class ChunkManager;
 | |
| 
 | |
| /** Class DbFileOp */
 | |
| class DbFileOp : public FileOp
 | |
| {
 | |
|  public:
 | |
|   /**
 | |
|    * @brief Constructor
 | |
|    */
 | |
|   EXPORT DbFileOp();
 | |
| 
 | |
|   /**
 | |
|    * @brief Default Destructor
 | |
|    */
 | |
|   EXPORT ~DbFileOp() override;
 | |
| 
 | |
|   EXPORT virtual int flushCache();
 | |
| 
 | |
|   /**
 | |
|    * @brief Get an entry within a subblock
 | |
|    */
 | |
|   EXPORT void getSubBlockEntry(unsigned char* blockBuf, const int sbid, const int entryNo, const int width,
 | |
|                                void* pStruct);
 | |
| 
 | |
|   /**
 | |
|    * @brief Get an entry within a subblock using block information
 | |
|    */
 | |
|   void getSubBlockEntry(DataBlock* block, const int sbid, const int entryNo, const int width, void* pStruct)
 | |
|   {
 | |
|     getSubBlockEntry(block->data, sbid, entryNo, width, pStruct);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @brief Read DB file to a buffer
 | |
|    */
 | |
|   EXPORT virtual int readDBFile(IDBDataFile* pFile, unsigned char* readBuf, const uint64_t lbid,
 | |
|                                 const bool isFbo = false);
 | |
|   EXPORT int readDBFile(CommBlock& cb, unsigned char* readBuf, const uint64_t lbid);
 | |
| 
 | |
|   EXPORT int readDBFile(IDBDataFile* pFile, DataBlock* block, const uint64_t lbid, const bool isFbo = false);
 | |
|   int readDBFile(CommBlock& cb, DataBlock* block, const uint64_t lbid)
 | |
|   {
 | |
|     return readDBFile(cb, block->data, lbid);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @brief Get an entry within a subblock and also populate block buffer
 | |
|    *
 | |
|    */
 | |
|   EXPORT int readSubBlockEntry(IDBDataFile* pFile, DataBlock* block, const uint64_t lbid, const int sbid,
 | |
|                                const int entryNo, const int width, void* pStruct);
 | |
| 
 | |
|   EXPORT int readSubBlockEntry(CommBlock& cb, DataBlock* block, const uint64_t lbid, const int sbid,
 | |
|                                const int entryNo, const int width, void* pStruct);
 | |
| 
 | |
|   /**
 | |
|    * @brief Set an entry within a subblock
 | |
|    */
 | |
|   EXPORT void setSubBlockEntry(unsigned char* blockBuf, const int sbid, const int entryNo, const int width,
 | |
|                                const void* pStruct);
 | |
| 
 | |
|   /**
 | |
|    * @brief Set an entry within a subblock using block information
 | |
|    */
 | |
|   void setSubBlockEntry(DataBlock* block, const int sbid, const int entryNo, const int width,
 | |
|                         const void* pStruct)
 | |
|   {
 | |
|     block->dirty = true;
 | |
|     setSubBlockEntry(block->data, sbid, entryNo, width, pStruct);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @brief Lbid Write a buffer to a DB file
 | |
|    */
 | |
|   EXPORT virtual int writeDBFile(IDBDataFile* pFile, const unsigned char* writeBuf, const uint64_t lbid,
 | |
|                                  const int numOfBlock = 1);
 | |
|   EXPORT int writeDBFile(CommBlock& cb, const unsigned char* writeBuf, const uint64_t lbid,
 | |
|                          const int numOfBlock = 1);
 | |
| 
 | |
|   /**
 | |
|    * @brief Write designated block(s) w/o writing to Version Buffer or cache.
 | |
|    */
 | |
|   EXPORT int writeDBFileNoVBCache(CommBlock& cb, const unsigned char* writeBuf, const int fbo,
 | |
|                                   const int numOfBlock = 1);
 | |
|   EXPORT virtual int writeDBFileNoVBCache(IDBDataFile* pFile, const unsigned char* writeBuf, const int fbo,
 | |
|                                           const int numOfBlock = 1);
 | |
| 
 | |
|   int writeDBFile(IDBDataFile* pFile, DataBlock* block, const uint64_t lbid)
 | |
|   {
 | |
|     block->dirty = false;
 | |
|     return writeDBFile(pFile, block->data, lbid);
 | |
|   }
 | |
|   int writeDBFile(CommBlock& cb, DataBlock* block, const uint64_t lbid)
 | |
|   {
 | |
|     return writeDBFile(cb, block->data, lbid);
 | |
|   }
 | |
| 
 | |
|   EXPORT virtual int writeDBFileFbo(IDBDataFile* pFile, const unsigned char* writeBuf, const uint64_t fbo,
 | |
|                                     const int numOfBlock);
 | |
| 
 | |
|   int writeDBFileNoVBCache(CommBlock& cb, DataBlock* block, const int fbo)
 | |
|   {
 | |
|     return writeDBFileNoVBCache(cb, block->data, fbo);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @brief Write a sub block entry directly to a DB file
 | |
|    */
 | |
|   EXPORT int writeSubBlockEntry(IDBDataFile* pFile, DataBlock* block, const uint64_t lbid, const int sbid,
 | |
|                                 const int entryNo, const int width, void* pStruct);
 | |
| 
 | |
|   EXPORT int writeSubBlockEntry(CommBlock& cb, DataBlock* block, const uint64_t lbid, const int sbid,
 | |
|                                 const int entryNo, const int width, void* pStruct);
 | |
| 
 | |
|   /**
 | |
|    * @brief Write to version buffer
 | |
|    */
 | |
|   EXPORT int writeVB(IDBDataFile* pFile, const OID oid, const uint64_t lbid);
 | |
| 
 | |
|   EXPORT virtual int readDbBlocks(IDBDataFile* pFile, unsigned char* readBuf, uint64_t fbo, size_t n);
 | |
| 
 | |
|   EXPORT virtual int restoreBlock(IDBDataFile* pFile, const unsigned char* writeBuf, uint64_t fbo);
 | |
| 
 | |
|   EXPORT virtual IDBDataFile* getFilePtr(const Column& column, bool useTmpSuffix);
 | |
| 
 | |
|   virtual void chunkManager(ChunkManager* ptr)
 | |
|   {
 | |
|     m_chunkManager = ptr;
 | |
|   }
 | |
|   virtual ChunkManager* chunkManager()
 | |
|   {
 | |
|     return m_chunkManager;
 | |
|   }
 | |
| 
 | |
|  protected:
 | |
|   ChunkManager* m_chunkManager;
 | |
| 
 | |
|  private:
 | |
| };
 | |
| 
 | |
| }  // namespace WriteEngine
 | |
| 
 | |
| #undef EXPORT
 |