1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-07 03:22:57 +03:00

Merge branch 'develop-1.1' into 1.1-mergeup-20180224

This commit is contained in:
Andrew Hutchings
2018-02-24 11:07:24 -05:00
33 changed files with 337 additions and 174 deletions

View File

@@ -77,6 +77,9 @@ ENDIF("${isSystemDir}" STREQUAL "-1")
INCLUDE (configureEngine.cmake) INCLUDE (configureEngine.cmake)
# releasenum is used by external scripts for various tasks. Leave it alone.
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/releasenum.in ${CMAKE_CURRENT_BINARY_DIR}/build/releasenum IMMEDIATE)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/build/releasenum DESTINATION ${INSTALL_ENGINE} COMPONENT platform)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h.in ${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h.in ${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)

View File

@@ -7,5 +7,4 @@ fi
prefix=/usr/local prefix=/usr/local
echo "MariaDB ColumnStore RPM install completed"

View File

@@ -9,4 +9,3 @@ prefix=/usr/local
test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode
echo "MariaDB ColumnStore RPM install completed"

View File

@@ -7,6 +7,5 @@ fi
prefix=/usr/local prefix=/usr/local
echo "MariaDB ColumnStore RPM install completed"

View File

@@ -87,7 +87,7 @@ IF (EXISTS "/etc/SuSE-release")
set(SUSE_VERSION_NUMBER "${CMAKE_MATCH_1}") set(SUSE_VERSION_NUMBER "${CMAKE_MATCH_1}")
ENDIF () ENDIF ()
if (${REDHAT_VERSION_NUMBER} EQUAL 6) if (${REDHAT_VERSION_NUMBER} EQUAL 6)
SETA(CPACK_RPM_platform_PACKAGE_REQUIRES "expect" "mariadb-columnstore-libs" "snappy") SETA(CPACK_RPM_platform_PACKAGE_REQUIRES "expect" "mariadb-columnstore-libs" "mariadb-columnstore-shared" "snappy")
# Disable auto require as this will also try to pull Boost via RPM # Disable auto require as this will also try to pull Boost via RPM
SET(CPACK_RPM_PACKAGE_AUTOREQPROV " no") SET(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
elseif (${SUSE_VERSION_NUMBER} EQUAL 12) elseif (${SUSE_VERSION_NUMBER} EQUAL 12)
@@ -188,6 +188,7 @@ SET(CPACK_RPM_platform_USER_FILELIST
"/usr/local/mariadb/columnstore/etc/MessageFile.txt" "/usr/local/mariadb/columnstore/etc/MessageFile.txt"
"/usr/local/mariadb/columnstore/etc/ErrorMessage.txt" "/usr/local/mariadb/columnstore/etc/ErrorMessage.txt"
"/usr/local/mariadb/columnstore/local/module" "/usr/local/mariadb/columnstore/local/module"
"/usr/local/mariadb/columnstore/releasenum"
"/usr/local/mariadb/columnstore/bin/rollback" "/usr/local/mariadb/columnstore/bin/rollback"
"/usr/local/mariadb/columnstore/bin/editem" "/usr/local/mariadb/columnstore/bin/editem"
"/usr/local/mariadb/columnstore/bin/getConfig" "/usr/local/mariadb/columnstore/bin/getConfig"

View File

@@ -1155,6 +1155,12 @@ void JobList::abort()
for (i = 0; i < fProject.size(); i++) for (i = 0; i < fProject.size(); i++)
fProject[i]->abort(); fProject[i]->abort();
for (i = 0; i < fQuery.size(); i++)
fQuery[i]->join();
for (i = 0; i < fProject.size(); i++)
fProject[i]->join();
} }
} }

View File

@@ -415,6 +415,7 @@ void SubQueryTransformer::updateCorrelateInfo()
sc->schemaName(""); sc->schemaName("");
sc->tableName(fVtable.name()); sc->tableName(fVtable.name());
sc->tableAlias(fVtable.alias()); sc->tableAlias(fVtable.alias());
sc->viewName(fVtable.view());
sc->oid(fVtable.columnOid(k->second)); sc->oid(fVtable.columnOid(k->second));
sc->columnName(fVtable.columns()[k->second]->columnName()); sc->columnName(fVtable.columns()[k->second]->columnName());
const CalpontSystemCatalog::ColType& ct = fVtable.columnType(k->second); const CalpontSystemCatalog::ColType& ct = fVtable.columnType(k->second);

View File

