MORPJWQPOR6R5DQQIRJDECSJXLKWERA6ADZLL2FRZD7UKWI6JHQAC // isCreateTableAsSelect checks if SQL is CREATE TABLE ... AS SELECTfunc isCreateTableAsSelect(upper string) bool {if !strings.HasPrefix(upper, "CREATE TABLE") {return false}// Look for AS followed by whitespace and SELECTrest := upper[12:] // len("CREATE TABLE")// Find AS (followed by whitespace)asIdx := strings.Index(rest, " AS")if asIdx == -1 {return false}// Check if what follows AS is whitespace and then SELECTafterAs := rest[asIdx+3:] // skip " AS"afterAs = strings.TrimSpace(afterAs)return strings.HasPrefix(afterAs, "SELECT")}
// extractTableNameAsSelect extracts table name from CREATE TABLE ... AS SELECTfunc extractTableNameAsSelect(sql string) string {// CREATE TABLE name AS SELECT// or CREATE TABLE name AS\nSELECT (multiline)upper := strings.ToUpper(sql)idx := strings.Index(upper, "CREATE TABLE")if idx == -1 {return ""}rest := sql[idx+12:]rest = strings.TrimSpace(rest)// Find " AS" (followed by whitespace that leads to SELECT)asIdx := strings.Index(strings.ToUpper(rest), " AS")if asIdx == -1 {return ""}name := strings.TrimSpace(rest[:asIdx])return name}