{"id":14069547,"url":"https://github.com/trustly/fdiff","last_synced_at":"2026-01-12T09:32:10.909Z","repository":{"id":8212046,"uuid":"9647217","full_name":"trustly/fdiff","owner":"trustly","description":null,"archived":false,"fork":false,"pushed_at":"2014-10-20T14:35:48.000Z","size":136,"stargazers_count":36,"open_issues_count":0,"forks_count":1,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-12-04T10:39:49.352Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trustly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-24T12:51:02.000Z","updated_at":"2024-10-30T10:56:02.000Z","dependencies_parsed_at":"2022-08-06T22:01:07.147Z","dependency_job_id":null,"html_url":"https://github.com/trustly/fdiff","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trustly/fdiff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustly%2Ffdiff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustly%2Ffdiff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustly%2Ffdiff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustly%2Ffdiff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trustly","download_url":"https://codeload.github.com/trustly/fdiff/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustly%2Ffdiff/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267815187,"owners_count":24148356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-13T07:07:02.423Z","updated_at":"2026-01-12T09:32:10.897Z","avatar_url":"https://github.com/trustly.png","language":"Shell","readme":"# fdiff\n\nTool to reduce risk for human errors when deploying functions and views in a PostgreSQL database.\n\n## USAGE\n\n    BEGIN;\n\n    -- Temp store state of all views/functions\n    SELECT fstage();\n\n    -- Deploy changes to schema\n    -- CREATE OR REPLACE FUNCTION ...\n    -- CREATE OR REPLACE VIEW ...\n\n    -- Show a diff of changes made\n    SELECT fdiff();\n\n    -- If the changes are expected, go ahead and commit\n    COMMIT;\n\n## EXAMPLE\n\n    $ psql\n    psql (9.1.9)\n    Type \"help\" for help.\n    \n    amazon=# BEGIN;\n    BEGIN\n    amazon=#* select fstage();\n     fstage \n    --------\n     t\n    (1 row)\n    \n    amazon=#* \\i /Users/joel/schema/public/FUNCTIONS/process_order.sql\n    SET\n    CREATE FUNCTION\n    ALTER FUNCTION\n    amazon=#* select fdiff();\n                                                     fdiff                                                  \n    --------------------------------------------------------------------------------------------------------\n                                                                                                           +\n                                                                                                           +\n     +-------------------------------+                                                                     +\n     | Updated or replaced functions |                                                                     +\n     +-------------------------------+                                                                     +\n                                                                                                           +\n     Schema................: public                                                                        +\n     Name..................: process_order                                                                 +\n     Argument data types...: _orderid bigint                                                               +\n     Result data type......: boolean                                                                       +\n     Language..............: plpgsql                                                                       +\n     Type..................: normal                                                                        +\n     Volatility............: STABLE                                                                        +\n     Owner.................: amazon                                                                        +\n     20 c     OR Orders.ShippingDate IS NOT NULL                                                           +\n     20 c     OR Orders.ShippingDate \u003e now() - interval '2 month'                                          +\n                                                                                                           +\n                                                                                                           +\n                                                                                                           +\n     \n    (1 row)\n    \n    amazon=#* COMMIT;\n    COMMIT\n\n## INSTALL\n\n    ./install.sh\n","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrustly%2Ffdiff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrustly%2Ffdiff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrustly%2Ffdiff/lists"}