[Spanner] v2: client-level queryOptions passed to SpannerClient are silently ignored
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
- 84/100
Direzione di ricerca
Inizia da Spanner/src/Operation.php, intorno alle righe 103–109, e confronta le chiamate a validateOptions() in quel file. L’issue indica la modifica alla destrutturazione e le opzioni interessate; controlla i test Spanner esistenti per le opzioni a livello client e aggiungi test per returnInt64AsObject e defaultQueryOptions. Il lavoro è completato quando le opzioni del costruttore hanno effetto e i test pertinenti passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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)
- Lingua principale
- PHP
- Stelle
- 1.2k
- Fork
- 466
- Merge medio
- 2g 12h
- PR unite (30g)
- 50
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di 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 processesForse già presa @Hectorhammett l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
googleapis/google-cloud-php#9813 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
type: feature request
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
googleapis/google-cloud-php#9716 · 11 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
[firebase/php-jwt] Support ML-DSA signing algorithmsForse già presa @bshaffer l’ha presa 21 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
googleapis/google-cloud-php#9777 · 3 commenti · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
googleapis/google-cloud-php#9725 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
googleapis/google-cloud-php#9675 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di googleapis/google-cloud-php
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
CMS video element: "CmsVideoPlugin" sets `volume = 0`, so videos cannot be unmuted on Android ChromeApertaneeds-triage Platform(Default)
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
GD decoder discards the finfo media type in mediaTypeByBinary() since 4.4.0Forse già presa @lazerg l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
Intervention/image#1556 ·
I maintainer di solito rispondono entro 1 giorno
-
bug No Code Attached Yet
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
joomla/joomla-cms#48730 ·
I maintainer di solito rispondono entro 1 giorno
-
[Sync EN] Add more details about the array returned from openssl_x509_parse (php#2666) (#6013)Apertasync-en
Difficoltà 1/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno