Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: googleapis/python-spanner
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.50.1
Choose a base ref
...
head repository: googleapis/python-spanner
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.51.0
Choose a head ref
  • 13 commits
  • 42 files changed
  • 6 contributors

Commits on Nov 15, 2024

  1. feat(spanner): implement custom tracer_provider injection for opentel…

    …emetry traces (#1229)
    
    * all: implement custom tracer_provider injection
    
    An important feature for observability is to allow the injection
    of a custom tracer_provider instead of always using the global
    tracer_provider by sending in
    
        observability_options=dict(
            tracer_provider=tracer_provider,
            enable_extended_tracing=True,
        )
    
    * Address review feedback by attaching observability_options to Client only
    
    * Attach observability_options directly before trace_call
    
    * More reverts for formatting
    
    * Plumb observability_options into _restart_on_unavailable
    
    * completely decouple observability_options from session
    
    * apply SPANNER_ENABLE_EXTENDED_TRACING but in inverse due to compatibility
    
    * Document SPANNER_ENABLE_EXTENDED_TRACING in environment
    
    * Revert a vestige of mock
    
    * tests: add unit test for propagating TracerProvider
    
    * Add preliminary end-to-end test to check for injection of observability_options
    
    * Document default enable_extended_tracing value
    
    * Carve out observability_options test
    
    * Ensure that observability_options test sets up and deletes database
    
    * Ensure instance.create() is invoked in system tests
    
    * Use getattr for mock _Client
    
    * Update with code review suggestions
    
    * Deal with mock.Mock false positives failing tests
    
    * Address review feedback
    odeke-em authored Nov 15, 2024
    Configuration menu
    Copy the full SHA
    6869ed6 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2024

  1. docs(samples): Add samples for Cloud Spanner Default Backup Schedules (

    …#1238)
    
    * chore(samples): Add samples for Cloud Spanner Default Backup Schedules
    
    * chore(samples): Add samples for Cloud Spanner Default Backup Schedules
    Fix field name in code samples.
    
    * chore(samples): Add samples for Cloud Spanner Default Backup Schedules
    Fix field name in code samples.
    
    ---------
    
    Co-authored-by: Sri Harsha CH <57220027+harshachinta@users.noreply.github.com>
    Sally-Ye and harshachinta authored Nov 18, 2024
    Configuration menu
    Copy the full SHA
    054a186 View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2024

  1. perf: optimize ResultSet decoding (#1244)

    * perf: optimize ResultSet decoding
    
    ResultSet decoding went through a long if-elif-else construct for
    every row and every column to determine how to decode that specific
    cell. This caused large result sets to see a significantly higher
    decoding time than necessary, as determining how to decode a column
    only needs to be determined once for the entire ResultSet.
    
    This change therefore collects the decoders once before starting to
    decode any rows. It does this by:
    1. Iterating over the columns in the ResultSet and get a decoder
       for the specific type of that column.
    2. Store those decoders as function references in an array.
    3. Pick the appropriate function directly from this array each time
       a column needs to be decoded.
    
    Selecting and decoding a query result with 100 rows consisting of
    24 columns (one for each supported data type) takes ~35-40ms without
    this change, and ~18-20ms with this change. The following benchmarks
    were executed locally against an in-mem mock Spanner server running
    in Java. The latter was chosen because:
    1. We have a random ResultSet generator in Java that can be used for
       this.
    2. Having the mock Spanner server running in a separate process and
       in another programming language reduces the chance that the mock
       server itself has an impact on the differences that we see between
       the different runs.
    
    Results without this change (100 iterations):
    
    ```
    Elapsed:  43.5490608215332 ms
    Elapsed:  39.53838348388672 ms
    Elapsed:  38.68389129638672 ms
    Elapsed:  38.26117515563965 ms
    Elapsed:  38.28692436218262 ms
    Elapsed:  38.12098503112793 ms
    Elapsed:  39.016008377075195 ms
    Elapsed:  38.15174102783203 ms
    Elapsed:  38.3448600769043 ms
    Elapsed:  38.00082206726074 ms
    Elapsed:  38.0091667175293 ms
    Elapsed:  38.02800178527832 ms
    Elapsed:  38.03110122680664 ms
    Elapsed:  38.42306137084961 ms
    Elapsed:  38.535356521606445 ms
    Elapsed:  38.86699676513672 ms
    Elapsed:  38.702964782714844 ms
    Elapsed:  38.881778717041016 ms
    Elapsed:  38.08116912841797 ms
    Elapsed:  38.084983825683594 ms
    Elapsed:  38.04278373718262 ms
    Elapsed:  38.74492645263672 ms
    Elapsed:  38.57111930847168 ms
    Elapsed:  38.17009925842285 ms
    Elapsed:  38.64407539367676 ms
    Elapsed:  38.00559043884277 ms
    Elapsed:  38.06161880493164 ms
    Elapsed:  38.233280181884766 ms
    Elapsed:  38.48695755004883 ms
    Elapsed:  38.71011734008789 ms
    Elapsed:  37.92428970336914 ms
    Elapsed:  38.8491153717041 ms
    Elapsed:  38.90705108642578 ms
    Elapsed:  38.20919990539551 ms
    Elapsed:  38.07401657104492 ms
    Elapsed:  38.30099105834961 ms
    Elapsed:  38.07377815246582 ms
    Elapsed:  38.61117362976074 ms
    Elapsed:  39.58392143249512 ms
    Elapsed:  39.69216346740723 ms
    Elapsed:  38.27810287475586 ms
    Elapsed:  37.88185119628906 ms
    Elapsed:  38.763999938964844 ms
    Elapsed:  39.05320167541504 ms
    Elapsed:  38.82408142089844 ms
    Elapsed:  38.47217559814453 ms
    Elapsed:  38.024187088012695 ms
    Elapsed:  38.07687759399414 ms
    Elapsed:  38.11931610107422 ms
    Elapsed:  37.9488468170166 ms
    Elapsed:  38.04421424865723 ms
    Elapsed:  38.57421875 ms
    Elapsed:  39.543867111206055 ms
    Elapsed:  38.4981632232666 ms
    Elapsed:  37.89806365966797 ms
    Elapsed:  38.0861759185791 ms
    Elapsed:  38.72990608215332 ms
    Elapsed:  38.47217559814453 ms
    Elapsed:  38.71774673461914 ms
    Elapsed:  38.27619552612305 ms
    Elapsed:  38.08403015136719 ms
    Elapsed:  38.6350154876709 ms
    Elapsed:  38.03229331970215 ms
    Elapsed:  39.01100158691406 ms
    Elapsed:  38.4981632232666 ms
    Elapsed:  38.25807571411133 ms
    Elapsed:  38.59400749206543 ms
    Elapsed:  38.83624076843262 ms
    Elapsed:  38.584232330322266 ms
    Elapsed:  39.54625129699707 ms
    Elapsed:  38.268089294433594 ms
    Elapsed:  39.3218994140625 ms
    Elapsed:  37.9948616027832 ms
    Elapsed:  38.05804252624512 ms
    Elapsed:  38.88821601867676 ms
    Elapsed:  38.08021545410156 ms
    Elapsed:  38.22588920593262 ms
    Elapsed:  37.97507286071777 ms
    Elapsed:  38.03110122680664 ms
    Elapsed:  37.91308403015137 ms
    Elapsed:  38.00201416015625 ms
    Elapsed:  38.529157638549805 ms
    Elapsed:  38.44308853149414 ms
    Elapsed:  38.87534141540527 ms
    Elapsed:  38.85912895202637 ms
    Elapsed:  38.48695755004883 ms
    Elapsed:  38.41686248779297 ms
    Elapsed:  38.10882568359375 ms
    Elapsed:  37.98198699951172 ms
    Elapsed:  38.50507736206055 ms
    Elapsed:  38.16986083984375 ms
    Elapsed:  38.07711601257324 ms
    Elapsed:  37.92715072631836 ms
    Elapsed:  37.93692588806152 ms
    Elapsed:  38.04588317871094 ms
    Elapsed:  38.62190246582031 ms
    Elapsed:  38.5129451751709 ms
    Elapsed:  37.960052490234375 ms
    Elapsed:  37.99295425415039 ms
    Elapsed:  38.45930099487305 ms
    
    ```
    
    Results with this change:
    
    ```
    Elapsed:  21.09503746032715 ms
    Elapsed:  17.00878143310547 ms
    Elapsed:  17.43626594543457 ms
    Elapsed:  16.201019287109375 ms
    Elapsed:  16.66712760925293 ms
    Elapsed:  15.926837921142578 ms
    Elapsed:  16.408205032348633 ms
    Elapsed:  16.13783836364746 ms
    Elapsed:  16.27206802368164 ms
    Elapsed:  17.15087890625 ms
    Elapsed:  16.06607437133789 ms
    Elapsed:  16.852855682373047 ms
    Elapsed:  23.713111877441406 ms
    Elapsed:  17.20905303955078 ms
    Elapsed:  16.60609245300293 ms
    Elapsed:  16.30997657775879 ms
    Elapsed:  15.933990478515625 ms
    Elapsed:  15.688180923461914 ms
    Elapsed:  16.228914260864258 ms
    Elapsed:  16.252994537353516 ms
    Elapsed:  16.33000373840332 ms
    Elapsed:  15.842676162719727 ms
    Elapsed:  16.328096389770508 ms
    Elapsed:  16.4949893951416 ms
    Elapsed:  16.47210121154785 ms
    Elapsed:  16.674041748046875 ms
    Elapsed:  15.768766403198242 ms
    Elapsed:  16.48569107055664 ms
    Elapsed:  15.876054763793945 ms
    Elapsed:  16.852140426635742 ms
    Elapsed:  16.035079956054688 ms
    Elapsed:  16.407012939453125 ms
    Elapsed:  15.882015228271484 ms
    Elapsed:  16.71886444091797 ms
    Elapsed:  15.86294174194336 ms
    Elapsed:  16.566038131713867 ms
    Elapsed:  15.904903411865234 ms
    Elapsed:  16.289234161376953 ms
    Elapsed:  16.14999771118164 ms
    Elapsed:  16.31784439086914 ms
    Elapsed:  16.106843948364258 ms
    Elapsed:  16.581058502197266 ms
    Elapsed:  16.435861587524414 ms
    Elapsed:  15.904903411865234 ms
    Elapsed:  16.408205032348633 ms
    Elapsed:  16.062021255493164 ms
    Elapsed:  16.256093978881836 ms
    Elapsed:  15.87367057800293 ms
    Elapsed:  16.23702049255371 ms
    Elapsed:  16.745805740356445 ms
    Elapsed:  15.92707633972168 ms
    Elapsed:  16.142845153808594 ms
    Elapsed:  16.492843627929688 ms
    Elapsed:  21.553754806518555 ms
    Elapsed:  17.05002784729004 ms
    Elapsed:  16.932964324951172 ms
    Elapsed:  16.810894012451172 ms
    Elapsed:  16.577720642089844 ms
    Elapsed:  15.714168548583984 ms
    Elapsed:  16.2351131439209 ms
    Elapsed:  16.072988510131836 ms
    Elapsed:  16.038894653320312 ms
    Elapsed:  16.055822372436523 ms
    Elapsed:  16.378164291381836 ms
    Elapsed:  15.806913375854492 ms
    Elapsed:  15.5792236328125 ms
    Elapsed:  15.954732894897461 ms
    Elapsed:  15.566825866699219 ms
    Elapsed:  15.707969665527344 ms
    Elapsed:  15.514135360717773 ms
    Elapsed:  15.43116569519043 ms
    Elapsed:  15.332937240600586 ms
    Elapsed:  15.470027923583984 ms
    Elapsed:  15.269756317138672 ms
    Elapsed:  15.250921249389648 ms
    Elapsed:  15.47694206237793 ms
    Elapsed:  15.306949615478516 ms
    Elapsed:  15.72728157043457 ms
    Elapsed:  15.938043594360352 ms
    Elapsed:  16.324996948242188 ms
    Elapsed:  16.198158264160156 ms
    Elapsed:  15.982627868652344 ms
    Elapsed:  16.308069229125977 ms
    Elapsed:  17.843246459960938 ms
    Elapsed:  15.820026397705078 ms
    Elapsed:  16.428232192993164 ms
    Elapsed:  15.978097915649414 ms
    Elapsed:  16.347885131835938 ms
    Elapsed:  16.026020050048828 ms
    Elapsed:  16.362905502319336 ms
    Elapsed:  16.900062561035156 ms
    Elapsed:  17.3337459564209 ms
    Elapsed:  17.65608787536621 ms
    Elapsed:  20.101070404052734 ms
    Elapsed:  18.137216567993164 ms
    Elapsed:  16.952991485595703 ms
    Elapsed:  16.7691707611084 ms
    Elapsed:  16.71290397644043 ms
    Elapsed:  16.3421630859375 ms
    Elapsed:  16.36195182800293 ms
    
    ```
    
    * chore: remove unused field_types variable
    olavloite authored Dec 2, 2024
    Configuration menu
    Copy the full SHA
    ccae6e0 View commit details
    Browse the repository at this point in the history

Commits on Dec 4, 2024

  1. feat: add connection variable for ignoring transaction warnings (#1249)

    Adds a connection variable for ignoring transaction warnings. Also adds
    a **kwargs argument to the connect function. This will be used for
    further connection variables in the future.
    
    Fixes googleapis/python-spanner-sqlalchemy#494
    olavloite authored Dec 4, 2024
    Configuration menu
    Copy the full SHA
    eeb7836 View commit details
    Browse the repository at this point in the history
  2. fix: allow setting connection.read_only to same value (#1247)

    Setting the read_only value of a connection to the same value as the
    current value should be allowed during a transaction, as it does not
    change anything. SQLAlchemy regularly does this if engine options have
    been specified.
    
    Fixes googleapis/python-spanner-sqlalchemy#493
    olavloite authored Dec 4, 2024
    Configuration menu
    Copy the full SHA
    5e8ca94 View commit details
    Browse the repository at this point in the history
  3. feat: support float32 parameters in dbapi (#1245)

    * feat: support float32 parameters in dbapi
    
    dbapi should not add an explicit type code when a parameter of type
    float is encountered. Instead, it should rely on Spanner to infer
    the correct type. This way, both FLOAT32 and FLOAT64 can be used with
    the Python float type.
    
    Updates googleapis/python-spanner-sqlalchemy#409
    
    * chore: remove whitespaces
    
    ---------
    
    Co-authored-by: Sri Harsha CH <57220027+harshachinta@users.noreply.github.com>
    olavloite and harshachinta authored Dec 4, 2024
    Configuration menu
    Copy the full SHA
    829b799 View commit details
    Browse the repository at this point in the history

Commits on Dec 5, 2024

  1. test: add mock server tests (#1217)

    * test: add mock server tests
    
    * chore: move to testing folder + fix formatting
    
    * refactor: move mock server tests to separate directory
    
    * feat: add database admin service
    
    Adds a DatabaseAdminService to the mock server and sets up a basic
    test case for this.
    
    Also removes the generated stubs in the grpc files, as these are
    not needed.
    
    * test: add DDL test
    
    * test: add async client tests
    
    * chore: remove async + add transaction handling
    
    * chore: cleanup
    
    * chore: run code formatter
    olavloite authored Dec 5, 2024
    Configuration menu
    Copy the full SHA
    7df93ca View commit details
    Browse the repository at this point in the history
  2. fix: allow setting staleness to same value in tx (#1253)

    * fix: allow setting staleness to same value in tx
    
    Repeatedly setting the staleness property of a connection in a
    transaction to the same value caused an error. This made it
    harder to use this property in SQLAlchemy.
    
    Updates googleapis/python-spanner-sqlalchemy#495
    
    * 🦉 Updates from OwlBot post-processor
    
    See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
    
    * Revert "🦉 Updates from OwlBot post-processor"
    
    This reverts commit 282a982.
    
    ---------
    
    Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
    olavloite and gcf-owl-bot[bot] authored Dec 5, 2024
    Configuration menu
    Copy the full SHA
    a214885 View commit details
    Browse the repository at this point in the history
  3. perf: remove repeated GetSession calls for FixedSizePool (#1252)

    * test: add mock server tests
    
    * chore: move to testing folder + fix formatting
    
    * refactor: move mock server tests to separate directory
    
    * feat: add database admin service
    
    Adds a DatabaseAdminService to the mock server and sets up a basic
    test case for this.
    
    Also removes the generated stubs in the grpc files, as these are
    not needed.
    
    * test: add DDL test
    
    * test: add async client tests
    
    * chore: remove async + add transaction handling
    
    * chore: cleanup
    
    * perf: remove repeated GetSession calls for FixedSizePool
    
    Add a _last_use_time to Session and use this to determine whether the
    FixedSizePool should check whether the session still exists, and whether
    it should be replaced. This significantly reduces the number of times that
    GetSession is called when using FixedSizePool.
    
    * chore: run code formatter
    
    * chore: revert to utcnow()
    
    * 🦉 Updates from OwlBot post-processor
    
    See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
    
    * fix: update _last_use_time in trace_call
    
    * chore: fix formatting
    
    * fix: remove unnecessary update of _last_use_time
    
    ---------
    
    Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
    olavloite and gcf-owl-bot[bot] authored Dec 5, 2024
    Configuration menu
    Copy the full SHA
    c064815 View commit details
    Browse the repository at this point in the history
  4. build: add mock server tests to Owlbot config (#1254)

    * build: add mock server tests to Owlbot config
    
    * chore: add escapes
    
    * 🦉 Updates from OwlBot post-processor
    
    See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
    
    ---------
    
    Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
    olavloite and gcf-owl-bot[bot] authored Dec 5, 2024
    Configuration menu
    Copy the full SHA
    a81af3b View commit details
    Browse the repository at this point in the history
  5. fix: dbapi raised AttributeError with [] as arguments (#1257)

    If the cursor.execute(sql, args) function was called with an empty array
    instead of None, it would raise an AttributeError like this:
    
    AttributeError: 'list' object has no attribute 'items'
    
    This is for example automatically done by SQLAlchemy when executing a
    raw statement on a dbapi connection.
    olavloite authored Dec 5, 2024
    Configuration menu
    Copy the full SHA
    758bf48 View commit details
    Browse the repository at this point in the history
  6. test: create base class for mockserver tests (#1255)

    * test: create base class for mockserver tests
    
    Move the boiler-plate code for mockserver tests to a separate
    class, so this can easily be re-used for other tests.
    
    * 🦉 Updates from OwlBot post-processor
    
    See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
    
    ---------
    
    Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
    olavloite and gcf-owl-bot[bot] authored Dec 5, 2024
    Configuration menu
    Copy the full SHA
    96da8e1 View commit details
    Browse the repository at this point in the history

Commits on Dec 6, 2024

  1. chore(main): release 3.51.0 (#1240)

    Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
    Co-authored-by: Sri Harsha CH <57220027+harshachinta@users.noreply.github.com>
    release-please[bot] and harshachinta authored Dec 6, 2024
    Configuration menu
    Copy the full SHA
    4829013 View commit details
    Browse the repository at this point in the history
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy