packages feed

hpqtypes-extras 1.13.0.0 → 1.13.1.0

raw patch · 5 files changed

+34/−12 lines, 5 filesdep ~semigroupsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: semigroups

API changes (from Hackage documentation)

+ Database.PostgreSQL.PQTypes.Model.Index: [idxInclude] :: TableIndex -> [RawSQL ()]
- Database.PostgreSQL.PQTypes.Model.Index: TableIndex :: [RawSQL ()] -> IndexMethod -> Bool -> Bool -> Maybe (RawSQL ()) -> TableIndex
+ Database.PostgreSQL.PQTypes.Model.Index: TableIndex :: [RawSQL ()] -> [RawSQL ()] -> IndexMethod -> Bool -> Bool -> Maybe (RawSQL ()) -> TableIndex

Files

CHANGELOG.md view
@@ -1,3 +1,11 @@+# hpqtypes-extras-1.13.1.0 (2021-11-26)+* Add support for including columns in indexes.++# hpqtypes-extras-1.13.0.0 (2021-11-08)+* Add support for handling lock_timeout during migrations.+* Improvements for making no downtime migrations easier to write.+* Commiting after each migration was made non-optional.+ # hpqtypes-extras-1.12.0.1 (2021-10-11) * Add support for log-base-0.11.0.0 
hpqtypes-extras.cabal view
@@ -1,6 +1,6 @@ cabal-version:       2.2 name:                hpqtypes-extras-version:             1.13.0.0+version:             1.13.1.0 synopsis:            Extra utilities for hpqtypes library description:         The following extras for hpqtypes library:                      .
src/Database/PostgreSQL/PQTypes/Checks.hs view
@@ -1064,7 +1064,8 @@ sqlGetIndexes :: Table -> SQL sqlGetIndexes table = toSQLCommand . sqlSelect "pg_catalog.pg_class c" $ do   sqlResult "c.relname::text" -- index name-  sqlResult $ "ARRAY(" <> selectCoordinates <> ")" -- array of index coordinates+  sqlResult $ "ARRAY(" <> selectCoordinates "0" "i.indnkeyatts" <> ")" -- array of key columns in the index+  sqlResult $ "ARRAY(" <> selectCoordinates "i.indnkeyatts" "i.indnatts" <> ")" -- array of included columns in the index   sqlResult "am.amname::text" -- the method used (btree, gin etc)   sqlResult "i.indisunique" -- is it unique?   sqlResult "i.indisvalid"  -- is it valid?@@ -1078,22 +1079,24 @@   sqlWhereIsNULL "r.contype" -- fetch only "pure" indexes   where     -- Get all coordinates of the index.-    selectCoordinates = smconcat [+    selectCoordinates start end = smconcat [         "WITH RECURSIVE coordinates(k, name) AS ("-      , "  VALUES (0, NULL)"+      , "  VALUES (" <> start <> "::integer, NULL)"       , "  UNION ALL"       , "    SELECT k+1, pg_catalog.pg_get_indexdef(i.indexrelid, k+1, true)"       , "      FROM coordinates"-      , "     WHERE pg_catalog.pg_get_indexdef(i.indexrelid, k+1, true) != ''"+      , "     WHERE k < " <> end       , ")"-      , "SELECT name FROM coordinates WHERE k > 0"+      , "SELECT name FROM coordinates WHERE name IS NOT NULL"       ] -fetchTableIndex :: (String, Array1 String, String, Bool, Bool, Maybe String)-                -> (TableIndex, RawSQL ())-fetchTableIndex (name, Array1 columns, method, unique, valid, mconstraint) =+fetchTableIndex+  :: (String, Array1 String, Array1 String, String, Bool, Bool, Maybe String)+  -> (TableIndex, RawSQL ())+fetchTableIndex (name, Array1 keyColumns, Array1 includeColumns, method, unique, valid, mconstraint) =   (TableIndex-   { idxColumns = map unsafeSQL columns+   { idxColumns = map unsafeSQL keyColumns+   , idxInclude = map unsafeSQL includeColumns    , idxMethod = read method    , idxUnique = unique    , idxValid = valid
src/Database/PostgreSQL/PQTypes/Model/Index.hs view
@@ -29,6 +29,7 @@  data TableIndex = TableIndex {   idxColumns :: [RawSQL ()]+, idxInclude :: [RawSQL ()] , idxMethod  :: IndexMethod , idxUnique  :: Bool , idxValid   :: Bool -- ^ If creation of index with CONCURRENTLY fails, index@@ -54,6 +55,7 @@ tblIndex :: TableIndex tblIndex = TableIndex {   idxColumns = []+, idxInclude = [] , idxMethod = BTree , idxUnique = False , idxValid = True@@ -84,6 +86,7 @@ uniqueIndexOnColumn :: RawSQL () -> TableIndex uniqueIndexOnColumn column = TableIndex {   idxColumns = [column]+, idxInclude = [] , idxMethod = BTree , idxUnique = True , idxValid = True@@ -93,6 +96,7 @@ uniqueIndexOnColumns :: [RawSQL ()] -> TableIndex uniqueIndexOnColumns columns = TableIndex {   idxColumns = columns+, idxInclude = [] , idxMethod = BTree , idxUnique = True , idxValid = True@@ -102,6 +106,7 @@ uniqueIndexOnColumnWithCondition :: RawSQL () -> RawSQL () -> TableIndex uniqueIndexOnColumnWithCondition column whereC = TableIndex {   idxColumns = [column]+, idxInclude = [] , idxMethod = BTree , idxUnique = True , idxValid = True@@ -114,6 +119,9 @@   , tname   , "__"   , mintercalate "__" $ map (asText sanitize) idxColumns+  , if null idxInclude+    then ""+    else "$$" <> mintercalate "__" (map (asText sanitize) idxInclude)   , maybe "" (("__" <>) . hashWhere) idxWhere   ]   where@@ -154,6 +162,9 @@   , " USING" <+> (rawSQL (T.pack . show $ idxMethod) ()) <+> "("   , mintercalate ", " idxColumns   , ")"+  , if null idxInclude+    then ""+    else " INCLUDE (" <> mintercalate ", " idxInclude <> ")"   , maybe "" (" WHERE" <+>) idxWhere   ] 
test/Main.hs view
@@ -126,7 +126,7 @@   , mgrFrom      = 3   , mgrAction    = CreateIndexConcurrentlyMigration                      (tblName tableBankSchema3)-                     (indexOnColumn "name")+                     ((indexOnColumn "name") { idxInclude = ["id", "location"] })   }  tableBankSchema5 :: Table@@ -134,7 +134,7 @@     tblVersion = (tblVersion tableBankSchema4) + 2   , tblColumns = filter (\c -> colName c /= "cash")       (tblColumns tableBankSchema4)-  , tblIndexes = [indexOnColumn "name"]+  , tblIndexes = [(indexOnColumn "name") { idxInclude = ["id", "location"] }]   }  tableBadGuySchema1 :: Table