[
  {
    "namePrefix": "should not find errors",
    "beforeCursor": "INSERT INTO TABLE db.tbl PARTITION (a=1,b=2) (c,d) VALUES (NULL , 1), ( 2, 3 ); ",
    "afterCursor": "",
    "noErrors": true,
    "containsKeywords": ["SELECT"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should not find errors",
    "beforeCursor": "INSERT INTO TABLE db.tbl PARTITION (a=1,b=2) (c,d) SELECT 1; ",
    "afterCursor": "",
    "noErrors": true,
    "containsKeywords": ["SELECT"],
    "expectedResult": {
      "lowerCase": false
    }
  },
  {
    "namePrefix": "should suggest tables",
    "beforeCursor": "INSERT db.",
    "afterCursor": "",
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {
        "identifierChain": [
          {
            "name": "db"
          }
        ],
        "tablesOnly": true
      }
    }
  },
  {
    "namePrefix": "should suggest tables",
    "beforeCursor": "INSERT INTO db.",
    "afterCursor": "",
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {
        "identifierChain": [
          {
            "name": "db"
          }
        ],
        "tablesOnly": true
      }
    }
  },
  {
    "namePrefix": "should suggest tables",
    "beforeCursor": "INSERT OVERWRITE TABLE db.",
    "afterCursor": "",
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestTables": {
        "identifierChain": [
          {
            "name": "db"
          }
        ],
        "tablesOnly": true
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT db ",
    "afterCursor": "",
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["PARTITION", "SELECT", "VALUES"]
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "INSERT OVERWRITE TABLE foo.tbl ( ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              },
              {
                "name": "tbl"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "INSERT OVERWRITE TABLE foo.tbl PARTITION ( ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              },
              {
                "name": "tbl"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest columns",
    "beforeCursor": "INSERT OVERWRITE TABLE foo.tbl PARTITION (a = 1) (b, c, ",
    "afterCursor": "",
    "expectedResult": {
      "lowerCase": false,
      "suggestColumns": {
        "tables": [
          {
            "identifierChain": [
              {
                "name": "foo"
              },
              {
                "name": "tbl"
              }
            ]
          }
        ]
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT INTO TABLE db.tbl PARTITION (a = 1) (b) ",
    "afterCursor": "",
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["SELECT", "VALUES"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT OVERWRITE tbl (b) ",
    "afterCursor": "",
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["SELECT", "VALUES"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT OVERWRITE tbl PARTITION (b = '123') SELECT ",
    "afterCursor": "",
    "containsKeywords": ["*", "CASE", "ALL", "DISTINCT", "FALSE", "NULL", "TRUE"],
    "noErrors": true,
    "expectedResult": {
      "lowerCase": false,
      "suggestAggregateFunctions": {
        "tables": []
      },
      "suggestAnalyticFunctions": true,
      "suggestFunctions": {},
      "suggestTables": {
        "prependQuestionMark": true,
        "prependFrom": true
      },
      "suggestDatabases": {
        "prependQuestionMark": true,
        "prependFrom": true,
        "appendDot": true
      }
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT ",
    "afterCursor": " db.tbl VALUES (1);",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["INTO", "INTO TABLE", "OVERWRITE", "OVERWRITE TABLE", "TABLE"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT OVERWRITE ",
    "afterCursor": " db.tbl VALUES (1);",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["TABLE"]
    }
  },
  {
    "namePrefix": "should suggest keywords",
    "beforeCursor": "INSERT OVERWRITE db.tbl ",
    "afterCursor": " SELECT * FROM foo;",
    "expectedResult": {
      "lowerCase": false,
      "suggestKeywords": ["PARTITION"]
    }
  }
]
