Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test cases for DB query parsing and sanitization #1923

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
219 changes: 219 additions & 0 deletions docs/non-normative/db-sql-test-cases.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
[
{
"name": "numeric_literal_integers",
"db.system.name": "other_sql",
"sql": "SELECT 12, -12, +12",
"sanitized": [
"SELECT ?, ?, ?"
],
"db.query.summary": "SELECT"
},
{
"name": "numeric_literal_with_decimal_point",
"db.system.name": "other_sql",
"sql": "SELECT 12.34, -12.34, +12.34, .01, -.01",
"sanitized": [
"SELECT ?, ?, ?, ?, ?"
],
"db.query.summary": "SELECT"
},
{
"name": "numeric_literal_exponential",
"db.system.name": "other_sql",
"sql": "SELECT 12.34e56, -12.34e56, +12.34e56",
"sanitized": [
"SELECT ?, ?, ?"
],
"db.query.summary": "SELECT"
},
{
"name": "numeric_literal_negative_exponential",
"db.system.name": "other_sql",
"sql": "SELECT 12.34e-56, -12.34e-56, +12.34e-56",
"sanitized": [
"SELECT ?, ?, ?"
],
"db.query.summary": "SELECT"
},
{
"name": "arithmetic_on_numeric_literals",
"db.system.name": "other_sql",
"sql": "SELECT 99+100",
"sanitized": [
"SELECT ??"
],
"db.query.summary": "SELECT"
},
{
"name": "hex_literal",
"db.system.name": "other_sql",
"sql": "SELECT 0xDEADBEEF, 0XdeadBEEF",
"sanitized": [
"SELECT ?, ?"
],
"db.query.summary": "SELECT"
},
{
"name": "string_literal",
"db.system.name": "other_sql",
"sql": "SELECT 'hello'",
"sanitized": [
"SELECT ?"
],
"db.query.summary": "SELECT"
},
{
"name": "string_literal_escaped_single_quote",
"db.system.name": "other_sql",
"sql": "SELECT 'My name''s not important'",
"sanitized": [
"SELECT ?"
],
"db.query.summary": "SELECT"
},
{
"name": "string_with_embedded_newline",
"db.system.name": "other_sql",
"sql": "SELECT 'My name is \n not important'",
"sanitized": [
"SELECT ?"
],
"db.query.summary": "SELECT"
},
{
"name": "numbers_in_identifiers",
"db.system.name": "other_sql",
"sql": "SELECT c3po, r2d2 FROM covid19 WHERE n1h1=1234",
"sanitized": [
"SELECT c3po, r2d2 FROM covid19 WHERE n1h1=?"
],
"db.query.summary": "SELECT covid19"
},
{
"name": "periods_in_identifiers",
"db.system.name": "other_sql",
"sql": "SELECT a FROM dbo.Table JOIN dbo.AnotherTable",
"sanitized": [
"SELECT a FROM dbo.Table JOIN dbo.AnotherTable"
],
"db.query.summary": "SELECT dbo.Table dbo.AnotherTable"
},
{
"name": "insert_into",
"db.system.name": "other_sql",
"sql": "INSERT INTO X VALUES(1, 23456, 123.456, 99+100)",
"sanitized": [
"INSERT INTO X VALUES(?, ?, ?, ??)"
],
"db.query.summary": "INSERT X"
},
{
"name": "uuid",
"db.system.name": "other_sql",
"sql": "SELECT { guid '01234567-89ab-cdef-0123-456789abcdef' }",
"sanitized": [
"SELECT { guid ? }"
],
"db.query.summary": "SELECT"
},
{
"name": "in_clause",
"db.system.name": "other_sql",
"sql": "SELECT * FROM table WHERE value IN (123, 456, 'abc')",
"sanitized": [
"SELECT * FROM table WHERE value IN (?)",
"SELECT * FROM table WHERE value IN (?, ?, ?)"
],
"db.query.summary": "SELECT table"
},
{
"name": "comments",
"db.system.name": "other_sql",
"sql": "SELECT column -- end of line comment\nFROM /* block \n comment */ table",
"sanitized": [
"SELECT column \nFROM table"
],
"db.query.summary": "SELECT table"
},
{
"name": "insert_into_select",
"db.system.name": "other_sql",
"sql": "INSERT INTO shipping_details\n(order_id,\naddress)\nSELECT order_id,\naddress\nFROM orders\nWHERE order_id = 1",
"sanitized": [
"INSERT INTO shipping_details\n(order_id,\naddress)\nSELECT order_id,\naddress\nFROM orders\nWHERE order_id = ?"
],
"db.query.summary": "INSERT shipping_details SELECT orders"
},
{
"name": "select_nested_query",
"db.system.name": "other_sql",
"sql": "SELECT order_date\nFROM (SELECT *\nFROM orders o\nJOIN customers c\nON o.customer_id = c.customer_id)",
"sanitized": [
"SELECT order_date\nFROM (SELECT *\nFROM orders o\nJOIN customers c\nON o.customer_id = c.customer_id)"
],
"db.query.summary": "SELECT SELECT orders customers"
},
{
"name": "select_nested_query_case_preserved",
"db.system.name": "other_sql",
"sql": "SELEcT order_date\nFROM (sELECT *\nFROM orders o\nJOIN customers c\nON o.customer_id = c.customer_id)",
"sanitized": [
"SELEcT order_date\nFROM (sELECT *\nFROM orders o\nJOIN customers c\nON o.customer_id = c.customer_id)"
],
"db.query.summary": "SELEcT sELECT orders customers"
},
{
"name": "case_preserved",
"db.system.name": "other_sql",
"sql": "SELEcT order_date\nFROM ORders",
"sanitized": [
"SELEcT order_date\nFROM ORders"
],
"db.query.summary": "SELEcT ORders"
},
{
"name": "cross_join",
"db.system.name": "other_sql",
"sql": "SELECT * FROM Orders o CROSS JOIN OrderDetails od",
"sanitized": [
"SELECT * FROM Orders o CROSS JOIN OrderDetails od"
],
"db.query.summary": "SELECT Orders OrderDetails"
},
{
"name": "cross_join_comma_separated_syntax",
"db.system.name": "other_sql",
"sql": "SELECT * FROM Orders o, OrderDetails od",
"sanitized": [
"SELECT * FROM Orders o, OrderDetails od"
],
"db.query.summary": "SELECT Orders"
},
{
"name": "create_table",
"db.system.name": "other_sql",
"sql": "CREATE TABLE MyTable (\n ID NOT NULL IDENTITY(1,1) PRIMARY KEY\n)",
"sanitized": [
"CREATE TABLE MyTable (\n ID NOT NULL IDENTITY(?,?) PRIMARY KEY\n)"
],
"db.query.summary": "CREATE TABLE MyTable"
},
{
"name": "alter_table",
"db.system.name": "other_sql",
"sql": "ALTER TABLE MyTable ADD Name varchar(255)",
"sanitized": [
"ALTER TABLE MyTable ADD Name varchar(?)"
],
"db.query.summary": "ALTER TABLE MyTable"
},
{
"name": "drop_table",
"db.system.name": "other_sql",
"sql": "DROP TABLE MyTable",
"sanitized": [
"DROP TABLE MyTable"
],
"db.query.summary": "DROP TABLE MyTable"
}
]
Loading