Error when editing multiple feeds (disabling e-mail digest)

  • [x] I’m using stock docker compose setup, unmodified.
  • Tiny Tiny RSS version (latest v22.12-2be8d58):
  • Platform docker-compose
  • docker-compose running on VPS with 8GB RAM

When I edit multiple feeds to disable e-mail digest nothing happens and error is logged in browser console and docker app
Editing single feed works, the problem is only when editing multiple feeds.

Steps to reproduce the problem:

  1. Select multiple feeds in feed list ( /tt-rss/prefs.php )

  2. Click Feeds / Edit selected feeds

  3. Disable email digest by checking check mark
    image

  4. Click save

4.) Saving data will appear and nothing happens
image

Error in browser console when saving:

Error log in app container:

ttrss-docker-app-1  | [30-Dec-2022 15:01:51 UTC] PHP Fatal error:  Uncaught PDOException: SQLSTATE[42804]: Datatype mismatch: 7 ERROR:  column "include_in_digest" is of type boolean but expression is of type integer
ttrss-docker-app-1  | LINE 1: UPDATE ttrss_feeds SET include_in_digest = 0 WHERE id IN ($1...
ttrss-docker-app-1  |                                                    ^
ttrss-docker-app-1  | HINT:  You will need to rewrite or cast the expression. in /var/www/html/tt-rss/classes/pref/feeds.php:854
ttrss-docker-app-1  | Stack trace:
ttrss-docker-app-1  | #0 /var/www/html/tt-rss/classes/pref/feeds.php(854): PDOStatement->execute()
ttrss-docker-app-1  | #1 /var/www/html/tt-rss/classes/pref/feeds.php(697): Pref_Feeds->editsaveops()
ttrss-docker-app-1  | #2 /var/www/html/tt-rss/backend.php(136): Pref_Feeds->batchEditSave()
ttrss-docker-app-1  | #3 {main}
ttrss-docker-app-1  |   thrown in /var/www/html/tt-rss/classes/pref/feeds.php on line 854
ttrss-docker-app-1  | [30-Dec-2022 15:01:51 UTC] PHP Fatal error:  Uncaught PDOException: SQLSTATE[25P02]: In failed sql transaction: 7 ERROR:  current transaction is aborted, commands ignored until end of transaction block in /var/www/html/tt-rss/classes/db/migrations.php:69
ttrss-docker-app-1  | Stack trace:
ttrss-docker-app-1  | #0 /var/www/html/tt-rss/classes/db/migrations.php(69): PDO->query()
ttrss-docker-app-1  | #1 /var/www/html/tt-rss/classes/db/migrations.php(62): Db_Migrations->create_migrations_table()
ttrss-docker-app-1  | #2 /var/www/html/tt-rss/classes/config.php(409): Db_Migrations->get_version()
ttrss-docker-app-1  | #3 /var/www/html/tt-rss/classes/logger/sql.php(15): Config::get_schema_version()
ttrss-docker-app-1  | #4 /var/www/html/tt-rss/classes/logger.php(39): Logger_SQL->log_error()
ttrss-docker-app-1  | #5 /var/www/html/tt-rss/classes/logger.php(32): Logger->_log_error()
ttrss-docker-app-1  | #6 /var/www/html/tt-rss/include/errorhandler.php(80): Logger::log_error()
ttrss-docker-app-1  | #7 [internal function]: ttrss_fatal_handler()
ttrss-docker-app-1  | #8 {main}
ttrss-docker-app-1  |   thrown in /var/www/html/tt-rss/classes/db/migrations.php on line 69
ttrss-docker-app-1  | [30-Dec-2022 15:01:51 UTC] PHP Fatal error:  Uncaught PDOException: SQLSTATE[25P02]: In failed sql transaction: 7 ERROR:  current transaction is aborted, commands ignored until end of transaction block in /var/www/html/tt-rss/include/sessions.php:94
ttrss-docker-app-1  | Stack trace:
ttrss-docker-app-1  | #0 /var/www/html/tt-rss/include/sessions.php(94): PDOStatement->execute()
ttrss-docker-app-1  | #1 [internal function]: Sessions\ttrss_write()
ttrss-docker-app-1  | #2 {main}
ttrss-docker-app-1  |   thrown in /var/www/html/tt-rss/include/sessions.php on line 94
ttrss-docker-app-1  | [30-Dec-2022 15:01:51 UTC] PHP Fatal error:  Uncaught PDOException: SQLSTATE[25P02]: In failed sql transaction: 7 ERROR:  current transaction is aborted, commands ignored until end of transaction block in /var/www/html/tt-rss/classes/db/migrations.php:69
ttrss-docker-app-1  | Stack trace:
ttrss-docker-app-1  | #0 /var/www/html/tt-rss/classes/db/migrations.php(69): PDO->query()
ttrss-docker-app-1  | #1 /var/www/html/tt-rss/classes/db/migrations.php(62): Db_Migrations->create_migrations_table()
ttrss-docker-app-1  | #2 /var/www/html/tt-rss/classes/config.php(409): Db_Migrations->get_version()
ttrss-docker-app-1  | #3 /var/www/html/tt-rss/classes/logger/sql.php(15): Config::get_schema_version()
ttrss-docker-app-1  | #4 /var/www/html/tt-rss/classes/logger.php(39): Logger_SQL->log_error()
ttrss-docker-app-1  | #5 /var/www/html/tt-rss/classes/logger.php(32): Logger->_log_error()
ttrss-docker-app-1  | #6 /var/www/html/tt-rss/include/errorhandler.php(59): Logger::log_error()
ttrss-docker-app-1  | #7 [internal function]: ttrss_error_handler()
ttrss-docker-app-1  | #8 {main}
ttrss-docker-app-1  |   thrown in /var/www/html/tt-rss/classes/db/migrations.php on line 69
ttrss-docker-app-1  | [30-Dec-2022 15:02:20] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

Error in TTRSS event log:
multiple events is logged, for key “auth_pass”, “auth_login”, “site_url”,“feed_url”,title"
only difference is line numbers
This is “auth_pass” variant:

Undefined array key "auth_pass"
1. classes/pref/feeds.php(715): ttrss_error_handler(Undefined array key "auth_pass", classes/pref/feeds.php)
2. classes/pref/feeds.php(697): editsaveops()
3. backend.php(136): batchEditSave()

thanks for reporting, actual problem after brief investigation:

"Uncaught PDOException: SQLSTATE[42804]: Datatype mismatch: 7 ERROR:  column "always_display_enclosures" is of type boolean but expression is of type integer

the whole undefined thing is cosmetic although it should also be fixed.

fix: batch feed editor: · a16acd65fc - tt-rss - Tiny Tiny RSS

welp. actually not yet fixed. i forgot about this stupid PDO behavior which casts everything to string by default so booleans with false values become an empty string breaking everything.

e: deal with type errors in batch feed editor properly, un-deprecate PDO wrapper functions and document them for posterity · c30b24d09f - tt-rss - Tiny Tiny RSS

Thanks! Can confirm that issues is fixed and digest can be disabled in batch.