From 0e7783c75e301b110008c13cf035eaf3ee30ae21 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 13 Jan 2016 19:10:28 +0100 Subject: [PATCH] lots of pg fixes --- cron/qq/SYS_CRON_GET.php | 2 +- cron/qq/SYS_CRON_LAST_VISIT.php | 2 +- db/result/ResultPostgres.php | 2 +- .../saimod_sys_cache/qq/SYS_SAIMOD_CACHE.php | 2 +- .../qq/SYS_SAIMOD_CACHE_COUNT.php | 2 +- .../saimod_sys_cron/qq/SYS_SAIMOD_CRON.php | 2 +- .../qq/SYS_SAIMOD_LOG_ANALYTICS.php | 10 ++++++++++ .../saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER.php | 3 ++- .../saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTERS.php | 2 +- .../qq/SYS_SAIMOD_LOG_FILTER_COUNT.php | 9 +++++---- .../qq/SYS_SAIMOD_SECURITY_USERS.php | 2 +- .../qq/SYS_SAIMOD_SECURITY_USER_COUNT.php | 2 +- .../saimod_sys_text/qq/SYS_SAIMOD_TEXT_COUNT.php | 7 +++++++ .../saimod_sys_text/qq/SYS_SAIMOD_TEXT_TAGS.php | 2 +- .../saimod_sys_text/qq/SYS_SAIMOD_TEXT_TEXT.php | 10 ++++++++++ .../saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT.php | 11 +++++++++++ .../qq/SYS_SAIMOD_TODO_STATS_USERS.php | 15 +++++++++++++++ security/qq/SYS_SECURITY_LOGIN_SHA1.php | 6 +++--- sql/qt/pgsql/schema/system_todo_assign.sql | 9 +++++++++ 19 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 sql/qt/pgsql/schema/system_todo_assign.sql diff --git a/cron/qq/SYS_CRON_GET.php b/cron/qq/SYS_CRON_GET.php index 4e4db55..cf29dc5 100644 --- a/cron/qq/SYS_CRON_GET.php +++ b/cron/qq/SYS_CRON_GET.php @@ -2,7 +2,7 @@ namespace SYSTEM\SQL; class SYS_CRON_GET extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT * FROM '.\SYSTEM\SQL\system_cron::NAME_PG.' WHERE class = $1;'; } public static function mysql(){return diff --git a/cron/qq/SYS_CRON_LAST_VISIT.php b/cron/qq/SYS_CRON_LAST_VISIT.php index 07ba8c4..e54aeaf 100644 --- a/cron/qq/SYS_CRON_LAST_VISIT.php +++ b/cron/qq/SYS_CRON_LAST_VISIT.php @@ -2,7 +2,7 @@ namespace SYSTEM\SQL; class SYS_CRON_LAST_VISIT extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT last_run FROM '.\SYSTEM\SQL\system_cron::NAME_PG.' ORDER BY last_run DESC LIMIT 1;'; } public static function mysql(){return diff --git a/db/result/ResultPostgres.php b/db/result/ResultPostgres.php index 4fecba1..88ae2b2 100644 --- a/db/result/ResultPostgres.php +++ b/db/result/ResultPostgres.php @@ -35,5 +35,5 @@ class ResultPostgres extends \SYSTEM\DB\Result{ } public function seek($row_number){ - return pg_data_seek($this->res,$row_number);} + return pg_result_seek($this->res,$row_number);} } \ No newline at end of file diff --git a/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE.php b/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE.php index 833da13..466eed6 100644 --- a/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE.php +++ b/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE.php @@ -2,7 +2,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_CACHE extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT *, encode(data,\'base64\') FROM system.cache ORDER BY "ID" ASC LIMIT 100;'; } public static function mysql(){return diff --git a/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE_COUNT.php b/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE_COUNT.php index e510f9d..d523cf4 100644 --- a/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE_COUNT.php +++ b/sai/modules/saimod_sys_cache/qq/SYS_SAIMOD_CACHE_COUNT.php @@ -2,7 +2,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_CACHE_COUNT extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT COUNT(*) as "count" FROM system.cache'; } public static function mysql(){return diff --git a/sai/modules/saimod_sys_cron/qq/SYS_SAIMOD_CRON.php b/sai/modules/saimod_sys_cron/qq/SYS_SAIMOD_CRON.php index dd886a7..ea26b3c 100644 --- a/sai/modules/saimod_sys_cron/qq/SYS_SAIMOD_CRON.php +++ b/sai/modules/saimod_sys_cron/qq/SYS_SAIMOD_CRON.php @@ -2,7 +2,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_CRON extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT * FROM '.\SYSTEM\SQL\system_cron::NAME_PG.' ORDER BY class;'; } public static function mysql(){return diff --git a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_ANALYTICS.php b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_ANALYTICS.php index 32fd41b..fce81bd 100644 --- a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_ANALYTICS.php +++ b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_ANALYTICS.php @@ -2,6 +2,16 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_LOG_ANALYTICS extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT to_char(to_timestamp(extract(epoch from '.\SYSTEM\SQL\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\SQL\system_log::FIELD_TIME.')::int % $1)), \'YYYY/MM/DD HH24:MI:SS\') as day,' + .'count(*) as count,' + .'count(distinct '.\SYSTEM\SQL\system_log::FIELD_USER.') as user_unique,' + .'count(distinct '.\SYSTEM\SQL\system_log::FIELD_IP.') as ip_unique' +.' FROM '.\SYSTEM\SQL\system_log::NAME_PG +.' GROUP BY day' +.' ORDER BY day DESC' +.' LIMIT 1;'; + } public static function mysql(){return 'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\SQL\system_log::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\SQL\system_log::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,' .'count(*) as count,' diff --git a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER.php b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER.php index 66514fd..0741fad 100644 --- a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER.php +++ b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER.php @@ -2,12 +2,13 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_LOG_FILTER extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT * FROM '.\SYSTEM\SQL\system_log::NAME_PG. ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG. ' ON '.\SYSTEM\SQL\system_log::NAME_PG.'.'.\SYSTEM\SQL\system_log::FIELD_USER. ' = '.\SYSTEM\SQL\system_user::NAME_PG.'.'.\SYSTEM\SQL\system_user::FIELD_ID. ' WHERE '.\SYSTEM\SQL\system_log::FIELD_CLASS.' LIKE $1'. +' AND ('.\SYSTEM\SQL\system_log::FIELD_MESSAGE.' LIKE $2 OR '.\SYSTEM\SQL\system_log::FIELD_FILE.' LIKE $3 OR '.\SYSTEM\SQL\system_log::FIELD_IP.' LIKE $4)'. ' ORDER BY '.\SYSTEM\SQL\system_log::FIELD_TIME.' DESC, '.\SYSTEM\SQL\system_log::NAME_PG.'."'.\SYSTEM\SQL\system_log::FIELD_ID.'" DESC;'; } public static function mysql(){return diff --git a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTERS.php b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTERS.php index 038557e..9b3fe0b 100644 --- a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTERS.php +++ b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTERS.php @@ -2,7 +2,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_LOG_FILTERS extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT '.\SYSTEM\SQL\system_log::FIELD_CLASS. ' FROM '.\SYSTEM\SQL\system_log::NAME_PG. ' GROUP BY '.\SYSTEM\SQL\system_log::FIELD_CLASS. diff --git a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER_COUNT.php b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER_COUNT.php index 8ce41e4..124f55a 100644 --- a/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER_COUNT.php +++ b/sai/modules/saimod_sys_log/qq/SYS_SAIMOD_LOG_FILTER_COUNT.php @@ -2,10 +2,11 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_LOG_FILTER_COUNT extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} - public static function pqsql(){return -'SELECT COUNT(*) as count FROM '.\SYSTEM\SQL\system_log::NAME_PG. -' WHERE '.\SYSTEM\SQL\system_log::FIELD_CLASS. -' LIKE $1;'; + public static function pgsql(){return +'SELECT COUNT(*) as count'. +' FROM '.\SYSTEM\SQL\system_log::NAME_PG. +' WHERE '.\SYSTEM\SQL\system_log::FIELD_CLASS.' LIKE $1'. +' AND ('.\SYSTEM\SQL\system_log::FIELD_MESSAGE.' LIKE $2 OR '.\SYSTEM\SQL\system_log::FIELD_FILE.' LIKE $3 OR '.\SYSTEM\SQL\system_log::FIELD_IP.' LIKE $4);'; } public static function mysql(){return 'SELECT COUNT(*) as count'. diff --git a/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USERS.php b/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USERS.php index 27c1d55..97334f3 100644 --- a/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USERS.php +++ b/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USERS.php @@ -3,7 +3,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_SECURITY_USERS extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} public static function pgsql(){return -'SELECT id,username,email,joindate,locale, EXTRACT(EPOCH FROM last_active) as last_active, account_flag FROM system.user WHERE username LIKE $1 OR email LIKE $1 ORDER BY last_active DESC;'; +'SELECT id,username,email,joindate,locale, EXTRACT(EPOCH FROM last_active) as last_active, account_flag FROM system.user WHERE username LIKE $1 OR email LIKE $2 ORDER BY last_active DESC;'; } public static function mysql(){return 'SELECT id,username,email,joindate,locale,unix_timestamp(last_active)as last_active, account_flag FROM system_user WHERE username LIKE ? OR email LIKE ? ORDER BY last_active DESC;'; diff --git a/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USER_COUNT.php b/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USER_COUNT.php index b15a9fb..975a6c5 100644 --- a/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USER_COUNT.php +++ b/sai/modules/saimod_sys_security/qq/SYS_SAIMOD_SECURITY_USER_COUNT.php @@ -3,7 +3,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_SECURITY_USER_COUNT extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} public static function pgsql(){return -'SELECT count(*) as count FROM system.user WHERE username LIKE $1 OR email LIKE $1;'; +'SELECT count(*) as count FROM system.user WHERE username LIKE $1 OR email LIKE $2;'; } public static function mysql(){return 'SELECT count(*) as count FROM system_user WHERE username LIKE ? OR email LIKE ?;'; diff --git a/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_COUNT.php b/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_COUNT.php index eaa1f13..05301da 100644 --- a/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_COUNT.php +++ b/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_COUNT.php @@ -2,6 +2,13 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TEXT_COUNT extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT COUNT(*) as count'. +' FROM system.text'. +' LEFT JOIN system.user as a ON system.text.author = a.id'. +' LEFT JOIN system.user as ae ON system.text.author_edit = ae.id'. +' WHERE (a.username LIKE $1 OR ae.username LIKE $2 OR text LIKE $3);'; + } public static function mysql(){return 'SELECT COUNT(*) as `count`'. ' FROM system_text'. diff --git a/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TAGS.php b/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TAGS.php index 9b654cd..1b5f35d 100644 --- a/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TAGS.php +++ b/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TAGS.php @@ -3,7 +3,7 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TEXT_TAGS extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} public static function pgsql(){return -'SELECT "tag", COUNT(*) as "count" FROM system_text_tag GROUP BY "tag" ORDER BY "tag" ASC;'; +'SELECT "tag", COUNT(*) as "count" FROM system.text_tag GROUP BY "tag" ORDER BY "tag" ASC;'; } public static function mysql(){return 'SELECT `tag`, COUNT(*) as `count` FROM system_text_tag GROUP BY `tag` ORDER BY `tag` ASC;'; diff --git a/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TEXT.php b/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TEXT.php index 3122424..26a18f5 100644 --- a/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TEXT.php +++ b/sai/modules/saimod_sys_text/qq/SYS_SAIMOD_TEXT_TEXT.php @@ -2,6 +2,16 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TEXT_TEXT extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT system.text_tag.tag, system.text.*, a.username as author_name, ae.username as author_edit_name'. +' FROM system.text_tag'. +' LEFT JOIN system.text ON system.text_tag.id = system.text.id'. +' LEFT JOIN system.user as a ON system.text.author = a.id'. +' LEFT JOIN system.user as ae ON system.text.author_edit = ae.id'. +' WHERE (a.username LIKE $1 OR ae.username LIKE $2 OR text LIKE $3)'. +' GROUP BY id, lang'. +' ORDER BY time_edit DESC;'; + } public static function mysql(){return 'SELECT system_text_tag.tag, system_text.*, a.username as author_name, ae.username as author_edit_name'. ' FROM system_text_tag'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT.php index 70ca3af..a8720bb 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT.php @@ -2,6 +2,17 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_COUNT extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT COUNT(*) as count FROM('. +'SELECT todo.id FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. +' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo.'.\SYSTEM\SQL\system_todo::FIELD_ID.'=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_MYS.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_MYS.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. +' WHERE '.\SYSTEM\SQL\system_todo::FIELD_STATE.'=$1'. +' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $2 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $3 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4)'. +' GROUP BY todo.id'. +') as a;'; + } public static function mysql(){return 'SELECT COUNT(*) as count FROM('. 'SELECT todo.id FROM '.\SYSTEM\SQL\system_todo::NAME_MYS.' as todo'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_STATS_USERS.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_STATS_USERS.php index f1ae616..67f9114 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_STATS_USERS.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_STATS_USERS.php @@ -2,6 +2,21 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_STATS_USERS extends \SYSTEM\DB\QQ { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT *, state_closed/(state_open+state_closed) as best '. +'FROM ('. + 'SELECT username,'. + ' sum(case when state = 0 then 1 else 0 end) state_open, '. + ' sum(case when state = 1 then 1 else 0 end) state_closed, '. + ' COUNT(*) as count '. + 'FROM system.todo_assign '. + 'LEFT JOIN system.todo ON system.todo_assign.todo = system.todo."ID" '. + 'LEFT JOIN system.user ON system.todo_assign.user = system.user.id '. + 'GROUP BY system.todo_assign.user '. + 'ORDER BY count DESC'. +') a '. +'ORDER BY best DESC;'; + } public static function mysql(){return 'SELECT *, state_closed/(state_open+state_closed) as best '. 'FROM ('. diff --git a/security/qq/SYS_SECURITY_LOGIN_SHA1.php b/security/qq/SYS_SECURITY_LOGIN_SHA1.php index 5157791..10211cd 100644 --- a/security/qq/SYS_SECURITY_LOGIN_SHA1.php +++ b/security/qq/SYS_SECURITY_LOGIN_SHA1.php @@ -2,10 +2,10 @@ namespace SYSTEM\SQL; class SYS_SECURITY_LOGIN_SHA1 extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} - public static function pqsql(){return + public static function pgsql(){return 'SELECT * FROM '.\SYSTEM\SQL\system_user::NAME_PG. -' WHERE (lower('.\SYSTEM\SQL\system_user::FIELD_USERNAME.') LIKE lower($1) OR lower('.\SYSTEM\SQL\system_user::FIELD_EMAIL.') LIKE lower($1))'. -' AND '.\SYSTEM\SQL\system_user::FIELD_PASSWORD_SHA.' = $2;'; +' WHERE (lower('.\SYSTEM\SQL\system_user::FIELD_USERNAME.') LIKE lower($1) OR lower('.\SYSTEM\SQL\system_user::FIELD_EMAIL.') LIKE lower($2))'. +' AND '.\SYSTEM\SQL\system_user::FIELD_PASSWORD_SHA.' = $3;'; } public static function mysql(){return 'SELECT * FROM '.\SYSTEM\SQL\system_user::NAME_MYS. diff --git a/sql/qt/pgsql/schema/system_todo_assign.sql b/sql/qt/pgsql/schema/system_todo_assign.sql new file mode 100644 index 0000000..ae5db5a --- /dev/null +++ b/sql/qt/pgsql/schema/system_todo_assign.sql @@ -0,0 +1,9 @@ +CREATE TABLE system.todo_assign ( + "todo" integer NOT NULL, + "user" integer NOT NULL, + "time" timestamp with time zone NOT NULL, + CONSTRAINT system_todo_assign_pk_todo_user PRIMARY KEY ("todo", "user") +) +WITH ( + OIDS=FALSE +); \ No newline at end of file