@hackage / pg-schema

Type-level definition of database schema and safe DML for PostgreSQL.

Changelog

Changelog for pg-schema

0.8.0.0

  • Fix SELECT path matching after renamer: promoted PathElem' (peName, peDbName, peKind) replaces (Text, PathKind); runtime pathStepMatches supports point paths and broadcast by shared db fk name; independent filters on aliased sibling fields (e.g. mid1RootFk vs mid1_root_fk2).
  • Internal SELECT paths: [PathElemK] in PathCtx / TabOnDPathRen; removed EffPath on renamer-only pairs; TabOnDPath2 walks peDbName.
  • Flat DML: upsertByKey / upsertByKey_ and updateByKey / updateByKey_ (upsertByKey requires all mandatory columns and a full key — always INSERT … ON CONFLICT …; updateByKey is key-only, never inserts, bare returning type r', result IO ([Maybe r'], Text)).
  • Tree DML: updateJSON / updateJSON_ (update-only); InsertMode for the JSON pipeline.
  • Tree returning: Maybe or Bare for upsertJSON.
  • New constraints: AllHasKeyTree, CheckHasKey, ReturningMatches{Insert,Upsert,Update}, FromJSON / ToJSON for Maybe rows and null in returning arrays.
  • Rename TreeSch to HasSchema

0.7.1.2

  • Fix bug with aggregates (Min/Max/Sum/Avg)

0.7.1.1

  • Add upsertJSONText, upsertJSONText_

0.7.1.0

  • Condition DSL: (=??) on nullable columns generates SQL IS NOT DISTINCT FROM (same null-safe key equality as upsertJSON)
  • Improve transaction behavior for insertJSON/upsertJSON
  • Add tests for insertJSON/upsertJSON with transactions
  • upsertJSON / upsertJSON_: optional ON CONFLICT targets include NOT NULL unique keys (primary key still first), then nullable unique keys when the table has no NOT NULL UK; UPDATE by key uses IS NOT DISTINCT FROM for key columns; IdentityCandidates (compile-time) lists every PK/UK from the schema
  • insertJSON / insertJSON_: insert-only (plain INSERT, no ON CONFLICT or UPDATE; duplicate keys fail at the database)
  • Rename AllMandatoryOrHasPKTree to AllMandatoryOrHasKeyTree

0.7.0.1

  • Bug fixing (upsertJSON_ without change fields: on conflict do nothing)

0.7.0.0

  • Bug fixing (updateText_ signature)
  • Change signature for deleteByCond
  • Add CondAnn & QueryParamsAnn

0.6.1.0

  • Bug fixing (ins/upsertJSON for json db-fields)

0.6.0.0

  • Using Renamer for QueryParams and Cond
  • Improve error messaging
  • Support for 'UnsafeCol'
  • Check possibility of type conversions for select-list/insert/update (it was broken in 0.5.0)
  • Check optional/mandatory for parent references is SELECT
  • Added qPathFromHere/qPathToHere. Self-reference require explicit direction in qPathXXX

0.5.2.0

  • Bug fixing (Problem with Self-references)

0.5.1.1

  • Improve error messaging

0.5.1.0

  • Bug fixing (TF stucks in some cases)

0.5.0.0

  • First release on Hackage