code: func Cacheable(node ast.Node) bool {
  	_, isSelect := node.(*ast.SelectStmt)
  	_, isUpdate := node.(*ast.UpdateStmt)
  	_, isInsert := node.(*ast.InsertStmt)
  	_, isDelete := node.(*ast.DeleteStmt)
  	if !(isSelect || isUpdate || isInsert || isDelete) {
  		return false
  	}
  	checker := cacheableChecker{
  		cacheable: true,
  	}
  	node.Accept(&checker)
  	return checker.cacheable
  }
docs: // Cacheable checks whether the input ast is cacheable.