{"id":19928317,"url":"https://github.com/mrotteveel/firebird-reserved-words","last_synced_at":"2025-06-21T12:36:30.681Z","repository":{"id":73981605,"uuid":"182794284","full_name":"mrotteveel/firebird-reserved-words","owner":"mrotteveel","description":"Tool to collect reserved and non-reserved keyword information for Firebird and SQL standard into a Firebird database.","archived":false,"fork":false,"pushed_at":"2023-11-18T09:19:10.000Z","size":223,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T11:16:08.394Z","etag":null,"topics":["firebird","sql"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrotteveel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-04-22T13:34:20.000Z","updated_at":"2024-01-06T07:47:29.000Z","dependencies_parsed_at":"2023-11-18T10:45:19.106Z","dependency_job_id":null,"html_url":"https://github.com/mrotteveel/firebird-reserved-words","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mrotteveel/firebird-reserved-words","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrotteveel%2Ffirebird-reserved-words","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrotteveel%2Ffirebird-reserved-words/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrotteveel%2Ffirebird-reserved-words/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrotteveel%2Ffirebird-reserved-words/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrotteveel","download_url":"https://codeload.github.com/mrotteveel/firebird-reserved-words/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrotteveel%2Ffirebird-reserved-words/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261125688,"owners_count":23113277,"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","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":["firebird","sql"],"created_at":"2024-11-12T22:36:50.975Z","updated_at":"2025-06-21T12:36:25.660Z","avatar_url":"https://github.com/mrotteveel.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Firebird reserved words\n=======================\n\nTool to collect reserved and non-reserved keyword information for Firebird \nand SQL standard into a Firebird database.\n\nUsage\n-----\n\nExample:\n\nOptions to load keywords based on data in `keywords` folder:\n\nFor SQL:2003\n\n```\n--version 2003\n--reserved keywords\\sql\\2003\\reserved.txt\n--non-reserved keywords\\sql\\2003\\non-reserved.txt\n```\n\nFor Firebird 5:\n\n```\n--version 5.0 \n--keywords-source-file keywords\\firebird\\5.0\\keywords.cpp \n--override-non-reserved keywords\\firebird\\5.0\\non-reserved-override.txt \n--override-reserved keywords\\firebird\\5.0\\reserved-override.txt \n--delete-keywords keywords\\firebird\\fb_general_keywords_to_remove.txt \n--delete-keywords keywords\\firebird\\5.0\\delete-keywords.txt \n```\n\nFor Firebird 4:\n\n```\n--version 4.0 \n--keywords-source-file keywords\\firebird\\4.0\\keywords.cpp \n--override-non-reserved keywords\\firebird\\4.0\\non-reserved-override.txt \n--override-reserved keywords\\firebird\\4.0\\reserved-override.txt \n--delete-keywords keywords\\firebird\\fb_general_keywords_to_remove.txt \n--delete-keywords keywords\\firebird\\4.0\\delete-keywords.txt \n```\n\nFor Firebird 3:\n\n```\n--version 3.0 \n--keywords-source-file keywords\\firebird\\3.0\\keywords.cpp \n--override-non-reserved keywords\\firebird\\3.0\\non-reserved-override.txt \n--override-reserved keywords\\firebird\\3.0\\reserved-override.txt \n--delete-keywords keywords\\firebird\\fb_general_keywords_to_remove.txt \n--delete-keywords keywords\\firebird\\3.0\\delete-keywords.txt \n```\n\nFor Firebird 2.5:\n\n```\n--version 2.5 \n--keywords-source-file keywords\\firebird\\2.5\\keywords.cpp \n--override-non-reserved keywords\\firebird\\2.5\\non-reserved-override.txt \n--override-reserved keywords\\firebird\\2.5\\reserved-override.txt \n--delete-keywords keywords\\firebird\\fb_general_keywords_to_remove.txt \n--delete-keywords keywords\\firebird\\2.5\\delete-keywords.txt \n```\n\nFor Firebird 2.1:\n\n```\n--version 2.1 \n--keywords-source-file keywords\\firebird\\2.1\\keywords.cpp \n--override-non-reserved keywords\\firebird\\2.1\\non-reserved-override.txt \n--override-reserved keywords\\firebird\\2.1\\reserved-override.txt \n--delete-keywords keywords\\firebird\\fb_general_keywords_to_remove.txt \n--delete-keywords keywords\\firebird\\2.1\\delete-keywords.txt \n```\n\nFor Firebird 2.0:\n\n```\n--version 2.0 \n--keywords-source-file keywords\\firebird\\2.0\\keywords.cpp \n--override-non-reserved keywords\\firebird\\2.0\\non-reserved-override.txt \n--override-reserved keywords\\firebird\\2.0\\reserved-override.txt \n--delete-keywords keywords\\firebird\\fb_general_keywords_to_remove.txt \n--delete-keywords keywords\\firebird\\2.0\\delete-keywords.txt \n```\n\nTesting\n=======\n\nVerifying keyword reserved/non-reserved status\n\n```sql\nexecute block\n  returns (WORD varchar(50), FB_VERSION NUMERIC(2,1), RESERVED_T CHAR(1), REASON varchar(100))\nas\ndeclare RESERVED boolean;\ndeclare DUMMY integer;\ndeclare VERSION_TO_CHECK NUMERIC(2,1) = 2.0;\ndeclare REMOTE_DB VARCHAR(500) = 'localhost/30520:somefirebird20.fdb';\nbegin\n  for select WORD, FB_VERSION, RESERVED \n    from FB_KEYWORD \n    where FB_VERSION = :VERSION_TO_CHECK\n    order by WORD into :WORD, :FB_VERSION, :RESERVED\n  do\n  begin\n    reason = '';\n    RESERVED_T = case when RESERVED then 'T' else 'F' end;\n    begin\n      execute statement 'select 1 as ' || WORD || ' from rdb$database' \n        as user 'sysdba' password 'masterkey'\n        on external REMOTE_DB\n        into :dummy;\n      when any do\n      begin\n        if (not reserved) then\n        begin\n          REASON = 'Non-reserved word ' || WORD || ' yielded an error';\n          suspend;\n        end\n        else continue;\n      end\n    end\n    if (reserved) then\n    begin\n      REASON = 'Reserved word ' || WORD || ' did not yield error';\n      suspend;\n    end\n  end\n  REASON = null;\nend\n```\n\nProducing list of non-standard reserved words\n---------------------------------------------\n\n```sql\nselect list(WORD)\nfrom (\n  select fb.WORD\n  from FB_KEYWORD fb\n  left join SQL_KEYWORD sql\n    ON fb.WORD = sql.WORD and sql.SQL_VERSION = 2003\n  where fb.FB_VERSION = 4.0\n  and fb.RESERVED\n  and (sql.WORD is null or not sql.RESERVED)\n  order by fb.WORD\n) reserved\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrotteveel%2Ffirebird-reserved-words","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrotteveel%2Ffirebird-reserved-words","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrotteveel%2Ffirebird-reserved-words/lists"}