mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-04-21 19:45:56 +03:00
161 lines
5.5 KiB
C++
161 lines
5.5 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_xmljob.h 4450 2013-01-21 14:13:24Z rdempsey $
|
|
*
|
|
*******************************************************************************/
|
|
/** @file */
|
|
|
|
#ifndef _WE_XMLJOB_H_
|
|
#define _WE_XMLJOB_H_
|
|
|
|
#include <iostream>
|
|
#include <string>
|
|
#include <time.h>
|
|
#include <boost/filesystem/path.hpp>
|
|
|
|
#include "we_xmlop.h"
|
|
#include "calpontsystemcatalog.h"
|
|
|
|
#if defined(_MSC_VER) && defined(xxxWRITEENGINEXMLJOB_DLLEXPORT)
|
|
#define EXPORT __declspec(dllexport)
|
|
#else
|
|
#define EXPORT
|
|
#endif
|
|
|
|
/** Namespace WriteEngine */
|
|
namespace WriteEngine
|
|
{
|
|
class Log;
|
|
struct JobColumn;
|
|
|
|
/** @brief Reads Job XML file and loads into a "Job" object for use by
|
|
* cpimport.bin.
|
|
*
|
|
*/
|
|
class XMLJob : public XMLOp
|
|
{
|
|
|
|
public:
|
|
/**
|
|
* @brief Constructor
|
|
*/
|
|
EXPORT XMLJob();
|
|
|
|
/**
|
|
* @brief Default Destructor
|
|
*/
|
|
EXPORT ~XMLJob();
|
|
|
|
/**
|
|
* @brief Utility to generate a full path name for a Job XML file name
|
|
* @param sXMLJobDir Command line override for complete Job directory path
|
|
* @param jobDIr Job subdirectory under default <BulkRoot> path
|
|
* @param jobId Job ID
|
|
* @param bTempFile Are we creating a temporary Job XML File name
|
|
* @param schmaName If temp file, this is schema name to use
|
|
* @param tableName If temp file, this is the table name to use
|
|
* @param xmlDirPath The complete Job XML file path that is constructed
|
|
* @param errMsg Error message if return value is not NO_ERROR
|
|
*/
|
|
EXPORT static int genJobXMLFileName(
|
|
const std::string& sXMLJobDir,
|
|
const std::string& jobDir,
|
|
const std::string& jobId,
|
|
bool bTempFile,
|
|
const std::string& schemaName,
|
|
const std::string& tableName,
|
|
boost::filesystem::path& xmlDirPath,
|
|
std::string& errMsg,
|
|
std::string& tableOIDStr );
|
|
|
|
/**
|
|
* @brief Get job structure
|
|
*/
|
|
const Job& getJob() const { return fJob; }
|
|
|
|
/**
|
|
* @brief Load job information
|
|
* @param fileName Name of Job XML file to be read
|
|
* @param bTempFile Are we creating a temporary Job XML File that will be
|
|
* deleted by the destructor
|
|
* @param bValidateColumnList Validate that all columns have an XML tag
|
|
* @param errMsg Error message if return value is not NO_ERROR
|
|
*/
|
|
EXPORT int loadJobXmlFile( const std::string& fileName,
|
|
bool bTempFile,
|
|
bool bValidateColumnList,
|
|
std::string& errMsg );
|
|
|
|
/**
|
|
* @brief Print job related information
|
|
* @param logger Log object that is to receive the print output
|
|
*/
|
|
EXPORT void printJobInfo(Log& logger) const;
|
|
|
|
/**
|
|
* @brief Print abbreviated job related information
|
|
* @param logger Log object that is to receive the print output
|
|
*/
|
|
EXPORT void printJobInfoBrief(Log& logger) const;
|
|
|
|
/**
|
|
* @brief Process node
|
|
* @param pParentNode Node to be parsed from XML
|
|
*/
|
|
EXPORT bool processNode( xmlNode* pParentNode );
|
|
|
|
private:
|
|
void setJobData( xmlNode* pNode,
|
|
const xmlTag tag,
|
|
bool bExpectContent,
|
|
XML_DTYPE tagType );
|
|
void setJobDataColumn( xmlNode* pNode, bool bDefaultCol );
|
|
void setJobDataIgnoreField ( );
|
|
void setJobDataTable ( xmlNode* pNode );
|
|
void setReadBuffers ( xmlNode* pNode );
|
|
void setSchema ( xmlNode* pNode );
|
|
void initSatLimits( JobColumn& column ) const;
|
|
void fillInXMLDataAsLoaded(
|
|
execplan::CalpontSystemCatalog::RIDList& colRidList);
|
|
void fillInXMLDataNotNullDefault(
|
|
const std::string& fullTblName,
|
|
execplan::CalpontSystemCatalog::ColType& colType,
|
|
JobColumn& col );
|
|
void validateAllColumnsHaveTags( const
|
|
execplan::CalpontSystemCatalog::RIDList& colRidList) const;
|
|
void postProcessTableNode( );
|
|
static int createTempJobDir( const std::string& xmlFilePath,
|
|
std::string& errMsg );
|
|
|
|
Job fJob; // current job xml
|
|
|
|
DebugLevel fDebugLevel; // internal use debug level
|
|
bool fDeleteTempFile; // delete tmp jobfile in destructor
|
|
std::string fJobFileName; // job file name
|
|
JobColList fDefaultColumns; // temporary list of default cols
|
|
// for table node being processed
|
|
bool fValidateColList; // Validate all cols have XML tag
|
|
};
|
|
|
|
} //end of namespace
|
|
|
|
#undef EXPORT
|
|
|
|
#endif // _WE_XMLJOB_H_
|