Comments (9)
+1
from sqlalchemy-exasol.
The implementation of the mysql dialect might give some hints on how to achieve this:
https://github.com/zzzeek/sqlalchemy/blob/c3d898e8d06c7e549bb273fc8654f5d24fab2204/lib/sqlalchemy/dialects/mysql/base.py#L1887
Looks like table constraints are the way to go: http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html
from sqlalchemy-exasol.
DISTRIBUTE BY (D_B) according to EXASOL spec allowed in:
ALTER TABLE <name> DISTRIBUTE BY col
CREATE TABLE <name> ( col_specs, DISTRIBUTE BY a,b )
Implementation is ready when:
- D_B spec can be added via create table or alter table
- D_B spec is correctly reflected into table meta data when inspecting tables via SQLA
from sqlalchemy-exasol.
Implementation idea:
- define a class DistributeByConstraint (like ForeignKeyConstraint, inherit from ColumnCollectionConstraint) (http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#sqlalchemy.schema.PrimaryKeyConstraint)
- implement rendering
- implement reflection (similar to autoincrement)
- add test cases
from sqlalchemy-exasol.
The branch distribute_by contains a basic version that renders DISTRIBUTE BY as table constraint. As part of that implementation, the generation of FOREIGN KEY was redone as it was a bit awkward (copy & paste of super class implementation of create_table_contraints).
Missing is:
- Support ALTER TABLE for DistributeByConstraints via AddConstraint and DropConstraint. Requires test case and implementation.
from sqlalchemy-exasol.
I had another look at making Table reflection recreate DistributeByConstraints. The way to go seems to be via dialect specific table options (as done for the mysql Dialect). However, this looks like wading through quite some SQLA framework code. I am not signing up for this right now. @fmarczin: are you willing to explore?
Otherwise, if the ALTER TABLE stuff is implemented we could merge into master.
from sqlalchemy-exasol.
all done
from sqlalchemy-exasol.
@BY-jk You're fast!! 😮
Awesome!!
from sqlalchemy-exasol.
Released with 0.9.1
from sqlalchemy-exasol.
Related Issues (20)
- ✨ Add caching support for Exasol Dialects in respect to SQLA 1.4
- ✨ Add support for HASHTYPE, GEOMETRY and INTERVAL type
- ✨ Add list of un/supported SQLAlchemy features to documentation
- 🔧 Rework Integration Test Setup
- 🔧 Update Integration Test Docker Environment to 1.5.0
- 🐞 Difficult qmarks roundtrip tests fails
- 📦 Update SqlAlchemy package to version >=1.4 < 2.0.0
- Loosen version requirements on "packaging" HOT 1
- 🐞 After calling get_lastrowid through an insert, we see commit in the database. HOT 5
- 🐞 Prepared statements send the wrong types as parameters to the server HOT 1
- 🐞 Various SQLA compliance tests are failing for the websocket based dialect
- 🔧 Make pyodbc an optional dependency (feature) through setuptools extras HOT 3
- problem with Exasol driver's WebSocket connection cleanup process HOT 9
- 🔧 Add in code deprecation warnings for `[pyodbc, turbodbc]`
- 🔧 Remove `turbodbc` support
- 🔧 Remove `pyodbc` support
- 🔧 Remove tests/testing against Exasol 7.0.x
- ✨ Add support for testing of Exasol 8.x
- Support SQLAlchemy 2 HOT 3
- ✨ Make websocket types PEP-249 compliant HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqlalchemy-exasol.