@@ -5063,22 +5063,6 @@ void TupleAggregateStep::threadedAggregateRowGroups(uint32_t threadID)
if (more) if (more)
{ {
// Trying out a ramp-up strategy for starting the
// first phase threads to cut overhead on big systems
// processing small result
// sets. On every non-zero read from the input FIFO,
// and if there is more data to read, the
// first thread will start another thread until the
// maximum number is reached.
#if 0
if (threadID == 0 && fFirstPhaseThreadCount < fNumOfThreads &&
dlIn->more(fInputIter))
{
fFirstPhaseRunners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, fFirstPhaseThreadCount)));
fFirstPhaseThreadCount++;
}
#endif
fRowGroupIns[threadID].setData(&rgData); fRowGroupIns[threadID].setData(&rgData);
fMemUsage[threadID] += fRowGroupIns[threadID].getSizeWithStrings(); fMemUsage[threadID] += fRowGroupIns[threadID].getSizeWithStrings();
@@ -5364,29 +5348,17 @@ uint64_t TupleAggregateStep::doThreadedAggregate(ByteStream& bs, RowGroupDL* dlp
{ {
initializeMultiThread(); initializeMultiThread();
// This block of code starts all threads at the start vector<uint64_t> runners; // thread pool handles
fFirstPhaseThreadCount = fNumOfThreads; runners.reserve(fNumOfThreads); // to prevent a resize during use
fFirstPhaseRunners.clear();
fFirstPhaseRunners.reserve(fNumOfThreads); // to prevent a resize during use
// Start the aggregator threads
for (i = 0; i < fNumOfThreads; i++) for (i = 0; i < fNumOfThreads; i++)
{ {
fFirstPhaseRunners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, i))); runners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, i)));
} }
#if 0 // Now wait for all those threads
// This block of code starts one thread, relies on doThreadedAggregation() jobstepThreadPool.join(runners);
// For reasons unknown, this doesn't work right with threadpool
// to start more as needed
fFirstPhaseRunners.clear();
fFirstPhaseRunners.reserve(fNumOfThreads); // to prevent a resize during use
fFirstPhaseThreadCount = 1;
fFirstPhaseRunners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, 0)));
#endif
// Now wait for that thread plus all the threads it may have spawned
jobstepThreadPool.join(fFirstPhaseRunners);
fFirstPhaseRunners.clear();
} }
if (dynamic_cast<RowAggregationDistinct*>(fAggregator.get()) && fAggregator->aggMapKeyLength() > 0) if (dynamic_cast<RowAggregationDistinct*>(fAggregator.get()) && fAggregator->aggMapKeyLength() > 0)

View File

@@ -199,8 +199,6 @@ private:
bool fIsMultiThread; bool fIsMultiThread;
int fInputIter; // iterator int fInputIter; // iterator
boost::scoped_array<uint64_t> fMemUsage; boost::scoped_array<uint64_t> fMemUsage;
std::vector<uint64_t> fFirstPhaseRunners; // thread pool handles
uint32_t fFirstPhaseThreadCount;
boost::shared_ptr<int64_t> fSessionMemLimit; boost::shared_ptr<int64_t> fSessionMemLimit;
}; };

View File

@@ -28,8 +28,8 @@ DROP PROCEDURE IF EXISTS `total_usage` //
CREATE PROCEDURE total_usage () CREATE PROCEDURE total_usage ()
BEGIN BEGIN
SELECT SELECT
(SELECT format_filesize(sum(data_size)) TOTAL_DATA_SIZE FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS) TOTAL_DATA_SIZE, (SELECT columnstore_info.format_filesize(sum(data_size)) TOTAL_DATA_SIZE FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS) TOTAL_DATA_SIZE,
(SELECT format_filesize(sum(file_size)) TOTAL_DISK_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_FILES) TOTAL_DISK_USAGE; (SELECT columnstore_info.format_filesize(sum(file_size)) TOTAL_DISK_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_FILES) TOTAL_DISK_USAGE;
END // END //
DROP PROCEDURE IF EXISTS `table_usage` // DROP PROCEDURE IF EXISTS `table_usage` //
@@ -52,21 +52,21 @@ CREATE PROCEDURE table_usage (IN t_schema char(64), IN t_name char(64))
CREATE TABLE columnstore_info.columnstore_files engine=myisam as (select * from information_schema.columnstore_files); CREATE TABLE columnstore_info.columnstore_files engine=myisam as (select * from information_schema.columnstore_files);
ALTER TABLE columnstore_info.columnstore_files ADD INDEX `object_id` (`object_id`); ALTER TABLE columnstore_info.columnstore_files ADD INDEX `object_id` (`object_id`);
IF t_name IS NOT NULL THEN IF t_name IS NOT NULL THEN
SELECT TABLE_SCHEMA, TABLE_NAME, format_filesize(data) as DATA_DISK_USAGE, format_filesize(dict) as DICT_DISK_USAGE, format_filesize(data + dict) as TOTAL_USAGE FROM ( SELECT TABLE_SCHEMA, TABLE_NAME, columnstore_info.format_filesize(data) as DATA_DISK_USAGE, columnstore_info.format_filesize(dict) as DICT_DISK_USAGE, columnstore_info.format_filesize(data + dict) as TOTAL_USAGE FROM (
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
FROM FROM
columnstore_info.columnstore_columns ics where table_name = t_name and (table_schema = t_schema or t_schema IS NULL) columnstore_info.columnstore_columns ics where table_name = t_name and (table_schema = t_schema or t_schema IS NULL)
group by table_schema, table_name group by table_schema, table_name
) q; ) q;
ELSEIF t_schema IS NOT NULL THEN ELSEIF t_schema IS NOT NULL THEN
SELECT TABLE_SCHEMA, TABLE_NAME, format_filesize(data) as DATA_DISK_USAGE, format_filesize(dict) as DICT_DISK_USAGE, format_filesize(data + dict) as TOTAL_USAGE FROM ( SELECT TABLE_SCHEMA, TABLE_NAME, columnstore_info.format_filesize(data) as DATA_DISK_USAGE, columnstore_info.format_filesize(dict) as DICT_DISK_USAGE, columnstore_info.format_filesize(data + dict) as TOTAL_USAGE FROM (
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
FROM FROM
columnstore_info.columnstore_columns ics where table_schema = t_schema columnstore_info.columnstore_columns ics where table_schema = t_schema
group by table_schema, table_name group by table_schema, table_name
) q; ) q;
ELSE ELSE
SELECT TABLE_SCHEMA, TABLE_NAME, format_filesize(data) as DATA_DISK_USAGE, format_filesize(dict) as DICT_DISK_USAGE, format_filesize(data + dict) as TOTAL_USAGE FROM ( SELECT TABLE_SCHEMA, TABLE_NAME, columnstore_info.format_filesize(data) as DATA_DISK_USAGE, columnstore_info.format_filesize(dict) as DICT_DISK_USAGE, columnstore_info.format_filesize(data + dict) as TOTAL_USAGE FROM (
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
FROM FROM
columnstore_info.columnstore_columns ics columnstore_info.columnstore_columns ics

View File

@@ -1870,7 +1870,7 @@ int ProcessDDLStatement(string& ddlStatement, string& schema, const string& tabl
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "Use of the MySQL auto_increment syntax is not supported in Columnstore. If you wish to create an auto increment column in Columnstore, please consult the Columnstore SQL Syntax Guide for the correct usage."); thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "Use of the MySQL auto_increment syntax is not supported in Columnstore. If you wish to create an auto increment column in Columnstore, please consult the Columnstore SQL Syntax Guide for the correct usage.");
} }
// MCOL-867. MariaDB RENAME TABLE statement supports WAIT|NOWAIT options since 10.3.0 but Columnstore isn't yet. // MCOL-867. MariaDB RENAME TABLE statement supports WAIT|NOWAIT options since 10.3.0 but Columnstore isn't yet.
else if(ddlStatement.find("WAIT") != string::npos || ddlStatement.find("NOWAIT") != string::npos) else if (ddlStatement.find("WAIT") != string::npos || ddlStatement.find("NOWAIT") != string::npos)
{ {
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "WAIT and NOWAIT options are not supported in Columnstore. Please consult the Columnstore SQL Syntax Guide for the correct usage."); thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "WAIT and NOWAIT options are not supported in Columnstore. Please consult the Columnstore SQL Syntax Guide for the correct usage.");
} }

View File

@@ -2029,7 +2029,7 @@ extern "C"
#ifdef _MSC_VER #ifdef _MSC_VER
__declspec(dllexport) __declspec(dllexport)
#endif #endif
// Return 1 if system is read only; 0 if writeable // Return non-zero if system is read only; 0 if writeable
long long mcssystemreadonly(UDF_INIT* initid, UDF_ARGS* args, long long mcssystemreadonly(UDF_INIT* initid, UDF_ARGS* args,
char* is_null, char* error) char* is_null, char* error)
{ {
@@ -2038,10 +2038,15 @@ extern "C"
try try
{ {
if (dbrm.isReadWrite()) // Returns 0 for writable, 5 for read only if (dbrm.getSystemSuspended())
{ {
rtn = 1; rtn = 1;
} }
if (dbrm.isReadWrite() > 0) // Returns 0 for writable, 5 for read only
{
rtn = 2;
}
} }
catch (...) catch (...)
{ {
@@ -2067,47 +2072,6 @@ extern "C"
{ {
} }
#ifdef _MSC_VER
__declspec(dllexport)
#endif
// Return 1 if system is read only; 0 if writeable
long long mcswritessuspended(UDF_INIT* initid, UDF_ARGS* args,
char* is_null, char* error)
{
long long rtn = 0;
DBRM dbrm(true);
try
{
if (dbrm.getSystemSuspended())
{
rtn = 1;
}
}
catch (...)
{
*error = 1;
rtn = 1;
}
return rtn;
}
#ifdef _MSC_VER
__declspec(dllexport)
#endif
my_bool mcswritessuspended_init(UDF_INIT* initid, UDF_ARGS* args, char* message)
{
return 0;
}
#ifdef _MSC_VER
__declspec(dllexport)
#endif
void mcswritessuspended_deinit(UDF_INIT* initid)
{
}
#define MAXSTRINGLENGTH 50 #define MAXSTRINGLENGTH 50
const char* PmSmallSideMaxMemory = "pmmaxmemorysmallside"; const char* PmSmallSideMaxMemory = "pmmaxmemorysmallside";

View File

@@ -84,7 +84,6 @@ CREATE FUNCTION idbpartition RETURNS STRING soname 'libcalmysql.so';
CREATE FUNCTION idblocalpm RETURNS INTEGER soname 'libcalmysql.so'; CREATE FUNCTION idblocalpm RETURNS INTEGER soname 'libcalmysql.so';
CREATE FUNCTION mcssystemready RETURNS INTEGER soname 'libcalmysql.so'; CREATE FUNCTION mcssystemready RETURNS INTEGER soname 'libcalmysql.so';
CREATE FUNCTION mcssystemreadonly RETURNS INTEGER soname 'libcalmysql.so'; CREATE FUNCTION mcssystemreadonly RETURNS INTEGER soname 'libcalmysql.so';
CREATE FUNCTION mcswritessuspended RETURNS INTEGER soname 'libcalmysql.so';
CREATE DATABASE IF NOT EXISTS infinidb_vtable; CREATE DATABASE IF NOT EXISTS infinidb_vtable;
CREATE DATABASE IF NOT EXISTS infinidb_querystats; CREATE DATABASE IF NOT EXISTS infinidb_querystats;

View File

@@ -1242,10 +1242,12 @@ public:
} }
}; };
#ifdef _MSC_VER
void exit_(int) void exit_(int)
{ {
exit(0); exit(0);
} }
#endif
void added_a_pm(int) void added_a_pm(int)
{ {
@@ -1293,7 +1295,6 @@ void printTotalUmMemory(int sig)
void setupSignalHandlers() void setupSignalHandlers()
{ {
#ifdef _MSC_VER #ifdef _MSC_VER
signal(SIGSEGV, exit_);
signal(SIGINT, exit_); signal(SIGINT, exit_);
signal(SIGTERM, exit_); signal(SIGTERM, exit_);
#else #else
@@ -1309,6 +1310,11 @@ void setupSignalHandlers()
sigaction(SIGHUP, &ign, 0); sigaction(SIGHUP, &ign, 0);
ign.sa_handler = printTotalUmMemory; ign.sa_handler = printTotalUmMemory;
sigaction(SIGUSR1, &ign, 0); sigaction(SIGUSR1, &ign, 0);
memset(&ign, 0, sizeof(ign));
ign.sa_handler = fatalHandler;
sigaction(SIGSEGV, &ign, 0);
sigaction(SIGABRT, &ign, 0);
sigaction(SIGFPE, &ign, 0);
#endif #endif
} }
@@ -1389,6 +1395,9 @@ int main(int argc, char* argv[])
string systemLang = "C"; string systemLang = "C";
systemLang = funcexp::utf8::idb_setlocale(); systemLang = funcexp::utf8::idb_setlocale();
// This is unset due to the way we start it
program_invocation_short_name = const_cast<char*>("ExeMgr");
gDebug = 0; gDebug = 0;
bool eFlg = false; bool eFlg = false;
int c; int c;

View File

@@ -19,6 +19,10 @@
<IPAddr>0.0.0.0</IPAddr> <IPAddr>0.0.0.0</IPAddr>
<Port>8603</Port> <Port>8603</Port>
</ProcMgr> </ProcMgr>
<ProcMgr_Alarm>
<IPAddr>127.0.0.1</IPAddr>
<Port>8606</Port>
</ProcMgr_Alarm>
<ProcStatusControl> <ProcStatusControl>
<IPAddr>0.0.0.0</IPAddr> <IPAddr>0.0.0.0</IPAddr>
<Port>8604</Port> <Port>8604</Port>

View File

@@ -14,6 +14,10 @@
<IPAddr>127.0.0.1</IPAddr> <IPAddr>127.0.0.1</IPAddr>
<Port>8603</Port> <Port>8603</Port>
</ProcMgr> </ProcMgr>
<ProcMgr_Alarm>
<IPAddr>127.0.0.1</IPAddr>
<Port>8606</Port>
</ProcMgr_Alarm>
<ProcStatusControl> <ProcStatusControl>
<IPAddr>127.0.0.1</IPAddr> <IPAddr>127.0.0.1</IPAddr>
<Port>8604</Port> <Port>8604</Port>

View File

@@ -1,2 +1,2 @@
/usr/local/mariadb/columnstore/lib /usr/local/mariadb/columnstore/lib
/usr/local/mariadb/columnstore/mysql/lib

View File

@@ -1,6 +1,6 @@
# #
# MariaDb Columnstore Log Rotate file that gets installed in /etc/logrotate.d # MariaDB ColumnStore Log Rotate file that gets installed in /etc/logrotate.d
# as part of the RPM installation # as part of the package installation
# #
/var/log/mariadb/columnstore/*.log { /var/log/mariadb/columnstore/*.log {
@@ -10,14 +10,7 @@
dateext dateext
copytruncate copytruncate
olddir /var/log/mariadb/columnstore/archive olddir /var/log/mariadb/columnstore/archive
} su root root
/var/log/mariadb/columnstore/*.log1 {
missingok
rotate 7
daily
nocreate
compress
olddir /var/log/mariadb/columnstore/archive
} }
/usr/local/mariadb/columnstore/etc/Columnstore.xml { /usr/local/mariadb/columnstore/etc/Columnstore.xml {
daily daily
@@ -32,4 +25,5 @@
dateext dateext
copytruncate copytruncate
olddir /usr/local/mariadb/columnstore/mysql/db olddir /usr/local/mariadb/columnstore/mysql/db
su root root
} }

View File

@@ -230,10 +230,6 @@ if [ $user = "root" ]; then
fi fi
fi fi
#setup MariaDB Columnstore system logging
sed -i -e s/groupname/$user/g $installdir/bin/columnstoreSyslog7
sed -i -e s/username/$user/g $installdir/bin/columnstoreSyslog7
if [ $user = "root" ]; then if [ $user = "root" ]; then
$installdir/bin/syslogSetup.sh install > /tmp/syslog_install.log 2>&1 $installdir/bin/syslogSetup.sh install > /tmp/syslog_install.log 2>&1
rm -f /etc/default/columnstore rm -f /etc/default/columnstore
@@ -255,10 +251,6 @@ else
$SUDO chmod 666 /etc/fstab $SUDO chmod 666 /etc/fstab
fi fi
# install Columnstore Log Rotate File
$SUDO cp $installdir/bin/columnstoreLogRotate /etc/logrotate.d/columnstore > /dev/null 2>&1
$SUDO chmod 644 /etc/logrotate.d/columnstore
#check if MariaDB Columnstore system logging was setup #check if MariaDB Columnstore system logging was setup
cat /tmp/syslog_install.log | grep 'No System Logging' >/dev/null 2>&1 cat /tmp/syslog_install.log | grep 'No System Logging' >/dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
@@ -276,8 +268,11 @@ fi
#log install message #log install message
test -f $installdir/post/functions && . $installdir/post/functions test -f $installdir/post/functions && . $installdir/post/functions
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****" if [ $user = "root" ]; then
$installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
else
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
fi
#setup hadoop #setup hadoop
hadoop=`which hadoop 2>/dev/null` hadoop=`which hadoop 2>/dev/null`
if [ -z "$hadoop" ]; then if [ -z "$hadoop" ]; then

View File

@@ -166,17 +166,21 @@ if [ ! -z "$syslog_conf" ] ; then
#set the syslog for ColumnStore logging #set the syslog for ColumnStore logging
# remove older version incase it was installed by previous build # remove older version incase it was installed by previous build
$SUDO rm -rf /etc/rsyslog.d/columnstore.conf $SUDO rm -rf /etc/rsyslog.d/columnstore.conf
if [ $rsyslog7 == 1 ]; then if [ $rsyslog7 == 1 ]; then
sed -i -e s/groupname/adm/g ${columnstoreSyslogFile7}
sed -i -e s/username/syslog/g ${columnstoreSyslogFile7}
$SUDO rm -f /etc/rsyslog.d/49-columnstore.conf $SUDO rm -f /etc/rsyslog.d/49-columnstore.conf
$SUDO cp ${columnstoreSyslogFile7} ${syslog_conf} $SUDO cp ${columnstoreSyslogFile7} ${syslog_conf}
else else
$SUDO cp ${columnstoreSyslogFile} ${syslog_conf} $SUDO cp ${columnstoreSyslogFile} ${syslog_conf}
fi fi
fi fi
if [ $rsyslog7 == 1 ]; then # install Columnstore Log Rotate File
$SUDO chown -R syslog:adm /var/log/mariadb/columnstore >/dev/null 2>&1 $SUDO cp $installdir/bin/columnstoreLogRotate /etc/logrotate.d/columnstore > /dev/null 2>&1
fi $SUDO chmod 644 /etc/logrotate.d/columnstore
restartSyslog restartSyslog
fi fi

View File

@@ -521,8 +521,7 @@ enum PROC_MGT_MSG_REQUEST
ENABLEMYSQLREP, ENABLEMYSQLREP,
DISABLEMYSQLREP, DISABLEMYSQLREP,
GLUSTERASSIGN, GLUSTERASSIGN,
GLUSTERUNASSIGN, GLUSTERUNASSIGN
PROCESSALARM
}; };
/** @brief Process Management - Mgr to Mon request options /** @brief Process Management - Mgr to Mon request options

View File

@@ -28,10 +28,10 @@
#include <vector> #include <vector>
#include <iterator> #include <iterator>
#include "messagequeue.h"
#include "alarmglobal.h" #include "alarmglobal.h"
#include "liboamcpp.h" #include "liboamcpp.h"
#include "installdir.h" #include "installdir.h"
#include "messagequeue.h"
using namespace std; using namespace std;
using namespace oam; using namespace oam;
@@ -409,7 +409,7 @@ void configAlarm (Alarm& calAlarm)
/***************************************************************************************** /*****************************************************************************************
* @brief sendAlarmReport API * @brief sendAlarmReport API
* *
* purpose: Process Alarm Report * purpose: Send Alarm Report
* *
*****************************************************************************************/ *****************************************************************************************/
void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int state, void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int state,
@@ -484,16 +484,73 @@ void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int st
else else
processName = repProcessName; processName = repProcessName;
Alarm calAlarm; int returnStatus = API_SUCCESS; //default
ByteStream msg1;
calAlarm.setAlarmID (alarmID); // setup message
calAlarm.setComponentID (componentID); msg1 << (ByteStream::byte) alarmID;
calAlarm.setState (state); msg1 << (std::string) componentID;
calAlarm.setSname (ModuleName); msg1 << (ByteStream::byte) state;
calAlarm.setPname (processName); msg1 << (std::string) ModuleName;
calAlarm.setPid (pid); msg1 << (std::string) processName;
calAlarm.setTid (tid); msg1 << (ByteStream::byte) pid;
msg1 << (ByteStream::byte) tid;
try
{
//send the msg to Process Manager
MessageQueueClient procmgr("ProcMgr_Alarm");
procmgr.write(msg1);
// shutdown connection
procmgr.shutdown();
}
catch (std::runtime_error& e)
{
LoggingID lid(11);
MessageLog ml(lid);
Message msg;
Message::Args args;
args.add("sendAlarmReport error:");
args.add(e.what());
msg.format(args);
ml.logErrorMessage(msg);
}
catch (std::exception& e)
{
LoggingID lid(11);
MessageLog ml(lid);
Message msg;
Message::Args args;
args.add("sendAlarmReport error:");
args.add(e.what());
msg.format(args);
ml.logErrorMessage(msg);
}
catch (...)
{
LoggingID lid(11);
MessageLog ml(lid);
Message msg;
Message::Args args;
args.add("sendAlarmReport error:");
args.add("general failure");
msg.format(args);
ml.logErrorMessage(msg);
}
return;
#endif //SKIP_ALARM
}
/*****************************************************************************************
* @brief processAlarmReport API
*
* purpose: Process Alarm Report
*
*****************************************************************************************/
void ALARMManager::processAlarmReport (Alarm& calAlarm)
{
// Get alarm configuration // Get alarm configuration
try try
{ {
@@ -512,7 +569,7 @@ void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int st
} }
return; return;
#endif //SKIP_ALARM
} }
/***************************************************************************************** /*****************************************************************************************

View File

@@ -78,6 +78,8 @@ public:
std::string repProcessName = ""); std::string repProcessName = "");
EXPORT void processAlarmReport (Alarm& calAlarm);
/** @brief return active alarm list /** @brief return active alarm list
* *
* @param AlarmList the alarm map reference to store alarms * @param AlarmList the alarm map reference to store alarms

View File

@@ -58,7 +58,7 @@ const int ArgNum = 10;
const int DescNumMax = 10; const int DescNumMax = 10;
const int cmdNum = 68; const int cmdNum = 68;
const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/uiCommands.log"; const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/mcsadmin.log";
std::ofstream logFile; std::ofstream logFile;
/** /**

View File

@@ -2316,7 +2316,8 @@ int main(int argc, char* argv[])
sysConfig->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr); sysConfig->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr);
sysConfig->setConfig(parentProcessMonitor, "Port", "8800"); sysConfig->setConfig(parentProcessMonitor, "Port", "8800");
sysConfig->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr); sysConfig->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr);
//sysConfig->setConfig("ProcHeartbeatControl", "IPAddr", parentOAMModuleIPAddr); sysConfig->setConfig("ProcHeartbeatControl", "IPAddr", parentOAMModuleIPAddr);
sysConfig->setConfig("ProcMgr_Alarm", "IPAddr", parentOAMModuleIPAddr);
sysConfig->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr); sysConfig->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr);
string parentServerMonitor = parentOAMModuleName + "_ServerMonitor"; string parentServerMonitor = parentOAMModuleName + "_ServerMonitor";
sysConfig->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr); sysConfig->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr);
@@ -3227,7 +3228,7 @@ int main(int argc, char* argv[])
if ( EEPackageType == "rpm") if ( EEPackageType == "rpm")
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.rpm"; columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.rpm";
else if ( EEPackageType == "deb") else if ( EEPackageType == "deb")
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.deb"; columnstorePackage = HOME + "/" + "mariadb-columnstore-*" + systemsoftware.Version + "*.deb";
else else
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.bin.tar.gz"; columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.bin.tar.gz";

View File

@@ -78,6 +78,7 @@ extern bool startFailOver;
extern bool gOAMParentModuleFlag; extern bool gOAMParentModuleFlag;
static void messageThread(Configuration config); static void messageThread(Configuration config);
static void alarmMessageThread(Configuration config);
static void sigUser1Handler(int sig); static void sigUser1Handler(int sig);
static void startMgrProcessThread(); static void startMgrProcessThread();
static void hdfsActiveAlarmsPushingThread(); static void hdfsActiveAlarmsPushingThread();
@@ -280,6 +281,13 @@ int main(int argc, char** argv)
pthread_t MessageThread; pthread_t MessageThread;
int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config); int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config);
if ( ret != 0 )
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
// create alarm message thread
pthread_t AlarmMessageThread;
ret = pthread_create (&AlarmMessageThread, NULL, (void* (*)(void*)) &alarmMessageThread, &config);
if ( ret != 0 ) if ( ret != 0 )
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR); log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
@@ -377,6 +385,7 @@ int main(int argc, char** argv)
string IPaddr = (*pt1).IPAddr; string IPaddr = (*pt1).IPAddr;
sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr); sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr);
sysConfig->setConfig("ProcMgr_Alarm", "IPAddr", IPaddr);
log.writeLog(__LINE__, "set ProcMgr IPaddr to " + IPaddr, LOG_TYPE_DEBUG); log.writeLog(__LINE__, "set ProcMgr IPaddr to " + IPaddr, LOG_TYPE_DEBUG);
@@ -406,6 +415,13 @@ int main(int argc, char** argv)
pthread_t MessageThread; pthread_t MessageThread;
int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config); int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config);
if ( ret != 0 )
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
// create alarm message thread
pthread_t AlarmMessageThread;
ret = pthread_create (&AlarmMessageThread, NULL, (void* (*)(void*)) &alarmMessageThread, &config);
if ( ret != 0 ) if ( ret != 0 )
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR); log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
} }
@@ -513,8 +529,143 @@ static void messageThread(Configuration config)
sleep(60); sleep(60);
} }
} }
}
return; /******************************************************************************************
* @brief alarmMesssageThread
*
* purpose: Read incoming alarm messages
*
******************************************************************************************/
static void alarmMessageThread(Configuration config)
{
ProcessLog log;
ProcessManager processManager(config, log);
Oam oam;
ByteStream msg;
//check for running active, then launch
while (true)
{
if ( !runStandby)
break;
sleep (1);
}
log.writeLog(__LINE__, "Alarm Message Thread started ..", LOG_TYPE_DEBUG);
//read and cleanup port before trying to use
try
{
Config* sysConfig = Config::makeConfig();
string port = sysConfig->getConfig("ProcMgr_Alarm", "Port");
string cmd = "fuser -k " + port + "/tcp >/dev/null 2>&1";
if ( !rootUser)
cmd = "sudo fuser -k " + port + "/tcp >/dev/null 2>&1";
system(cmd.c_str());
}
catch (...)
{
}
//
//waiting for request
//
IOSocket fIos;
for (;;)
{
try
{
MessageQueueServer procmgr("ProcMgr_Alarm");
for (;;)
{
try
{
fIos = procmgr.accept();
try
{
msg = fIos.read();
if (msg.length() <= 0)
continue;
//log.writeLog(__LINE__, "MSG RECEIVED: Process Alarm Message");
ByteStream::byte alarmID;
std::string componentID;
ByteStream::byte state;
std::string ModuleName;
std::string processName;
ByteStream::byte pid;
ByteStream::byte tid;
msg >> alarmID;
msg >> componentID;
msg >> state;
msg >> ModuleName;
msg >> processName;
msg >> pid;
msg >> tid;
Alarm calAlarm;
calAlarm.setAlarmID (alarmID);
calAlarm.setComponentID (componentID);
calAlarm.setState (state);
calAlarm.setSname (ModuleName);
calAlarm.setPname (processName);
calAlarm.setPid (pid);
calAlarm.setTid (tid);
ALARMManager aManager;
aManager.processAlarmReport(calAlarm);
}
catch (exception& ex)
{
string error = ex.what();
log.writeLog(__LINE__, "EXCEPTION ERROR on read for ProcMgr_Alarm:" + error, LOG_TYPE_ERROR);
continue;
}
catch (...)
{
log.writeLog(__LINE__, "EXCEPTION ERROR on read for ProcMgr_Alarm: Caught unknown exception!", LOG_TYPE_ERROR);
continue;
}
}
catch (exception& ex)
{
string error = ex.what();
log.writeLog(__LINE__, "EXCEPTION ERROR on accept for ProcMgr_Alarm:" + error, LOG_TYPE_ERROR);
continue;
}
catch (...)
{
log.writeLog(__LINE__, "EXCEPTION ERROR on accept for ProcMgr_Alarm: Caught unknown exception!", LOG_TYPE_ERROR);
continue;
}
}
}
catch (exception& ex)
{
string error = ex.what();
log.writeLog(__LINE__, "EXCEPTION ERROR on MessageQueueServer for ProcMgr_Alarm:" + error, LOG_TYPE_ERROR);
sleep(1);
}
catch (...)
{
log.writeLog(__LINE__, "EXCEPTION ERROR on MessageQueueServer for ProcMgr_Alarm: Caught unknown exception!", LOG_TYPE_ERROR);
sleep(1);
}
}
} }
/****************************************************************************************** /******************************************************************************************

View File

@@ -2909,44 +2909,6 @@ void processMSG(messageqcpp::IOSocket* cfIos)
break; break;
} }
/*
case PROCESSALARM:
{
log.writeLog(__LINE__, "MSG RECEIVED: Process Alarm Message");
ByteStream::byte alarmID;
std::string componentID;
ByteStream::byte state;
std::string ModuleName;
std::string processName;
ByteStream::byte pid;
ByteStream::byte tid;
msg >> alarmID;
msg >> componentID;
msg >> state;
msg >> ModuleName;
msg >> processName;
msg >> pid;
msg >> tid;
Alarm calAlarm;
calAlarm.setAlarmID (alarmID);
calAlarm.setComponentID (componentID);
calAlarm.setState (state);
calAlarm.setSname (ModuleName);
calAlarm.setPname (processName);
calAlarm.setPid (pid);
calAlarm.setTid (tid);
ALARMManager aManager;
aManager.processAlarmReport(calAlarm);
break;
}
*/
default: default:
log.writeLog(__LINE__, "MSG RECEIVED: Invalid type" ); log.writeLog(__LINE__, "MSG RECEIVED: Invalid type" );
break; break;
@@ -9524,6 +9486,7 @@ int ProcessManager::switchParentOAMModule(std::string newActiveModuleName)
newActiveIPaddr = (*pt2).IPAddr; newActiveIPaddr = (*pt2).IPAddr;
sysConfig4->setConfig("ProcMgr", "IPAddr", newActiveIPaddr); sysConfig4->setConfig("ProcMgr", "IPAddr", newActiveIPaddr);
sysConfig4->setConfig("ProcMgr_Alarm", "IPAddr", newActiveIPaddr);
sysConfig4->setConfig("ProcStatusControl", "IPAddr", newActiveIPaddr); sysConfig4->setConfig("ProcStatusControl", "IPAddr", newActiveIPaddr);
sysConfig4->setConfig("DBRM_Controller", "IPAddr", newActiveIPaddr); sysConfig4->setConfig("DBRM_Controller", "IPAddr", newActiveIPaddr);
@@ -10159,6 +10122,7 @@ int ProcessManager::OAMParentModuleChange()
localIPaddr = (*pt1).IPAddr; localIPaddr = (*pt1).IPAddr;
sysConfig4->setConfig("ProcMgr", "IPAddr", localIPaddr); sysConfig4->setConfig("ProcMgr", "IPAddr", localIPaddr);
sysConfig4->setConfig("ProcMgr_Alarm", "IPAddr", localIPaddr);
sysConfig4->setConfig("ProcStatusControl", "IPAddr", localIPaddr); sysConfig4->setConfig("ProcStatusControl", "IPAddr", localIPaddr);
sysConfig4->setConfig("DBRM_Controller", "IPAddr", localIPaddr); sysConfig4->setConfig("DBRM_Controller", "IPAddr", localIPaddr);

