This is an automated email from the ASF dual-hosted git repository.
wyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 532559b968 [MULTIPLE ISSUES] COPY fixes
532559b968 is described below
commit 532559b968627bf7f232986c51d72729fbd6cbd1
Author: Wail Alkowaileet <[email protected]>
AuthorDate: Thu Nov 2 12:29:30 2023 -0700
[MULTIPLE ISSUES] COPY fixes
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- ASTERIXDB-3297: COPY FROM fails if INTO and
AS are both specified
- ASTERIXDB-3296: Use default namespace if
database/dataverse were omitted
Change-Id: Icd7ec99ea342881475c896c6b82287902d50c7d5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17900
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Wail Alkowaileet <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>
Tested-by: Jenkins <[email protected]>
---
.../{copy => copy-from}/copy-1/copy-1.1.ddl.sqlpp | 0
.../copy-1/copy-1.2.update.sqlpp | 0
.../copy-1/copy-1.3.query.sqlpp | 0
.../copy-2/copy-2.0.container.sqlpp | 0
.../{copy => copy-from}/copy-2/copy-2.1.ddl.sqlpp | 0
.../copy-2/copy-2.2.update.sqlpp | 0
.../copy-2/copy-2.3.query.sqlpp | 0
.../copy-syntax/copy-syntax.01.ddl.sqlpp} | 15 ++++-
.../copy-syntax/copy-syntax.02.update.sqlpp} | 78 +++++++++++++---------
.../copy-syntax/copy-syntax.03.query.sqlpp} | 9 +--
.../default-namespace.01.ddl.sqlpp} | 31 +++------
.../default-namespace.02.update.sqlpp} | 14 +++-
.../default-namespace.03.update.sqlpp} | 37 +++++-----
.../default-namespace.04.update.sqlpp} | 50 +++++---------
.../default-namespace.05.ddl.sqlpp | 53 +++++++++++++++
.../default-namespace.06.query.sqlpp} | 7 +-
.../default-namespace.99.ddl.sqlpp} | 9 +--
.../{copy => copy-from}/copy-1/copy-1.1.adm | 0
.../{copy => copy-from}/copy-2/copy-2.1.adm | 0
.../copy-from/copy-syntax/copy-syntax.03.adm | 1 +
.../default-namespace/default-namepsace.06.adm | 1 +
.../src/test/resources/runtimets/sqlpp_queries.xml | 9 ++-
.../runtimets/testsuite_external_dataset_s3.xml | 9 ++-
.../lang/common/statement/CopyToStatement.java | 6 +-
.../visitor/SqlppCopyToRewriteVisitor.java | 3 +
.../asterix-lang-sqlpp/src/main/javacc/SQLPP.jj | 5 +-
26 files changed, 211 insertions(+), 126 deletions(-)
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.1.ddl.sqlpp
similarity index 100%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.1.ddl.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.2.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.2.update.sqlpp
similarity index 100%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.2.update.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.2.update.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.3.query.sqlpp
similarity index 100%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.3.query.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.3.query.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.0.container.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.0.container.sqlpp
similarity index 100%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.0.container.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.0.container.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.1.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.1.ddl.sqlpp
similarity index 100%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.1.ddl.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.1.ddl.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.2.update.sqlpp
similarity index 100%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.2.update.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.3.query.sqlpp
similarity index 100%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.3.query.sqlpp
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp
similarity index 71%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp
index b72e741501..f7aa7c0cd8 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp
@@ -17,7 +17,18 @@
* under the License.
*/
-use test;
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+CREATE TYPE OpenType AS {
+ f1: int
+};
+
+CREATE DATASET MyDataset1(OpenType) PRIMARY KEY f1;
+CREATE DATASET MyDataset2(OpenType) PRIMARY KEY f1;
+CREATE DATASET MyDataset3(OpenType) PRIMARY KEY f1;
+CREATE DATASET MyDataset4(OpenType) PRIMARY KEY f1;
+
-select count(*) `count` from test1;
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp
similarity index 50%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp
index 60ad511b27..6506be6f00 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp
@@ -17,38 +17,56 @@
* under the License.
*/
-use test;
+USE test;
-upsert into test1([
- {
- "id": 1
- },
- {
- "id": 1000
- }
-]);
+COPY INTO MyDataset1 AS (
+ f1 int,
+ f2 int,
+ f3 int,
+ f4 string
+)
+FROM localfs
+PATH ("asterix_nc1://data/csv/header/h_mul_rec_with_ln.csv")
+WITH {
+ "format": "csv",
+ "header": true
+};
+
+COPY INTO MyDataset2 (
+ f1 int,
+ f2 int,
+ f3 int,
+ f4 string
+)
+FROM localfs
+PATH ("asterix_nc1://data/csv/header/h_mul_rec_with_ln.csv")
+WITH {
+ "format": "csv",
+ "header": true
+};
-COPY test1
-FROM S3
-PATH ("data_dir")
+COPY MyDataset3 AS (
+ f1 int,
+ f2 int,
+ f3 int,
+ f4 string
+)
+FROM localfs
+PATH ("asterix_nc1://data/csv/header/h_mul_rec_with_ln.csv")
WITH {
- "format": "json",
- "container": "playground",
- "serviceEndpoint": "http://127.0.0.1:8001",
- "region": "us-west-2"
+ "format": "csv",
+ "header": true
};
-upsert into test1([
- {
- "id": 1
- },
- {
- "id": 1000
- },
- {
- "id": 2
- },
- {
- "id": 1001
- }
-]);
\ No newline at end of file
+COPY MyDataset4 (
+ f1 int,
+ f2 int,
+ f3 int,
+ f4 string
+)
+FROM localfs
+PATH ("asterix_nc1://data/csv/header/h_mul_rec_with_ln.csv")
+WITH {
+ "format": "csv",
+ "header": true
+};
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.03.query.sqlpp
similarity index 78%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.03.query.sqlpp
index b72e741501..817c937516 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.03.query.sqlpp
@@ -16,8 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
+USE test;
-use test;
-
-select count(*) `count` from test1;
-
+SELECT (SELECT VALUE COUNT(*) FROM MyDataset1)[0] m1,
+ (SELECT VALUE COUNT(*) FROM MyDataset2)[0] m2,
+ (SELECT VALUE COUNT(*) FROM MyDataset3)[0] m3,
+ (SELECT VALUE COUNT(*) FROM MyDataset4)[0] m4
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.01.ddl.sqlpp
similarity index 66%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.01.ddl.sqlpp
index e69b33bd8c..7207aa7ae3 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.01.ddl.sqlpp
@@ -17,28 +17,19 @@
* under the License.
*/
- create dataverse test if not exists;
- use test;
-
-create type AddressType as open {
- number: int64,
- street: string,
- city: string
-};
-
-create type CustomerType as closed {
- cid: int64,
- name: string,
- cashBack: int64,
- age: int64?,
- address: AddressType?,
- lastorder: {
- oid: int64,
- total: float
- }
+CREATE TYPE OpenType AS {
};
-create dataset Customers(CustomerType) primary key cid;
+CREATE EXTERNAL DATASET Customer(OpenType) USING S3 (
+ ("accessKeyId"="dummyAccessKey"),
+ ("secretAccessKey"="dummySecretKey"),
+ ("region"="us-west-2"),
+ ("serviceEndpoint"="http://127.0.0.1:8001"),
+ ("container"="playground"),
+
("definition"="external-filter/car/{company:string}/customer/{customer_id:int}"),
+ ("embed-filter-values" = "false"),
+ ("format"="json")
+);
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.02.update.sqlpp
similarity index 74%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.02.update.sqlpp
index b72e741501..55916f3274 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.02.update.sqlpp
@@ -17,7 +17,17 @@
* under the License.
*/
-use test;
+COPY Customer c
+TO S3
+PATH ("copy-to-result", "default-namespace1")
+WITH {
+ "accessKeyId":"dummyAccessKey",
+ "secretAccessKey":"dummySecretKey",
+ "region":"us-west-2",
+ "serviceEndpoint":"http://127.0.0.1:8001",
+ "container":"playground",
+ "format":"json"
+}
+
-select count(*) `count` from test1;
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp
similarity index 67%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp
index e69b33bd8c..edb038fdfd 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-1/copy-1.1.ddl.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp
@@ -17,28 +17,21 @@
* under the License.
*/
- create dataverse test if not exists;
- use test;
-
-create type AddressType as open {
- number: int64,
- street: string,
- city: string
-};
-
-create type CustomerType as closed {
- cid: int64,
- name: string,
- cashBack: int64,
- age: int64?,
- address: AddressType?,
- lastorder: {
- oid: int64,
- total: float
- }
-};
-
-create dataset Customers(CustomerType) primary key cid;
+COPY Customer AS c
+TO S3
+PATH ("copy-to-result/default-namespace2", company, "customer", customer_id)
+OVER (
+ PARTITION BY c.company company,
+ c.customer_id customer_id
+)
+WITH {
+ "accessKeyId":"dummyAccessKey",
+ "secretAccessKey":"dummySecretKey",
+ "region":"us-west-2",
+ "serviceEndpoint":"http://127.0.0.1:8001",
+ "container":"playground",
+ "format":"json"
+}
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.04.update.sqlpp
similarity index 64%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.04.update.sqlpp
index 60ad511b27..ee75bd7977 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.2.update.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.04.update.sqlpp
@@ -17,38 +17,24 @@
* under the License.
*/
-use test;
+COPY (
+ SELECT DISTINCT UPPERCASE(c.company) company, c.year
+ FROM Customer c
+) AS toWriter
+TO S3
+PATH ("copy-to-result/default-namespace3", company, year)
+OVER (
+ PARTITION BY toWriter.company company,
+ toWriter.year year
+)
+WITH {
+ "accessKeyId":"dummyAccessKey",
+ "secretAccessKey":"dummySecretKey",
+ "region":"us-west-2",
+ "serviceEndpoint":"http://127.0.0.1:8001",
+ "container":"playground",
+ "format":"json"
+}
-upsert into test1([
- {
- "id": 1
- },
- {
- "id": 1000
- }
-]);
-COPY test1
-FROM S3
-PATH ("data_dir")
-WITH {
- "format": "json",
- "container": "playground",
- "serviceEndpoint": "http://127.0.0.1:8001",
- "region": "us-west-2"
-};
-upsert into test1([
- {
- "id": 1
- },
- {
- "id": 1000
- },
- {
- "id": 2
- },
- {
- "id": 1001
- }
-]);
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.05.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.05.ddl.sqlpp
new file mode 100644
index 0000000000..4c7ba29ace
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.05.ddl.sqlpp
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+CREATE EXTERNAL DATASET CustomerCopy1(OpenType) USING S3 (
+ ("accessKeyId"="dummyAccessKey"),
+ ("secretAccessKey"="dummySecretKey"),
+ ("region"="us-west-2"),
+ ("serviceEndpoint"="http://127.0.0.1:8001"),
+ ("container"="playground"),
+ ("definition"="copy-to-result/default-namespace1"),
+ ("embed-filter-values" = "false"),
+ ("format"="json")
+);
+
+CREATE EXTERNAL DATASET CustomerCopy2(OpenType) USING S3 (
+ ("accessKeyId"="dummyAccessKey"),
+ ("secretAccessKey"="dummySecretKey"),
+ ("region"="us-west-2"),
+ ("serviceEndpoint"="http://127.0.0.1:8001"),
+ ("container"="playground"),
+
("definition"="copy-to-result/default-namespace2/{company:string}/customer/{customer_id:int}"),
+ ("embed-filter-values" = "false"),
+ ("format"="json")
+);
+
+CREATE EXTERNAL DATASET CustomerCopy3(OpenType) USING S3 (
+ ("accessKeyId"="dummyAccessKey"),
+ ("secretAccessKey"="dummySecretKey"),
+ ("region"="us-west-2"),
+ ("serviceEndpoint"="http://127.0.0.1:8001"),
+ ("container"="playground"),
+
("definition"="copy-to-result/default-namespace3/{company:string}/{year:int}"),
+ ("embed-filter-values" = "false"),
+ ("format"="json")
+);
+
+
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.06.query.sqlpp
similarity index 82%
copy from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
copy to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.06.query.sqlpp
index b72e741501..943af5d190 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.06.query.sqlpp
@@ -17,7 +17,6 @@
* under the License.
*/
-use test;
-
-select count(*) `count` from test1;
-
+SELECT (SELECT VALUE COUNT(*) FROM CustomerCopy1)[0] c1,
+ (SELECT VALUE COUNT(*) FROM CustomerCopy2)[0] c2,
+ (SELECT VALUE COUNT(*) FROM CustomerCopy3)[0] c3
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.99.ddl.sqlpp
similarity index 86%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
rename to
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.99.ddl.sqlpp
index b72e741501..31791de25d 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy/copy-2/copy-2.3.query.sqlpp
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.99.ddl.sqlpp
@@ -17,7 +17,8 @@
* under the License.
*/
-use test;
-
-select count(*) `count` from test1;
-
+DROP DATASET Customer;
+DROP DATASET CustomerCopy1;
+DROP DATASET CustomerCopy2;
+DROP DATASET CustomerCopy3;
+DROP TYPE OpenType;
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/copy/copy-1/copy-1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-1/copy-1.1.adm
similarity index 100%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/results/copy/copy-1/copy-1.1.adm
rename to
asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-1/copy-1.1.adm
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/copy/copy-2/copy-2.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-2/copy-2.1.adm
similarity index 100%
rename from
asterixdb/asterix-app/src/test/resources/runtimets/results/copy/copy-2/copy-2.1.adm
rename to
asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-2/copy-2.1.adm
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-syntax/copy-syntax.03.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-syntax/copy-syntax.03.adm
new file mode 100644
index 0000000000..ac14557432
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-syntax/copy-syntax.03.adm
@@ -0,0 +1 @@
+{ "m1": 3, "m2": 3, "m3": 3, "m4": 3 }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-to/default-namespace/default-namepsace.06.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-to/default-namespace/default-namepsace.06.adm
new file mode 100644
index 0000000000..5e3f0bc07e
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/copy-to/default-namespace/default-namepsace.06.adm
@@ -0,0 +1 @@
+{ "c1": 81, "c2": 81, "c3": 9 }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
b/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
index 8895838c1a..ef4a09b010 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
@@ -16377,12 +16377,17 @@
</compilation-unit>
</test-case>
</test-group>
- <test-group name="copy">
- <test-case FilePath="copy">
+ <test-group name="copy-from">
+ <test-case FilePath="copy-from">
<compilation-unit name="copy-1">
<output-dir compare="Text">copy-1</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="copy-from">
+ <compilation-unit name="copy-syntax">
+ <output-dir compare="Text">copy-syntax</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
<test-group name="atomic-statements">
<test-case FilePath="atomic-statements">
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
index bd9e6cacae..54ccd30548 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
@@ -34,6 +34,11 @@
<output-dir compare="Text">query</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="copy-to">
+ <compilation-unit name="default-namespace">
+ <output-dir compare="Text">default-namespace</output-dir>
+ </compilation-unit>
+ </test-case>
<test-case FilePath="copy-to/negative">
<compilation-unit name="early-missing">
<output-dir compare="Text">early-missing</output-dir>
@@ -805,8 +810,8 @@
</compilation-unit>
</test-case>
</test-group>
- <test-group name="copy">
- <test-case FilePath="copy">
+ <test-group name="copy-from">
+ <test-case FilePath="copy-from">
<compilation-unit name="copy-2">
<output-dir compare="Text">copy-2</output-dir>
</compilation-unit>
diff --git
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CopyToStatement.java
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CopyToStatement.java
index 5f13960235..c6ca34978b 100644
---
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CopyToStatement.java
+++
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CopyToStatement.java
@@ -36,7 +36,6 @@ import org.apache.asterix.lang.common.literal.StringLiteral;
import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
public class CopyToStatement extends AbstractStatement implements
IReturningStatement {
- private final Namespace namespace;
private final String datasetName;
private final VariableExpr sourceVariable;
private final ExternalDetailsDecl externalDetailsDecl;
@@ -44,6 +43,7 @@ public class CopyToStatement extends AbstractStatement
implements IReturningStat
private final List<OrderbyClause.OrderModifier> orderbyModifiers;
private final List<OrderbyClause.NullOrderModifier>
orderbyNullModifierList;
+ private Namespace namespace;
private Query query;
private List<Expression> pathExpressions;
@@ -90,6 +90,10 @@ public class CopyToStatement extends AbstractStatement
implements IReturningStat
return QUERY;
}
+ public void setNamespace(Namespace namespace) {
+ this.namespace = namespace;
+ }
+
public Namespace getNamespace() {
return namespace;
}
diff --git
a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCopyToRewriteVisitor.java
b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCopyToRewriteVisitor.java
index 68a2023315..d15eb2ddf0 100644
---
a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCopyToRewriteVisitor.java
+++
b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCopyToRewriteVisitor.java
@@ -43,6 +43,9 @@ public class SqlppCopyToRewriteVisitor extends
AbstractSqlppAstVisitor<Void, Met
@Override
public Void visit(CopyToStatement stmtCopy, MetadataProvider
metadataProvider) throws CompilationException {
+ if (stmtCopy.getNamespace() == null) {
+ stmtCopy.setNamespace(metadataProvider.getDefaultNamespace());
+ }
if (stmtCopy.getQuery() == null) {
setQuery(stmtCopy);
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index a665015647..73f6da693c 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -2869,7 +2869,10 @@ Statement CopyStatement() throws ParseException:
}
{
<COPY>
- ( LOOKAHEAD(1) <INTO> { startToken = token; } nameComponents =
QualifiedName() stmt = CopyFromStatement(startToken, nameComponents, typeExpr)
+ ( LOOKAHEAD(1) <INTO> { startToken = token; }
+ nameComponents = QualifiedName()
+ ((<AS>)? (typeExpr =
DatasetTypeSpecification(RecordTypeDefinition.RecordKind.OPEN)))?
+ stmt = CopyFromStatement(startToken, nameComponents, typeExpr)
| LOOKAHEAD(1) <LEFTPAREN> { startToken = token; } query = Query()
<RIGHTPAREN> (<AS>)? alias = Variable() stmt = CopyToStatement(startToken,
nameComponents, query, alias)
| { startToken = token; } nameComponents = QualifiedName()
(<AS>)? (typeExpr =
DatasetTypeSpecification(RecordTypeDefinition.RecordKind.OPEN) | alias =
Variable())?