Our team is proud to introduce new major [pg_timetable v4](https://github.com/cybertec-postgresql/pg_timetable/releases) with the new documentation, configuration file support, reimplemented logging machinery, job and task timeouts support, new CopyFromFile built-in functionality, and many more!
Please, use our new [detailed manual](https://pg-timetable.readthedocs.io/) to know more about new features and settings. ## Download You're welcome to download the **pg_timetable v4** right now at: [https://github.com/cybertec-postgresql/pg_timetable/releases](https://github.com/cybertec-postgresql/pg_timetable/releases) ## Feedback Please don't hesitate to ask any [questions](https://github.com/cybertec-postgresql/pg_timetable/discussions), to report [bugs](https://github.com/cybertec-postgresql/pg_timetable/issues), to [star](https://github.com/cybertec-postgresql/pg_timetable/stargazers) **pg_timetable** project and to tell the world about it. ## Changelog ๐๐๐งช - `[!]` add configuration file support with Viper, closes #177 bebab44 - `[!]` add `CopyFromFile` built-in task f87d6fc - `[!]` add Readthedocs documentation (#254) 004b31f - `[!]` merge `timetable.command` table with `timetable.task`, closes #261 8604b18 - `[!]` reimplement logging, closes #158 (#231) 4313948 - `[!]` remove `jmoiron/sqlx` and `DATA-DOG/go-sqlmock` dependencies, closes #187 #202 6542b71 - `[!]` remove old migrations and start from scratch, closes #258 020563d - `[!]` rewrite cron handling from scratch 35a8cc8 fbfbfb2 - `[!]` rewrite pgengine and scheduler without global variables as classes fa37167 - `[!]` use Go 1.16 to build releases 729ef31 - `[!]` use new consistent terminology: command -> task -> chain f59fdda - `[+]` add `$PGTT_CLIENTNAME` env var 31faae6 - `[+]` add `--cronworkers` and `--intervalworkers` options under "Resource" group 91f5c0e - `[+]` add `.pgpass` support, closes #247 d3a317f - `[+]` add `--chain-timeout` command-line parameter, closes #270 7f27a50 - `[+]` add `--log-database-level` command-line parameter, closes #274 338c28c - `[+]` add `--task-timeout` command line parameter 80428a7 - `[+]` add all release badge 0b1ae61 - `[+]` add chain timeout, closes #267 05b9736 - `[+]` add `config.example.yaml` file bebab44 - `[+]` add config_test 5df8386 - `[+]` add database comments for objects f59fdda - `[+]` add docs badge e325ff5 - `[+]` add high load skip timeout to `LogHook` 0513ba8 - `[+]` add log hook for PostgreSQL using `COPY` machinery 93d51cc - `[+]` add LogHook tests 0513ba8 - `[+]` add output for built-in and SQL tasks to the timetable.execution_log, closes #185 (#224) 681caf3 - `[+]` add `pgengine.NewDB` function 330cb62 - `[+]` add `pgxpoolIface` 33fa7a4 - `[+]` add support for logging to file, closes #272 6a73a80 - `[+]` add supported cloud environments to the readme, #256 70c9f49 - `[+]` add supported PostgreSQL versions and operating systems to the readme, closes #256 5695742 - `[+]` add task timeout, closes #271 80428a7 - `[+]` add `TASK_STARTED` and `TASK_DONE` statuses, rename `STARTED` to `CHAIN_STARTED` 660e32b - `[+]` add `TestMigratorOptions()` and increase `TestMigrateTxError()` coverage 466c909 - `[+]` add `TestSchedulerExclusiveLocking()` 08e7ff9 - `[+]` add `TestSelectChains()` 3696f01 - `[+]` add time zone information to the manual 77c0237 - `[+]` add version number to all release files, closes #228 cf72721 - `[+]` allow specify content-type for SendMail built-in task, closes #225 (#226) 100bedd - `[+]` bump `github.com/pashagolub/pgxmock` 1.2.0 af98bfd - `[+]` bump `github.com/spf13/viper` to 1.8.1 e7b30fd - `[+]` bump `jackc/pgconn` version to 1.9.0 7f2d671 - `[+]` bump `jackc/pgtype` version to 1.8.0 7f2d671 - `[+]` bump `jackc/pgx` version to 4.12.0 7f2d671 - `[+]` bump `jessevdk/go-flags` version to 1.5.0 7f2d671 - `[*]` bump `georgysavva/scany` to 0.2.9 c1f9529 - `[+]` create Dependabot config file 37729d7 - `[+]` delete only succeeded self-destructive chains, closes #265 613a945 - `[+]` increase TestMigrations() coverage 975d68c - `[+]` Increase v4 tests coverage (#222) 9689e50 - `[+]` insert run status immediately during max_instance check, closes #223 5765662 - `[+]` introduce PgxIface, PgxConnIface, PgxPoolIface b028eaa - `[+]` move cache settings to LogHook 0513ba8 - `[+]` set client name during LogHook creation 0513ba8 - `[+]` specify password for tests explicitly 524046f - `[+]` use `//go:embed` for migration .sql files aaee11d - `[+]` use `//go:embed` for pgengine .sql files b453937 - `[+]` use retcode and deferred functions instead of os.Exit() 7a1cdfa - `[*]` change "--port" command-line option type to integer bebab44 - `[*]` decrease run_status rows usage by using only task-related information 660e32b - `[*]` improve and rename get_running_jobs() to get_chain_running_statuses() 7a1cdfa - `[*]` improve TestExecuteSQLTask() 396cc88 - `[*]` improve timetable.run_status table 7a1cdfa - `[*]` make go test fail fast in the build action 35a8cc8 - `[*]` make pgengine.NewDB() and config.NewCmdOptions() use variadic string params 524046f - `[*]` move health_check() function to job_functions.sql 7a1cdfa - `[*]` move Logger to appropriate file b5bcece - `[*]` move PgURL parsing to the pgengine bebab44 - `[*]` move SetupCloseHandler to main.go 7a1cdfa - `[*]` remove sensitive information from logs, closes #286 aba954d - `[*]` remove unused chain.excluded_execution_configs column f59fdda - `[*]` remove unused PgEngine.CanProceedChainExecution() 4cf2323 - `[*]` remove unused timetable.trig_chain_fixer(), closes #255 5b033d7 - `[*]` rename pgengine.UpdateChainRunStatus to AddChainRunStatus 660e32b - `[*]` rename rus_status.current_execution_element column to command_id 660e32b - `[*]` replace "--verbose" command-line option with "--loglevel" bebab44 - `[*]` return immediately from pgengine.CanProceedChainExecution if context expired 34946b8 - `[*]` simplify pgengine.CanProceedChainExecution() function 7a1cdfa - `[*]` simplify readme.md, #256 b7cc5bf - `[*]` split options into groups: Connection, Logging, Start, etc. bebab44 - `[*]` store remote database connection strings in chain table directly, closes #234 20f28f8 - `[*]` support alpha-beta strings in tag name for Release action e7318a8 - `[*]` switch to ory/mail from abandoned gomail, closes #248 21858fd - `[*]` update Golang version used in Github Actions 944b903 - `[*]` update latest release badge by including pre-releases 8645ee0 - `[*]` use channel for error instead of variable 0513ba8 - `[*]` use dashes in long command-line parameters names 6a73a80 - `[*]` uses error log level during tests by default 524046f - `[-]` fix 'date/time field value out of range' error in next_run(), fixes #237 35a8cc8 - `[-]` fix --pgurl ignored during connection, closes #252 5d771df - `[-]` fix empty long dash separated command-line parameters, fixes #279 4e8016f - `[-]` fix ErrNoRows check in CanProceedChainExecution() f0701c4 - `[-]` fix SelectChain() 8b802c3 - `[-]` remove database/sql from import eeb3eb4 - `[-]` remove `STRICT` option from `add_job()` function, fixes #291 2eff73a - `[-]` remove unneeded logging CheckNeedMigrateDb() function f59fdda