Skip to content

Conversation

kotahorii
Copy link
Contributor

Summary

This PR fixes parameter syntax inconsistency in the howto documentation where examples only showed PostgreSQL syntax ($1, $2), causing confusion and errors for MySQL and SQLite users.

Problem

As reported in #3697, the generic howto documentation files showed only PostgreSQL parameter syntax:

  • Used $1, $2 placeholders which only work with PostgreSQL
  • Caused silent failures in MySQL code generation (functions generated without parameters)
  • Caused syntax errors in SQLite compilation
  • Created confusion for developers using multi-database setups

Solution

Updated four key documentation files to include database-specific examples:

Modified Files:

  • docs/howto/update.md
  • docs/howto/insert.md
  • docs/howto/delete.md
  • docs/howto/select.md

Changes Made:

Added database-specific sections with clear syntax examples:

  • PostgreSQL: $1, $2 syntax
  • MySQL and SQLite: ? placeholder syntax

Added explanatory notes about parameter binding differences

Maintained existing Go code examples (they remain database-agnostic)

Added clarification about MySQL not supporting RETURNING clause

Example of Changes

Before:

-- name: UpdateAuthor :exec
UPDATE authors SET bio = $2 WHERE id = $1;

After:

**PostgreSQL:**
-- name: UpdateAuthor :exec
UPDATE authors SET bio = $2 WHERE id = $1;

**MySQL and SQLite:**
-- name: UpdateAuthor :exec
UPDATE authors SET bio = ? WHERE id = ?;

Impact

  • ✅ Eliminates confusion for MySQL/SQLite users
  • ✅ Prevents silent code generation failures
  • ✅ Provides clear guidance for multi-database projects
  • ✅ Maintains backward compatibility (PostgreSQL examples preserved)
  • ✅ Aligns with existing database-specific tutorial documentation

Test Plan

  • Verified all syntax examples are database-appropriate
  • Confirmed tutorials already use correct database-specific syntax
  • Ensured documentation structure remains consistent
  • Cross-referenced with official database documentation

Fixes #3697

🤖 Generated with Claude Code

Update howto documentation to include database-specific parameter syntax:
- PostgreSQL: $1, $2, etc.
- MySQL/SQLite: ? placeholders

Changes made to:
- docs/howto/update.md
- docs/howto/insert.md
- docs/howto/delete.md
- docs/howto/select.md

This resolves confusion where the generic examples only showed PostgreSQL
syntax, causing silent failures in MySQL code generation and syntax errors
in SQLite.

Fixes sqlc-dev#3697

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Aug 2, 2025
@kyleconroy kyleconroy merged commit 17ace55 into sqlc-dev:main Aug 2, 2025
8 checks passed
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Aug 2, 2025
@kotahorii kotahorii deleted the fix-mysql-sqlite-docs-syntax branch August 3, 2025 01:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lgtm This PR has been approved by a maintainer size:M This PR changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Updating Rows: Documented syntax doesn't produce expected result for MySQL and Sqlite
2 participants