Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: raise Unimplemented error when creating temporary tables #159

Merged
merged 8 commits into from Dec 1, 2021

Conversation

IlyaFaer
Copy link
Contributor

No description provided.

@google-cla google-cla bot added the cla: yes This human has signed the Contributor License Agreement. label Nov 30, 2021
@product-auto-label product-auto-label bot added the api: spanner Issues related to the googleapis/python-spanner-sqlalchemy API. label Nov 30, 2021
@IlyaFaer IlyaFaer marked this pull request as ready for review November 30, 2021 08:33
@IlyaFaer IlyaFaer added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Nov 30, 2021
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Nov 30, 2021
Copy link
Contributor

@larkee larkee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did some investigating and it looks like if we modify _spanner_temp_table_keyword_args to return {"prefixes": ["TEMPORARY"]} then we should be able to differentiate between real and temporary tables in post_create_table by checking for the TEMPORARY prefix. This means we may still be able to raise an Unimplemented error.

From local testing, this seems to prevent creating a temporary table via the TEMPORARY prefix when declaring the table. However, the test suite started having failures which I'm guessing are from tests using temporary tables. This may mean more overrides of define_tables would be necessary.

@skuruppu WDYT?

@skuruppu
Copy link
Contributor

skuruppu commented Dec 1, 2021

I did some investigating and it looks like if we modify _spanner_temp_table_keyword_args to return {"prefixes": ["TEMPORARY"]} then we should be able to differentiate between real and temporary tables in post_create_table by checking for the TEMPORARY prefix. This means we may still be able to raise an Unimplemented error.

From local testing, this seems to prevent creating a temporary table via the TEMPORARY prefix when declaring the table. However, the test suite started having failures which I'm guessing are from tests using temporary tables. This may mean more overrides of define_tables would be necessary.

@skuruppu WDYT?

Yeah I think ideally we would prevent anyone from attempting to create temporary tables since they won't behave the way a user might expect when using real tables. So returning UNIMPLEMENTED is ideal if it's not too complicated to implement.

As for tests, how many tests will fail if we go down this path? Would it mean that we have to skip a large portion of the test suite or is it just a few tests? If it's a few, can we override the tests to create real tables?

Co-authored-by: skuruppu <skuruppu@google.com>
@IlyaFaer
Copy link
Contributor Author

IlyaFaer commented Dec 1, 2021

@skuruppu, I'd expect about 60% of tests failing. It's about 120 test cases.
Other don't use tables, just work with the dialect itself.
Running now the whole suite to get the real number.

UPDATE: about 40% of tests failed. Looks like our previous test overrides are helping us here. Looking at how the failed tests are organized, I think, we can override them fast enough. Doing it.

@IlyaFaer
Copy link
Contributor Author

IlyaFaer commented Dec 1, 2021

@skuruppu, @larkee, yes, this idea with catching prefixes in post_create_table works fine 👍 Only one test case had to be updated (reflection - a very big bunch of tests, which gives 40% of the whole suite). Pushing...

@larkee larkee changed the title feat: drop temporary tables support fix: raise Unimplemented error when creating temporary tables Dec 1, 2021
@skuruppu skuruppu merged commit 646d6ac into main Dec 1, 2021
@skuruppu skuruppu deleted the drop_temp_tables branch December 1, 2021 23:51
gcf-merge-on-green bot pushed a commit that referenced this pull request Dec 9, 2021
🤖 I have created a release \*beep\* \*boop\*
---
## [1.0.0](https://www.github.com/googleapis/python-spanner-sqlalchemy/compare/v0.1.0...v1.0.0) (2021-12-08)


### Features

* add code samples ([#55](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/55)) ([406c34b](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/406c34bdb21e01a1317c074fab34d87bb3d61020))
* set user-agent string to distinguish SQLAlchemy requests ([#116](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/116)) ([b5e1a21](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/b5e1a211a0475690feed36fd222a41c216d8fb82))
* support computed columns ([#139](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/139)) ([046ca97](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/046ca975778f4793e2c37d70d2a602546f9d4699)), closes [#137](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/137)
* support JSON data type ([#135](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/135)) ([184a7d5](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/184a7d576a790bbbd049fe80d589af78831379b4))
* support read_only connections ([#125](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/125)) ([352c47d](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/352c47de7bb4ea1c30b50a7fe5aee0c4d102e80e))
* support stale reads ([#146](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/146)) ([d80cb27](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/d80cb2792437731c24905c7a6919468c37779c67))


### Bug Fixes

* ALTER COLUMN NOT NULL directive fails because of inappropriate syntax ([#124](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/124)) ([c433cda](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/c433cda99fd8544810c878328a272a3a9430630f))
* array columns reflection ([#119](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/119)) ([af3b97b](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/af3b97bfa4b3ed4b223384c9ed3fa0643204d8c9)), closes [#118](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/118)
* calculate limit value correctly for offset only queries ([#160](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/160)) ([6844336](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/684433682ed29d9cde8c9898796024cefeb38493))
* correct typo in spanner_interleave_on_delete_cascade keyword ([#99](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/99)) ([a0ebf75](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/a0ebf758eda351c0a20103f9e8c2243f002b2e6e))
* raise Unimplemented error when creating temporary tables ([#159](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/159)) ([646d6ac](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/646d6ac24ccd0643b67abff9da28118e0a6f6e55))
* rollback failed exception log ([#106](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/106)) ([809e6ab](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/809e6abb29f82a7fbe6587d606e8d75283f2a2fe))


### Documentation

* add query hints example ([#153](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/153)) ([9c23804](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/9c23804746bc8c638b6c22f2cb6ea57778f7fd19))
* reformatted README titles ([#141](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/141)) ([a3ccbac](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/a3ccbac476679fe8048ed2109e5489b873278c9c))
* update benchmarks ([#155](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/155)) ([3500653](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/35006536e4de31dbcba022b73f0aadf39bc89e39))


### Miscellaneous Chores

* setup release 1.0.0 ([#165](https://www.github.com/googleapis/python-spanner-sqlalchemy/issues/165)) ([37a415d](https://www.github.com/googleapis/python-spanner-sqlalchemy/commit/37a415d071d39e99f233a1c15c1c4b89bd436570))
---


This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: spanner Issues related to the googleapis/python-spanner-sqlalchemy API. cla: yes This human has signed the Contributor License Agreement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants