mirror of
https://github.com/rsyslog/loganalyzer.git
synced 2025-09-26 03:09:21 +02:00
Added Trigger Support for PostGRESQL PDO Driver in PDO LogStream Class
This commit is contained in:
parent
4e133d3a70
commit
739598874e
@ -331,13 +331,16 @@ class LogStreamPDO extends LogStream {
|
|||||||
$szDBTriggerField = $dbmapping[$szTableType]['DBMAPPINGS'][$myTriggerProperty];
|
$szDBTriggerField = $dbmapping[$szTableType]['DBMAPPINGS'][$myTriggerProperty];
|
||||||
|
|
||||||
// Create Triggername
|
// Create Triggername
|
||||||
$szTriggerName = $szDBName . "_" . $szTableName . "_" . $szDBTriggerField;
|
$szTriggerName = strtolower($szDBName . "_" . $szTableName . "_" . $szDBTriggerField);
|
||||||
|
|
||||||
// Try to find logstream trigger
|
// Try to find logstream trigger
|
||||||
if ( count($arrIndexTriggers) > 0 )
|
if ( count($arrIndexTriggers) > 0 )
|
||||||
{
|
{
|
||||||
if ( in_array($szTriggerName, $arrIndexTriggers) )
|
if ( in_array($szTriggerName, $arrIndexTriggers) )
|
||||||
|
{
|
||||||
|
OutputDebugMessage("LogStreamPDO|VerifyChecksumTrigger: Found TRIGGER '" . $szTriggerName. "' for table '" . $szTableName . "'", DEBUG_ULTRADEBUG);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Index is missing for this field!
|
// Index is missing for this field!
|
||||||
@ -452,16 +455,33 @@ class LogStreamPDO extends LogStream {
|
|||||||
$szTableName = $this->_logStreamConfigObj->DBTableName;
|
$szTableName = $this->_logStreamConfigObj->DBTableName;
|
||||||
|
|
||||||
// Create Triggername
|
// Create Triggername
|
||||||
$szTriggerName = $szDBName . "_" . $szTableName . "_" . $myDBTriggerField;
|
$szTriggerName = strtolower($szDBName . "_" . $szTableName . "_" . $myDBTriggerField);
|
||||||
|
|
||||||
// TODO if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
|
|
||||||
// Create TRIGGER SQL!
|
// Create TRIGGER SQL!
|
||||||
$szSql = "CREATE TRIGGER " . $szTriggerName . " BEFORE INSERT ON `" . $szTableName . "`
|
if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
|
||||||
|
$szSql ="CREATE TRIGGER " . $szTriggerName . " BEFORE INSERT ON `" . $szTableName . "`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
SET NEW." . $myDBTriggerCheckSumField . " = crc32(NEW." . $myDBTriggerField . ");
|
SET NEW." . $myDBTriggerCheckSumField . " = crc32(NEW." . $myDBTriggerField . ");
|
||||||
END
|
END
|
||||||
;";
|
;";
|
||||||
|
else if ( $this->_logStreamConfigObj->DBType == DB_PGSQL )
|
||||||
|
// Experimental Trigger Support for POSTGRESQL
|
||||||
|
$szSql ="
|
||||||
|
CREATE LANGUAGE plpgsql ;
|
||||||
|
CREATE FUNCTION " . $szTriggerName . "() RETURNS trigger AS $" . $szTriggerName . "$
|
||||||
|
BEGIN
|
||||||
|
NEW." . $myDBTriggerCheckSumField . " := hashtext(NEW." . $myDBTriggerField . ");
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$" . $szTriggerName . "$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE TRIGGER " . $szTriggerName . " BEFORE INSERT OR UPDATE ON \"" . $szTableName . "\"
|
||||||
|
FOR EACH ROW EXECUTE PROCEDURE " . $szTriggerName . "();
|
||||||
|
";
|
||||||
|
else
|
||||||
|
// NOT SUPPORTED
|
||||||
|
return null;
|
||||||
|
|
||||||
return $szSql;
|
return $szSql;
|
||||||
}
|
}
|
||||||
@ -2298,9 +2318,15 @@ class LogStreamPDO extends LogStream {
|
|||||||
// Init Array
|
// Init Array
|
||||||
$arrIndexTriggers = array();
|
$arrIndexTriggers = array();
|
||||||
|
|
||||||
// TODO if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
|
|
||||||
// Create SQL and Get INDEXES for table!
|
// Create SQL and Get INDEXES for table!
|
||||||
$szSql = "SHOW TRIGGERS";
|
if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
|
||||||
|
$szSql = "SHOW TRIGGERS";
|
||||||
|
else if ( $this->_logStreamConfigObj->DBType == DB_PGSQL )
|
||||||
|
$szSql = "select tgname as \"Trigger\" from pg_trigger;";
|
||||||
|
else
|
||||||
|
// Not supported in this case!
|
||||||
|
return null;
|
||||||
|
|
||||||
$myQuery = $this->_dbhandle->query($szSql);
|
$myQuery = $this->_dbhandle->query($szSql);
|
||||||
if ($myQuery)
|
if ($myQuery)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user