Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Added Teradata driver #6459
The driver has been used with a productive Teradata instance and works fine so far.
1. Teradata: Duplicate definition of 'name' in NAMED phrase
SELECT TOP 10 "test-data"."venues"."id" AS "id", "test-data"."venues"."name" AS "name", "test-data"."venues"."category_id" AS "category_id", "test-data"."venues"."latitude" AS "latitude", "test-data"."venues"."longitude" AS "longitude", "test-data"."venues"."price" AS "price", "categories__via__category_id"."name" AS "name" FROM "test-data"."venues" LEFT JOIN "test-data"."categories" "categories__via__category_id" ON "test-data"."venues"."category_id" = "categories__via__category_id"."id" ORDER BY "categories__via__category_id"."name" DESC
For Teradata this results in "[Error 3863] [SQLState 42000] Duplicate definitio
I wanted to ask if it is sufficent if the de-duplication is performed in apply-limit only.
2. Database name: test_data does not exist
For example: nested_queries_test.clj:78 results in the following query:
SELECT "id", "longitude", "category_id", "price", "name", "latitude" FROM "test_data"."venues"
Somehow my Teradata implementation seems to generate wrong database identifiers when qualified using the identifier function of nested_queries_test.
Can you give me a hint?
3. Date bucketing tests, some queries issued against wrong database
Some of the tests result in querying checkins:4-per-minute instead of checkins:4-per-hour or checkins:1-per-day. If i change the resulting query to use the correct database, the results are as expected by the test.
For example date_bucketing_test.clj:898 produces the following query:
SELECT count(*) AS "count" FROM "a-checkin-every-15-seconds"."checkins" WHERE trunc("a-checkin-every-15-seconds"."checkins"."timestamp", 'day') = trunc(CURRENT_TIMESTAMP, 'day')
although checkins:1-per-day should be used:
SELECT count(*) AS "count" FROM "a-checkin-every-86400-seconds"."checkins" WHERE trunc("a-checkin-every-86400-seconds"."checkins"."timestamp", 'day') = trunc(CURRENT_TIMESTAMP, 'day')
Do you have any idea why the tests in date_bucketing_test:885-... seem to use a-checkin-every-15-seconds although they request it differently?
4. Order of the results in database_test.clj
Somehow the order of the returned result is not the same as the expected when running with ENGINES=h2,teradata. The data seems to be correct.
That query you posted looks like it would still need alias deduplication even if you didn't apply a
It looks to me like the venues table has
My best guess is there's something not working quite right in your test data code and it's causing it to reuse the same DB instead of creating new ones. So the unit tests think they're getting the checkin-every-day DB but it's fetching a different DB instead and thinks it has the right one.
This might be an issue with reusing names. Different test DBs need to have different names or the test code will skip DB creation because it thinks the test DBs have already been created. Let me poke through the code and see if I can figure out what's going on
@rawyler is the only way to run Teradata locally with the Teradata Express VM image? That's fine for local development but I'm not sure how we're going to get that working on CI. Is there a Docker image?
Alternatively it sounds like it's available on the AWS Marketplace, but then we'd have to pay for that in order to test things
@camsaul The only thing I could find regarding the dockerization was this: https://community.teradata.com/t5/Database/Teradata-Express-for-Docker/m-p/71980#M1067
@camsaul there is a free instance of Teradata Database on AWS Marketplace (https://aws.amazon.com/marketplace/pp/B06Y4Z54R5?qid=1523485253250&sr=0-6&ref_=srh_res_product_title) which is launched with cloud formations. Keeping the instance running full time would be unreasonably expensive, and I'm not sure if it would launch fast enough for the test runner?
Alternately, a low-performance solution is available - I got the Teradata Express VM image running in a VM under qemu. It was pretty easy, and results in a DB running in a single instance (I think I used m2.large). Would that work for testing if the version in marketplace doesn't work?
* check can_write when displaying header buttons * check can_write when displaying header buttons * don't hide duplicate
…cting-to-pg-without-sslmode-require Warn on Postgres conn str w/ ssl=true but not sslmode=require
Thank you for this PR and apologies for the long delay responding. We've recently done some work to support drivers as plugins in Metabase and as of the next release (v0.32) we will be asking driver developers to first publish new drivers in their own repositories (typically named
Here is some documentation about publishing a driver as a plugin in a separate repository: https://github.com/metabase/metabase/wiki/Writing-a-Driver:-Packaging-a-Driver-&-Metabase-Plugin-Basics#drivers-shipped-as-3rd-party-plugins
We still have some work to do on the documentation. You can follow progress and provide feedback on that here: #9348
The Teradata driver has been migrated to the plugin