Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions docs/database_schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,3 @@
## ER-Diagram

![Database Schema](timetable_schema.png)

*ER-Diagram showing the database structure*
33 changes: 14 additions & 19 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,20 @@

**pg_timetable** is compatible with all supported [PostgreSQL versions](https://www.postgresql.org/support/versioning/).

!!! note "Older PostgreSQL versions (9.5, 9.6, and 10)"

If you want to use **pg_timetable** with older versions (9.5, 9.6 and 10), please execute this SQL command before running pg_timetable:

```sql
CREATE OR REPLACE FUNCTION starts_with(text, text)
RETURNS bool AS
$$
SELECT
CASE WHEN length($2) > length($1) THEN
FALSE
ELSE
left($1, length($2)) = $2
END
$$
LANGUAGE SQL
IMMUTABLE STRICT PARALLEL SAFE
COST 5;
```
!!! note "PostgreSQL extensions"

**No extension is required to run pg_timetable.** The secret store
(`timetable.secret`, introduced by migration `00820`) is the only
feature with an extension dependency: it uses `pgcrypto`'s
`pgp_sym_encrypt` / `pgp_sym_decrypt`. `pgcrypto` is installed by
whoever deploys the database — pg_timetable never installs, requires,
or probes for it. A database without `pgcrypto` runs pg_timetable
normally with only the secret store unavailable.

Since PostgreSQL 13, `pgcrypto` is a **trusted** extension and can
be installed by any role holding `CREATE` on the database, so
managed services (RDS, Azure, Cloud SQL, Supabase and similar)
need no superuser.

## Official release packages

Expand Down
Loading
Loading