View File

@@ -80,6 +80,7 @@ void stopSystemThread(oam::DeviceNetworkList devicenetworklist);
void startModuleThread(std::string moduleName); void startModuleThread(std::string moduleName);
void stopModuleThread(std::string moduleName); void stopModuleThread(std::string moduleName);
void processMSG(messageqcpp::IOSocket* fIos); void processMSG(messageqcpp::IOSocket* fIos);
void sendUpgradeRequest(); void sendUpgradeRequest();
/** @brief Timeset for Milleseconds /** @brief Timeset for Milleseconds

View File

@@ -373,6 +373,7 @@ int main(int argc, char** argv)
string IPaddr = (*pt1).IPAddr; string IPaddr = (*pt1).IPAddr;
sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr); sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr);
sysConfig->setConfig("ProcMgr_Alarm", "IPAddr", IPaddr);
log.writeLog(__LINE__, "set ProcMgr IPaddr to Old Standby Module: " + IPaddr, LOG_TYPE_DEBUG); log.writeLog(__LINE__, "set ProcMgr IPaddr to Old Standby Module: " + IPaddr, LOG_TYPE_DEBUG);
@@ -781,7 +782,7 @@ int main(int argc, char** argv)
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR); log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
//mysql status monitor thread //mysql status monitor thread
if ( ( config.ServerInstallType() == oam::INSTALL_COMBINE_DM_UM_PM ) || if ( ( config.ServerInstallType() != oam::INSTALL_COMBINE_DM_UM_PM ) ||
(PMwithUM == "y") ) (PMwithUM == "y") )
{ {

View File

@@ -1060,6 +1060,7 @@ int main(int argc, char* argv[])
sysConfigNew->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr); sysConfigNew->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr);
sysConfigNew->setConfig(parentProcessMonitor, "Port", "8800"); sysConfigNew->setConfig(parentProcessMonitor, "Port", "8800");
sysConfigNew->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr); sysConfigNew->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr);
sysConfigNew->setConfig("ProcMgr_Alarm", "IPAddr", parentOAMModuleIPAddr);
sysConfigNew->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr); sysConfigNew->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr);
string parentServerMonitor = systemParentOAMModuleName + "_ServerMonitor"; string parentServerMonitor = systemParentOAMModuleName + "_ServerMonitor";
sysConfigNew->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr); sysConfigNew->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr);

View File

@@ -362,6 +362,20 @@ CalpontSystemCatalog::ColType Func_simple_case::operationType(FunctionParm& fp,
} }
bool Func_simple_case::getBoolVal(Row& row,
FunctionParm& parm,
bool& isNull,
CalpontSystemCatalog::ColType& operationColType)
{
uint64_t i = simple_case_cmp(row, parm, isNull, operationColType);
if (isNull)
return joblist::BIGINTNULL;
return parm[i + 1]->data()->getBoolVal(row, isNull);
}
int64_t Func_simple_case::getIntVal(Row& row, int64_t Func_simple_case::getIntVal(Row& row,
FunctionParm& parm, FunctionParm& parm,
bool& isNull, bool& isNull,
@@ -465,6 +479,18 @@ CalpontSystemCatalog::ColType Func_searched_case::operationType(FunctionParm& fp
return caseOperationType(fp, resultType, false); return caseOperationType(fp, resultType, false);
} }
bool Func_searched_case::getBoolVal(Row& row,
FunctionParm& parm,
bool& isNull,
CalpontSystemCatalog::ColType&)
{
uint64_t i = searched_case_cmp(row, parm, isNull);
if (isNull)
return joblist::BIGINTNULL;
return parm[i + 1]->data()->getBoolVal(row, isNull);
}
int64_t Func_searched_case::getIntVal(Row& row, int64_t Func_searched_case::getIntVal(Row& row,
FunctionParm& parm, FunctionParm& parm,

View File

@@ -70,6 +70,11 @@ public:
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType); execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType);
bool getBoolVal(rowgroup::Row& row,
FunctionParm& fp,
bool& isNull,
execplan::CalpontSystemCatalog::ColType& op_ct);
int64_t getIntVal(rowgroup::Row& row, int64_t getIntVal(rowgroup::Row& row,
FunctionParm& fp, FunctionParm& fp,
bool& isNull, bool& isNull,
@@ -112,6 +117,11 @@ public:
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType); execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType);
bool getBoolVal(rowgroup::Row& row,
FunctionParm& fp,
bool& isNull,
execplan::CalpontSystemCatalog::ColType& op_ct);
int64_t getIntVal(rowgroup::Row& row, int64_t getIntVal(rowgroup::Row& row,
FunctionParm& fp, FunctionParm& fp,
bool& isNull, bool& isNull,

View File

@@ -11,7 +11,6 @@ CREATE FUNCTION calcleartablelock RETURNS STRING SONAME 'libcalmysql.dll';
CREATE FUNCTION calgetsqlcount RETURNS STRING SONAME 'libcalmysql.dll'; CREATE FUNCTION calgetsqlcount RETURNS STRING SONAME 'libcalmysql.dll';
CREATE FUNCTION mcssystemready RETURNS INTEGER SONAME 'libcalmysql.dll'; CREATE FUNCTION mcssystemready RETURNS INTEGER SONAME 'libcalmysql.dll';
CREATE FUNCTION mcssystemreadonly RETURNS INTEGER SONAME 'libcalmysql.dll'; CREATE FUNCTION mcssystemreadonly RETURNS INTEGER SONAME 'libcalmysql.dll';
CREATE FUNCTION mcswritessuspended RETURNS INTEGER SONAME 'libcalmysql.dll';
create database if not exists calpontsys; create database if not exists calpontsys;
use calpontsys; use calpontsys;