[
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER ",
    "afterCursor": "",
    "containsKeywords": ["TABLE"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest tables and databases",
    "beforeCursor": "ALTER TABLE ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {},
      "suggestDatabases": {
        "appendDot": true
      }
    }
  },
  {
    "namePrefix": "should suggest tables",
    "beforeCursor": "ALTER TABLE foo.",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {
        "identifierChain": [
          {
            "name": "foo"
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ",
    "afterCursor": "",
    "containsKeywords": ["PARTITION", "ADD"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo.bar ",
    "afterCursor": "",
    "containsKeywords": ["PARTITION", "ADD"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ",
    "afterCursor": "",
    "containsKeywords": ["RENAME TO", "PARTITION"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo RENAME ",
    "afterCursor": "",
    "containsKeywords": ["TO"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest tables and databases",
    "beforeCursor": "ALTER TABLE ",
    "afterCursor": " RENAME TO bar",
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {},
      "suggestDatabases": {
        "appendDot": true
      }
    }
  },
  {
    "namePrefix": "should suggest tables",
    "beforeCursor": "ALTER TABLE foo.",
    "afterCursor": " RENAME TO bar",
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {
        "identifierChain": [
          {
            "name": "foo"
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo PARTITION (a=1) RENAME ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["TO"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo PARTITION (a=1) RENAME TO ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["PARTITION"]
    }
  },
  {
    "namePrefix": "should suggest tables and databases",
    "beforeCursor": "ALTER TABLE ",
    "afterCursor": " PARTITION (a=1) RENAME TO PARTITION (b=1)",
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {},
      "suggestDatabases": {
        "appendDot": true
      }
    }
  },
  {
    "namePrefix": "should suggest tables",
    "beforeCursor": "ALTER TABLE foo.",
    "afterCursor": " PARTITION (a=1) RENAME TO PARTITION (b=1)",
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {
        "identifierChain": [
          {
            "name": "foo"
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ",
    "afterCursor": "",
    "containsKeywords": ["ADD COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ADD ",
    "afterCursor": "",
    "containsKeywords": ["COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest column types",
    "beforeCursor": "ALTER TABLE foo ADD COLUMNS (a ",
    "afterCursor": "",
    "containsKeywords": ["DEC"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ",
    "afterCursor": "",
    "containsKeywords": ["DROP COLUMN", "DROP COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo DROP ",
    "afterCursor": "",
    "containsKeywords": ["COLUMN", "COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE foo DROP COLUMN ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE foo DROP COLUMNS (",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE foo DROP COLUMNS (bar, ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ",
    "afterCursor": "",
    "containsKeywords": ["RENAME COLUMN"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo RENAME ",
    "afterCursor": "",
    "containsKeywords": ["COLUMN"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE foo RENAME COLUMN ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo RENAME COLUMN bar ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["TO"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE foo ",
    "afterCursor": "",
    "containsKeywords": ["ALTER", "CHANGE", "ALTER COLUMN", "CHANGE COLUMN"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE bar ALTER ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "bar"
              }
            ]
          }
        ]
      },
      "suggestKeywords": ["COLUMN"]
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE bar CHANGE ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "bar"
              }
            ]
          }
        ]
      },
      "suggestKeywords": ["COLUMN"]
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE bar ALTER COLUMN ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "bar"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "ALTER TABLE bar CHANGE COLUMN ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "bar"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest types",
    "beforeCursor": "ALTER TABLE bar CHANGE foo ",
    "afterCursor": "",
    "containsKeywords": ["BIGINT"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["REPLACE COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar REPLACE ",
    "afterCursor": "",
    "containsKeywords": ["COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar PARTITION (a=1) REPLACE ",
    "afterCursor": "",
    "containsKeywords": ["COLUMNS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["ADD", "ADD IF NOT EXISTS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ADD IF ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["NOT EXISTS"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ADD IF NOT ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["EXISTS"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ADD ",
    "afterCursor": " (PARTITION (a=1));",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["IF NOT EXISTS"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["DROP", "DROP IF EXISTS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar DROP ",
    "afterCursor": "",
    "containsKeywords": ["IF EXISTS", "PARTITION"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar DROP IF ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["EXISTS"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar DROP IF EXISTS ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["PARTITION"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar DROP PARTITION (a=1) ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["PURGE"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["SET", "SET TBLPROPERTIES", "UNSET TBLPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar SET ",
    "afterCursor": "",
    "containsKeywords": ["TBLPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar UNSET ",
    "afterCursor": "",
    "containsKeywords": ["TBLPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar UNSET TBLPROPERTIES ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["IF EXISTS"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar UNSET TBLPROPERTIES IF ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["EXISTS"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["SET", "SET SERDE", "SET SERDEPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar SET ",
    "afterCursor": "",
    "containsKeywords": ["SERDE", "SERDEPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar PARTITION (a=1) ",
    "afterCursor": "",
    "containsKeywords": ["SET", "SET SERDE", "SET SERDEPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar PARTITION (a=1) SET ",
    "afterCursor": "",
    "containsKeywords": ["SERDE", "SERDEPROPERTIES"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar SET SERDE \"asdf\" ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["WITH SERDEPROPERTIES"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar SET SERDE \"asdf\" WITH ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["SERDEPROPERTIES"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["SET", "SET FILEFORMAT", "SET LOCATION"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar PARTITION (a=1) ",
    "afterCursor": "",
    "containsKeywords": ["SET", "SET FILEFORMAT", "SET LOCATION"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar SET ",
    "afterCursor": "",
    "containsKeywords": ["FILEFORMAT", "LOCATION"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar PARTITION (a=1) SET ",
    "afterCursor": "",
    "containsKeywords": ["FILEFORMAT", "LOCATION"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar SET FILEFORMAT ",
    "afterCursor": "",
    "containsKeywords": ["PARQUET"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar ",
    "afterCursor": "",
    "containsKeywords": ["RECOVER PARTITIONS"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "ALTER TABLE bar RECOVER ",
    "afterCursor": "",
    "containsKeywords": ["PARTITIONS"],
    "expectedResult": {
      "lowerCase": false
    }
  }
]
