Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Positional nil validation for composite placeholder types

Open
#2 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
clickhouse, ruby
Domain
database

Research direction

Start with ClickHouse::SQL::Query#validate_nil_placeholders! and inspect PlaceholderType, the proposed home for composite-type parsing. Trace Map(K, V), Tuple(...), and nested Array(...) handling, then verify that each nil is checked against its positional member type rather than any Nullable(...) member.

Written by the indexing model from the issue text.

Description

Follow-up from PR #1 review feedback.

ClickHouse::SQL::Query#validate_nil_placeholders! guards nils in container values with a containment heuristic:

next if type.include?("Nullable(")

Once any member of a composite type is Nullable(...), nils are permitted anywhere in the bound value. For example, a nil key bound to Map(String, Nullable(String)) passes validation and is serialized as NULL, only failing (or worse, being silently coerced, e.g. String parsing \N as empty string) at ClickHouse.

A positionally correct check requires parsing composite ClickHouse types (Map(K, V), Tuple(...), nested Array(...)) and validating each nil against the specific member type it binds to. PlaceholderType would be the natural home for that parsing.

Deemed out of scope for the initial import; the heuristic's limits are documented in a code comment as of fda546ced48.

Dominant language
Ruby
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Getting set up

We have not checked this project's setup files yet. Start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Similar issues

More Ruby issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.