Skip to content

feat: Support SELECT FOR UPDATE/SHARE (row locking) #194

@ajitpratap0

Description

@ajitpratap0

Description

Add support for row-level locking clauses in SELECT statements.

Example SQL

-- Basic FOR UPDATE
SELECT * FROM accounts WHERE id = 1 FOR UPDATE;

-- FOR SHARE (shared lock)
SELECT * FROM products WHERE category = 'electronics' FOR SHARE;

-- With NOWAIT
SELECT * FROM inventory WHERE sku = 'ABC' FOR UPDATE NOWAIT;

-- With SKIP LOCKED
SELECT * FROM jobs WHERE status = 'pending' FOR UPDATE SKIP LOCKED;

-- Specific tables
SELECT * FROM orders o JOIN items i ON o.id = i.order_id FOR UPDATE OF orders;

Current Behavior

FOR UPDATE/SHARE clauses are not parsed.

Expected Behavior

Parser should recognize FOR UPDATE/SHARE with optional NOWAIT, SKIP LOCKED, and OF table_name modifiers.

Priority

Medium - important for transaction safety

Implementation Notes

  • Add ForClause AST node with LockType, Tables, NoWait, SkipLocked fields
  • Add to SelectStatement AST structure
  • Support multiple lock types: UPDATE, SHARE, NO KEY UPDATE, KEY SHARE

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions