diff --git a/python/BUILD.gn b/python/BUILD.gn
index dbd1e9d..8c42d14 100644
--- a/python/BUILD.gn
+++ b/python/BUILD.gn
@@ -24,9 +24,9 @@
 
 perfetto_py_library("trace_processor_stdlib_docs") {
   sources = [
-    "generators/stdlib_docs/extractor.py",
-    "generators/stdlib_docs/parse.py",
-    "generators/stdlib_docs/utils.py",
+    "generators/sql_processing/docs_extractor.py",
+    "generators/sql_processing/docs_parse.py",
+    "generators/sql_processing/utils.py",
   ]
 }
 
diff --git a/python/generators/stdlib_docs/extractor.py b/python/generators/sql_processing/docs_extractor.py
similarity index 91%
rename from python/generators/stdlib_docs/extractor.py
rename to python/generators/sql_processing/docs_extractor.py
index fce88f2..52fbd66 100644
--- a/python/generators/stdlib_docs/extractor.py
+++ b/python/generators/sql_processing/docs_extractor.py
@@ -17,10 +17,10 @@
 from re import Match
 from typing import List, Optional, Tuple
 
-from python.generators.stdlib_docs.utils import ObjKind
-from python.generators.stdlib_docs.utils import extract_comment
-from python.generators.stdlib_docs.utils import match_pattern
-from python.generators.stdlib_docs.utils import PATTERN_BY_KIND
+from python.generators.sql_processing.utils import ObjKind
+from python.generators.sql_processing.utils import extract_comment
+from python.generators.sql_processing.utils import match_pattern
+from python.generators.sql_processing.utils import PATTERN_BY_KIND
 
 
 class DocsExtractor:
diff --git a/python/generators/stdlib_docs/parse.py b/python/generators/sql_processing/docs_parse.py
similarity index 93%
rename from python/generators/stdlib_docs/parse.py
rename to python/generators/sql_processing/docs_parse.py
index 26b3c49..079a600 100644
--- a/python/generators/stdlib_docs/parse.py
+++ b/python/generators/sql_processing/docs_parse.py
@@ -17,18 +17,18 @@
 from dataclasses import dataclass
 import re
 import sys
-from typing import Any, Dict, List, Optional, Set, Tuple, Union
+from typing import Any, Dict, List, Optional, Set, Tuple
 
-from python.generators.stdlib_docs.extractor import DocsExtractor
-from python.generators.stdlib_docs.utils import ObjKind
-from python.generators.stdlib_docs.utils import ARG_ANNOTATION_PATTERN
-from python.generators.stdlib_docs.utils import NAME_AND_TYPE_PATTERN
-from python.generators.stdlib_docs.utils import FUNCTION_RETURN_PATTERN
-from python.generators.stdlib_docs.utils import COLUMN_ANNOTATION_PATTERN
+from python.generators.sql_processing.docs_extractor import DocsExtractor
+from python.generators.sql_processing.utils import ObjKind
+from python.generators.sql_processing.utils import ARG_ANNOTATION_PATTERN
+from python.generators.sql_processing.utils import NAME_AND_TYPE_PATTERN
+from python.generators.sql_processing.utils import FUNCTION_RETURN_PATTERN
+from python.generators.sql_processing.utils import COLUMN_ANNOTATION_PATTERN
 
 
 def is_internal(name: str) -> bool:
-  return re.match(r'^internal_.*', name, re.IGNORECASE)
+  return re.match(r'^internal_.*', name, re.IGNORECASE) is not None
 
 
 def is_snake_case(s: str) -> bool:
@@ -264,7 +264,7 @@
   def __init__(self, path: str, module: str):
     super().__init__(path, module)
 
-  def parse(self, doc: DocsExtractor.Extract) -> TableFunction:
+  def parse(self, doc: DocsExtractor.Extract) -> Optional[TableFunction]:
     self.name, args, columns, _ = doc.obj_match
 
     # Ignore internal functions.
diff --git a/python/generators/stdlib_docs/utils.py b/python/generators/sql_processing/utils.py
similarity index 72%
rename from python/generators/stdlib_docs/utils.py
rename to python/generators/sql_processing/utils.py
index bc01c32..345c800 100644
--- a/python/generators/stdlib_docs/utils.py
+++ b/python/generators/sql_processing/utils.py
@@ -16,7 +16,7 @@
 import re
 from typing import Dict, List
 
-NAME = r'[a-zA-Z_\d]+'
+NAME = r'[a-zA-Z_\d\{\}]+'
 ANY_WORDS = r'[^\s].*'
 ANY_NON_QUOTE = r'[^\']*.*'
 TYPE = r'[A-Z]+'
@@ -25,16 +25,19 @@
 
 CREATE_TABLE_VIEW_PATTERN = (
     # Match create table/view and catch type
-    fr'CREATE{WS}(?:VIRTUAL )?{WS}(TABLE|VIEW){WS}(?:IF NOT EXISTS)?{WS}'
+    fr'^CREATE{WS}(?:VIRTUAL )?{WS}(TABLE|VIEW){WS}(?:IF NOT EXISTS)?{WS}'
     # Catch the name
     fr'{WS}({NAME}){WS}(?:AS|USING)?{WS}.*')
 
