>From Wail Alkowaileet <[email protected]>: Wail Alkowaileet has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17900 )
Change subject: [MULTIPLE ISSUES] COPY fixes ...................................................................... [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 --- A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.01.ddl.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.2.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.03.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.99.ddl.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.0.container.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-1/copy-1.1.adm A asterixdb/asterix-app/src/test/resources/runtimets/results/copy-to/default-namespace/default-namepsace.06.adm M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.2.update.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.3.query.sqlpp M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CopyToStatement.java R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.3.query.sqlpp M asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.06.query.sqlpp M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCopyToRewriteVisitor.java A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.02.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.05.ddl.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-2/copy-2.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-2/copy-2.1.adm A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp R asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-1/copy-1.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.04.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/results/copy-from/copy-syntax/copy-syntax.03.adm 26 files changed, 421 insertions(+), 6 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/00/17900/1 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% 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-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% 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-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% 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-from/copy-2/copy-2.3.query.sqlpp diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp new file mode 100644 index 0000000..f7aa7c0 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.01.ddl.sqlpp @@ -0,0 +1,34 @@ +/* + * 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. + */ + +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; + + + diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp new file mode 100644 index 0000000..6506be6 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.02.update.sqlpp @@ -0,0 +1,72 @@ +/* + * 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. + */ + +USE test; + +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 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": "csv", + "header": true +}; + +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-from/copy-syntax/copy-syntax.03.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.03.query.sqlpp new file mode 100644 index 0000000..817c937 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-from/copy-syntax/copy-syntax.03.query.sqlpp @@ -0,0 +1,24 @@ +/* + * 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. + */ +USE test; + +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-to/default-namespace/default-namespace.01.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.01.ddl.sqlpp new file mode 100644 index 0000000..7207aa7 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.01.ddl.sqlpp @@ -0,0 +1,35 @@ +/* + * 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 TYPE OpenType AS { +}; + +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-to/default-namespace/default-namespace.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.02.update.sqlpp new file mode 100644 index 0000000..55916f3 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.02.update.sqlpp @@ -0,0 +1,33 @@ +/* + * 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. + */ + +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" +} + + + diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp new file mode 100644 index 0000000..edb038f --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.03.update.sqlpp @@ -0,0 +1,37 @@ +/* + * 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. + */ + +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-to/default-namespace/default-namespace.04.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.04.update.sqlpp new file mode 100644 index 0000000..ee75bd7 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.04.update.sqlpp @@ -0,0 +1,40 @@ +/* + * 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. + */ + +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" +} + + + 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 0000000..4c7ba29 --- /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-to/default-namespace/default-namespace.06.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.06.query.sqlpp new file mode 100644 index 0000000..943af5d --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.06.query.sqlpp @@ -0,0 +1,22 @@ +/* + * 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. + */ + +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-to/default-namespace/default-namespace.99.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.99.ddl.sqlpp new file mode 100644 index 0000000..31791de --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/default-namespace/default-namespace.99.ddl.sqlpp @@ -0,0 +1,24 @@ +/* + * 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. + */ + +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 0000000..ac14557 --- /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 0000000..5e3f0bc --- /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 8895838..ef4a09b 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 bd9e6ca..54ccd30 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 5f13960..c6ca349 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.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 @@ 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 @@ 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 68a2023..d15eb2d 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 @@ @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 a665015..73f6da6 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 @@ } { <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())? -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17900 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: Icd7ec99ea342881475c896c6b82287902d50c7d5 Gerrit-Change-Number: 17900 Gerrit-PatchSet: 1 Gerrit-Owner: Wail Alkowaileet <[email protected]> Gerrit-MessageType: newchange
