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 
			
		
		
		
	
		
			
				
	
	
		
			202 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			202 lines
		
	
	
		
			5.9 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_config.h 4726 2013-08-07 03:38:36Z bwilkinson $
 | |
|  *
 | |
|  *******************************************************************************/
 | |
| /** @file */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <string>
 | |
| #include <boost/thread.hpp>
 | |
| #include <vector>
 | |
| #include <map>
 | |
| 
 | |
| #include "we_obj.h"
 | |
| 
 | |
| // #define SHARED_NOTHING_DEMO_2
 | |
| 
 | |
| #define EXPORT
 | |
| 
 | |
| /** Namespace WriteEngine */
 | |
| namespace WriteEngine
 | |
| {
 | |
| /** Class Config */
 | |
| class Config
 | |
| {
 | |
|  public:
 | |
|   /**
 | |
|    * @brief Constructor
 | |
|    */
 | |
|   Config() = default;
 | |
| 
 | |
|   /**
 | |
|    * @brief Default Destructor
 | |
|    */
 | |
|   ~Config() = default;
 | |
| 
 | |
|   /**
 | |
|    * @brief Get DB root (for local PM)
 | |
|    * @param idx Index of the DBRootn entry to fetch (0 fetches DBRoot[0],etc.)
 | |
|    */
 | |
|   EXPORT static std::string getDBRootByIdx(unsigned idx);
 | |
| 
 | |
|   /**
 | |
|    * @brief Get complete DBRoot path list for the local PM
 | |
|    * @param dbRootPathList vector of DBRoot paths
 | |
|    */
 | |
|   EXPORT static void getDBRootPathList(std::vector<std::string>& dbRootPathList);
 | |
| 
 | |
|   /**
 | |
|    * @brief Get DB root (for local PM)
 | |
|    * @param num DBRootN entry to fetch (1 fetches DBRoot1, etc.)
 | |
|    */
 | |
|   EXPORT static std::string getDBRootByNum(unsigned num);
 | |
| 
 | |
|   /**
 | |
|    * @brief Get list of applicable DBRoot ids for this job.
 | |
|    */
 | |
|   EXPORT static void getRootIdList(std::vector<uint16_t>& dbRootIds);
 | |
| 
 | |
| #ifdef SHARED_NOTHING_DEMO_2
 | |
|   EXPORT static void getSharedNothingRoot(char*);  // pass in an char[FILE_NAME_SIZE]
 | |
| #endif
 | |
| 
 | |
|   /**
 | |
|    * @brief Bulkload DB root
 | |
|    */
 | |
|   EXPORT static std::string getBulkRoot();
 | |
| 
 | |
|   /**
 | |
|    * @brief DBRoot count for local PM
 | |
|    */
 | |
|   EXPORT static size_t DBRootCount();
 | |
| 
 | |
|   /**
 | |
|    * @brief Wait Period
 | |
|    */
 | |
|   EXPORT static int getWaitPeriod();
 | |
| 
 | |
|   /**
 | |
|    * @brief FilesPerColumnPartition
 | |
|    */
 | |
|   EXPORT static unsigned getFilesPerColumnPartition();
 | |
| 
 | |
|   /**
 | |
|    * @brief ExtentsPerSegmentFile
 | |
|    */
 | |
|   EXPORT static unsigned getExtentsPerSegmentFile();
 | |
| 
 | |
|   /**
 | |
|    * @brief Process Priority for cpimport.bin
 | |
|    * Return value is in range -20..19 (highest...lowest, 0=normal)
 | |
|    */
 | |
|   EXPORT static int getBulkProcessPriority();
 | |
| 
 | |
|   /**
 | |
|    * @brief Directory carrying Bulk Rollback meta data files
 | |
|    */
 | |
|   EXPORT static std::string getBulkRollbackDir();
 | |
| 
 | |
|   /**
 | |
|    * @brief MCOL-5021 Option to enable/disable fast deletes.
 | |
|    * When enabled (option is disabled by default),
 | |
|    * all column extents are indiscriminately invalidated
 | |
|    * and actual delete is only performed on the AUX column.
 | |
|    */
 | |
|   EXPORT static bool getFastDelete();
 | |
| 
 | |
|   /**
 | |
|    * @brief Max percentage of allowable file system disk usage for each DBRoot
 | |
|    */
 | |
|   EXPORT static unsigned getMaxFileSystemDiskUsage();
 | |
| 
 | |
|   /**
 | |
|    * @brief Number of Blocks to pad each compressed chunk.
 | |
|    */
 | |
|   EXPORT static unsigned getNumCompressedPadBlks();
 | |
| 
 | |
|   /**
 | |
|    * @brief Parent OAM Module flag (is this the parent OAM node, ex: pm1)
 | |
|    */
 | |
|   EXPORT static bool getParentOAMModuleFlag();
 | |
| 
 | |
|   /**
 | |
|    * @brief Local Module Type (ex: "pm")
 | |
|    */
 | |
|   EXPORT static std::string getLocalModuleType();
 | |
| 
 | |
|   /**
 | |
|    * @brief Local Module ID   (ex: 1   )
 | |
|    */
 | |
|   EXPORT static uint16_t getLocalModuleID();
 | |
| 
 | |
|   /**
 | |
|    * @brief Version Buffer root
 | |
|    */
 | |
|   EXPORT static std::string getVBRoot();
 | |
| 
 | |
|   /**
 | |
|    * @brief Cache the config parameters locally
 | |
|    * Initialize Config cache.  Cache will be updated as needed.
 | |
|    */
 | |
|   EXPORT static void initConfigCache();
 | |
| 
 | |
|   /**
 | |
|    * @brief Has Local PM DBRoot info changed since last time this function
 | |
|    * was called.  Can be used to monitor changes to DBRoot info.
 | |
|    */
 | |
|   EXPORT static bool hasLocalDBRootListChanged();
 | |
| 
 | |
|  private:
 | |
|   typedef std::vector<std::string> strvec_t;
 | |
|   typedef std::map<int, std::string> intstrmap_t;
 | |
|   typedef std::vector<uint16_t> uint16vec_t;
 | |
| 
 | |
|   static void checkReload();
 | |
| 
 | |
|   static int m_dbRootCount;                 // num DBRoots for local PM
 | |
|   static strvec_t m_dbRootPath;             // root paths for open files
 | |
|   static intstrmap_t m_dbRootPathMap;       // map of root id to root paths
 | |
|   static uint16vec_t m_dbRootId;            // list of root ids
 | |
|   static std::string m_bulkRoot;            // root path for bulk operation
 | |
|   static unsigned long fDBRootChangeCount;  // track recent DBRoot changes
 | |
|   static time_t fCacheTime;                 // timestamp associated w/cache
 | |
|   static boost::mutex fCacheLock;           // mutex for m_dbRoot sync
 | |
| #ifdef SHARED_NOTHING_DEMO_2
 | |
|   static boost::mutex m_bulkRoot_lk;  // mutex for m_bulkRoot sync
 | |
| #endif
 | |
|   static int m_WaitPeriod;                    // secs to wait for transaction
 | |
|   static unsigned m_FilesPerColumnPartition;  // # seg files per partition
 | |
|   static unsigned m_ExtentsPerSegmentFile;    // # extents per segment file
 | |
|   static int m_BulkProcessPriority;           // cpimport.bin proc priority
 | |
|   static std::string m_BulkRollbackDir;       // bulk rollback meta data dir
 | |
|   static bool m_FastDelete;                   // fast delete option
 | |
|   static unsigned m_MaxFileSystemDiskUsage;   // max file system % disk usage
 | |
|   static unsigned m_NumCompressedPadBlks;     // num blks to pad comp chunks
 | |
|   static bool m_ParentOAMModuleFlag;          // are we running on parent PM
 | |
|   static std::string m_LocalModuleType;       // local node type (ex: "pm")
 | |
|   static int m_LocalModuleID;                 // local node id   (ex: 1   )
 | |
|   static std::string m_VersionBufferDir;      // Version buffer directory
 | |
| };
 | |
| 
 | |
| }  // namespace WriteEngine
 | |
| 
 | |
| #undef EXPORT
 |