+DROP_TABLE_VIEW_PATTERN = (fr'^DROP{WS}(TABLE|VIEW){WS}IF{WS}EXISTS{WS}'
+                           fr'({NAME});$')
+
 CREATE_FUNCTION_PATTERN = (
-    # Function name: we are matching everything [A-Z]* between ' and ).
+    # Function name.
     fr"CREATE{WS}PERFETTO{WS}FUNCTION{WS}({NAME}){WS}"
-    # Args: anything before closing bracket.
+    # Args: anything in the brackets.
     fr"{WS}\({WS}({ANY_WORDS}){WS}\){WS}"
-    # Type: [A-Z]* between two '.
+    # Type: word after RETURNS.
     fr"{WS}RETURNS{WS}({TYPE}){WS}AS{WS}"
     # Sql: Anything between ' and ');. We are catching \'.
     fr"{WS}({SQL});")
@@ -50,6 +53,14 @@
     # Sql: Anything between ' and ');. We are catching \'.
     fr"{WS}'{WS}({SQL}){WS}'{WS}\){WS};")
 
+COLUMN_ANNOTATION_PATTERN = fr'^\s*({NAME})\s*({ANY_WORDS})'
+
+NAME_AND_TYPE_PATTERN = fr'\s*({NAME})\s+({TYPE})\s*'
+
+ARG_ANNOTATION_PATTERN = fr'\s*{NAME_AND_TYPE_PATTERN}\s+({ANY_WORDS})'
+
+FUNCTION_RETURN_PATTERN = fr'^\s*({TYPE})\s+({ANY_WORDS})'
+
 
 class ObjKind(str, Enum):
   table_view = 'table_view'
@@ -63,13 +74,16 @@
     ObjKind.view_function: CREATE_VIEW_FUNCTION_PATTERN,
 }
 
-COLUMN_ANNOTATION_PATTERN = fr'^\s*({NAME})\s*({ANY_WORDS})'
 
-NAME_AND_TYPE_PATTERN = fr'\s*({NAME})\s+({TYPE})\s*'
-
-ARG_ANNOTATION_PATTERN = fr'\s*{NAME_AND_TYPE_PATTERN}\s+({ANY_WORDS})'
-
-FUNCTION_RETURN_PATTERN = fr'^\s*({TYPE})\s+({ANY_WORDS})'
+# Given a regex pattern and a string to match against, returns all the
+# matching positions. Specifically, it returns a dictionary from the line
+# number of the match to the regex match object.
+def match_pattern(pattern: str, file_str: str) -> Dict[int, re.Match]:
+  line_number_to_matches = {}
+  for match in re.finditer(pattern, file_str, re.MULTILINE):
+    line_id = file_str[:match.start()].count('\n')
+    line_number_to_matches[line_id] = match.groups()
+  return line_number_to_matches
 
 
 # Given a list of lines in a text and the line number, scans backwards to find
@@ -88,12 +102,25 @@
   return comments
 
 
-# Given a regex pattern and a string to match against, returns all the
-# matching positions. Specifically, it returns a dictionary from the line
-# number of the match to the regex match object.
-def match_pattern(pattern: str, file_str: str) -> Dict[int, re.Match]:
-  line_number_to_matches = {}
-  for match in re.finditer(pattern, file_str):
-    line_id = file_str[:match.start()].count('\n')
-    line_number_to_matches[line_id] = match.groups()
-  return line_number_to_matches
+# Given SQL string check whether any of the words is used, and create error
+# string if needed.
+def check_banned_words(sql: str, path: str) -> List[str]:
+  lines = [l.strip() for l in sql.split('\n')]
+  errors = []
+
+  # Ban the use of LIKE in non-comment lines.
+  for line in lines:
+    if line.startswith('--'):
+      continue
+
+    if 'like' in line.casefold():
+      errors.append(
+          'LIKE is banned in trace processor metrics. Prefer GLOB instead.\n'
+          f'Offending file: {path}\n')
+      continue
+
+    if 'create_function' in line.casefold():
+      errors.append('CREATE_FUNCTION is deprecated in trace processor. '
+                    'Prefer CREATE PERFETTO FUNCTION instead.\n'
+                    f'Offending file: {path}')
+  return errors
diff --git a/python/test/stdlib_unittest.py b/python/test/stdlib_unittest.py
index 821087b..d1a90be 100644
--- a/python/test/stdlib_unittest.py
+++ b/python/test/stdlib_unittest.py
@@ -20,7 +20,7 @@
     os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 sys.path.append(os.path.join(ROOT_DIR))
 
-from python.generators.stdlib_docs.parse import parse_file
+from python.generators.sql_processing.docs_parse import parse_file
 
 DESC = """--
 -- First line.
