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())?

Reply via email to