[Spanner] v2: client-level queryOptions passed to SpannerClient are silently ignored
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
Línea de trabajo
Empieza por Spanner/src/Operation.php, alrededor de las líneas 103–109, y compara las llamadas a validateOptions() en ese archivo. El issue identifica el cambio en la desestructuración y las opciones afectadas; revisa las pruebas existentes de Spanner para las opciones a nivel de cliente y añade cobertura para returnInt64AsObject y defaultQueryOptions. El trabajo estará terminado cuando las opciones del constructor surtan efecto y pasen las pruebas pertinentes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In v2, queryOptions and returnInt64AsObject passed to SpannerClient have no effect, even though both are documented constructor options. Query-level queryOptions and the SPANNER_OPTIMIZER_* environment variables still work.
The options do reach Operation, but its constructor doesn't destructure the result of validateOptions() (Operation.php#L103-L109):
$options = $this->validateOptions(
$options,
['returnInt64AsObject', 'routeToLeader', 'defaultQueryOptions']
);
// $options is [[...]] here, so all three fall back to their defaults
$this->mapper = new ValueMapper($options['returnInt64AsObject'] ?? false);
$this->routeToLeader = $options['routeToLeader'] ?? true;
$this->defaultQueryOptions = $options['defaultQueryOptions'] ?? [];
Changing this to [$options] = $this->validateOptions(...), matching the other calls in Operation.php, fixes the issue.
This looks like a regression from the v2 rewrite (#7841). In v1, client-level query options were applied in Connection\Grpc and tested in GrpcTest. Both were removed with the Connection layer.
Environment details
- OS: Alpine Linux (Docker) + Spanner emulator
- PHP version: 8.4.16
- Package name and version: google/cloud-spanner v2.11.3
Steps to reproduce
- Create a
SpannerClientwithreturnInt64AsObject => true. - Run a query that returns an INT64.
Code example
<?php
// SPANNER_EMULATOR_HOST=localhost:9010 php repro.php
require 'vendor/autoload.php';
use Google\Cloud\Spanner\SpannerClient;
$client = new SpannerClient([
'projectId' => 'emulator-project',
'returnInt64AsObject' => true,
]);
$database = $client->connect('test-instance', 'test-database');
var_dump($database->execute('SELECT 1 AS x')->rows()->current()['x']);
// Expected: object(Google\Cloud\Core\Int64)
// Actual: int(1)
- Lenguaje dominante
- PHP
- Estrellas
- 1.2k
- Forks
- 466
- Merge medio
- 3 d 3 h
- PR fusionados (30 d)
- 49
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de googleapis/google-cloud-php
-
[Gax] RetryMiddleware keeps a reference to itself since v1.43.1, leaking the handler chain and its sockets in long-running processesPosiblemente ocupada @Hectorhammett la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
googleapis/google-cloud-php#9813 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
type: feature request
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
googleapis/google-cloud-php#9716 · 11 reacciones ·
Los mantenedores suelen responder en 2 días
-
[firebase/php-jwt] Support ML-DSA signing algorithmsPosiblemente ocupada @bshaffer la tomó hace 18 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
googleapis/google-cloud-php#9777 · 3 comentarios · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
googleapis/google-cloud-php#9725 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
googleapis/google-cloud-php#9675 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de googleapis/google-cloud-php
Issues similares
-
Awaiting Triage bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
openemr/openemr#14857 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
type: enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100