Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Omitted non-null variables with defaults are rejected as null

Aperta Adatta ai principianti
#5,843 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
ruby

Direzione di ricerca

Inizia in lib/graphql/query/variables.rb, nella parte relativa alla validazione delle variabili e alla gestione dei valori predefiniti indicata nell’issue. Riproduci il problema con la query Ruby fornita e una variabile omessa, quindi controlla anche il caso di null esplicito. Il lavoro è concluso quando la variabile omessa usa il valore predefinito dichiarato e null esplicito continua a essere rifiutato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

GraphQL Ruby rejects an omitted non-null variable even when its definition provides a valid default (ex: $var: String! = "x"). The variable-coercion specification requires applying the default when the variable is omitted. Explicit null should still be rejected.

GraphQL Ruby reproduction

gem "graphql", "2.6.11"
require "graphql"
require "json"

class Query < GraphQL::Schema::Object
  field :echo, String, null: false do
    argument :value, String, required: true
  end

  def echo(value:)
    value
  end
end

class Schema < GraphQL::Schema
  query(Query)
end

document = 'query($value: String! = "default") { echo(value: $value) }'
puts JSON.pretty_generate(Schema.execute(document, variables: {}).to_h)

Expected:

{"data":{"echo":"default"}}

Actual: execution fails with:

Variable $value of type String! was provided invalid value

The error’s extensions report value: null and Expected value to not be null, although the variable was omitted.

Equivalent GraphQL-JS reproduction

const { buildSchema, graphqlSync } = require("graphql");

const schema = buildSchema("type Query { echo(value: String!): String! }");
const source = 'query($value: String! = "default") { echo(value: $value) }';

const result = graphqlSync({
  schema,
  source,
  rootValue: { echo: ({ value }) => value },
  variableValues: {},
});

console.log(JSON.stringify(result, null, 2));

GraphQL-JS returns the expected result:

{"data":{"echo":"default"}}

The likely cause is in GraphQL::Query::Variables: the supplied value is validated before the omitted-variable default is considered. For a non-null variable, that validation fails before the default can be applied.

Lingua principale
Ruby
Stelle
5.4k
Fork
1.4k
Merge medio
1g 8h
PR unite (30g)
74

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di rmosolgo/graphql-ruby

Tutte le issue di rmosolgo/graphql-ruby

Issue simili

Altre issue su Ruby

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.