Back to list
koriym

sql-params-generate

by koriym

MySQL query analyzer that detects potential performance issues in SQL files.

3🍴 2📅 Jan 22, 2026

SKILL.md


name: sql-params-generate description: Generate parameter bindings for SQL files by analyzing database schema and extracting SQL placeholders. Queries the live database for table structures, matches placeholders to column types, and generates appropriate test values based on column patterns (IDs, dates, status enums, etc).

SQL Parameters Generator

Generate parameter bindings for SQL files by analyzing database schema and SQL placeholders.

Arguments

  • $ARGUMENTS: SQL directory path (e.g., "tests/sql")

Prerequisites

  • MySQL/MariaDB database must be running with the target schema loaded

Steps

1. Get Schema from Database

Query the database directly for the latest schema:

-- Get all tables
SHOW TABLES;

-- For each table, get columns
SELECT column_name, data_type, column_type, column_key
FROM information_schema.columns
WHERE table_schema = DATABASE() AND table_name = 'table_name';

-- Or use SHOW CREATE TABLE for complete DDL
SHOW CREATE TABLE table_name;

2. Scan SQL Files

For each .sql file in the directory:

  1. Extract placeholder parameters (:param_name or ? style)
  2. Parse SQL to identify referenced tables and columns
  3. Match placeholders to column types from schema

3. Generate Values by Type

Column PatternTypeGenerated Value
*_id, idINTrand(1, 1000)
statusVARCHAR/ENUMPick from actual ENUM values or common: 'active', 'pending'
emailVARCHAR'test@example.com'
name, titleVARCHAR'Test Value'
*_at, *_dateDATETIME/DATE'2024-01-01'
price, amount, total*DECIMAL100.00
count, quantity, limitINT10
is_*, has_*TINYINT1
content, body, textTEXT'Sample text content'

4. Write Parameter File

Output to {sql_dir}/../params/sql_params.php:

<?php

declare(strict_types=1);

return [
    '1_full_table_scan.sql' => ['min_views' => 1000],
    '2_filesort.sql' => ['status' => 'published', 'limit' => 10],
    // SQL files without placeholders use empty array
    '12_select1.sql' => [],
];

5. Validation

  • Warn if placeholder cannot be matched to any column
  • Skip files that are DDL-only (CREATE, DROP, ALTER)
  • Report any SQL files missing from output

Database Connection

Use the same connection settings as sql-quality:

  • DSN: mysql:host=127.0.0.1;dbname=test
  • User: root
  • Password: (empty)

Or read from environment / config file if available.

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon