Skip to content

Commit

Permalink
support Paimon create table
Browse files Browse the repository at this point in the history
  • Loading branch information
bowenliang123 committed Oct 18, 2023
1 parent 8d2c8d1 commit dc3ee94
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 0 deletions.
6 changes: 6 additions & 0 deletions extensions/spark/kyuubi-spark-authz/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,12 @@
<artifactId>scala-collection-compat_${scala.binary.version}</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-spark-${spark.binary.version}</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*
* 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.
*/
package org.apache.kyuubi.plugin.spark.authz.ranger

import org.scalatest.Outcome

import org.apache.kyuubi.Utils
import org.apache.kyuubi.plugin.spark.authz.AccessControlException
import org.apache.kyuubi.plugin.spark.authz.RangerTestUsers._
import org.apache.kyuubi.plugin.spark.authz.util.AuthZUtils._
import org.apache.kyuubi.tags.PaimonTest
import org.apache.kyuubi.util.AssertionUtils._

/**
* Tests for RangerSparkExtensionSuite on Paimon
*/
@PaimonTest
class PaimonCatalogRangerSparkExtensionSuite extends RangerSparkExtensionSuite {
override protected val catalogImpl: String = "hive"
private def isSupportedVersion = !isSparkV35OrGreater

val catalogV2 = "paimon_catalog"
val namespace1 = "paimon_ns"
val table1 = "table1"

override def withFixture(test: NoArgTest): Outcome = {
assume(isSupportedVersion)
test()
}

override def beforeAll(): Unit = {
if (isSupportedVersion) {
spark.conf.set(s"spark.sql.catalog.$catalogV2", "org.apache.paimon.spark.SparkCatalog")
spark.conf.set(
s"spark.sql.catalog.$catalogV2.warehouse",
Utils.createTempDir("iceberg-hadoop").toString)
super.beforeAll()
}

doAs(admin, sql(s"CREATE DATABASE IF NOT EXISTS $catalogV2.$namespace1"))
}

override def afterAll(): Unit = {
if (isSupportedVersion) {
super.afterAll()
spark.sessionState.catalog.reset()
spark.sessionState.conf.clear()
}
}

test("CreateTable") {
withCleanTmpResources(Seq((s"$catalogV2.$namespace1.$table1", "table"))) {
val createTable =
s"""
|CREATE TABLE IF NOT EXISTS $catalogV2.$namespace1.$table1
|(id int, name string, city string)
|USING paimon
|OPTIONS (
| primaryKey = 'id'
|)
|""".stripMargin

interceptContains[AccessControlException] {
doAs(someone, sql(createTable))
}(s"does not have [create] privilege on [$namespace1/$table1]")
doAs(admin, createTable)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* 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.
*/

package org.apache.kyuubi.tags;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.scalatest.TagAnnotation;

@TagAnnotation
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface PaimonTest {}
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@
-->
<netty.version>4.1.93.Final</netty.version>
<openai.java.version>0.12.0</openai.java.version>
<paimon.version>0.5.0-incubating</paimon.version>
<parquet.version>1.10.1</parquet.version>
<phoenix.version>6.0.0</phoenix.version>
<prometheus.version>0.16.0</prometheus.version>
Expand Down Expand Up @@ -1484,6 +1485,12 @@
<artifactId>hudi-spark${hudi.spark.binary.version}-bundle_${scala.binary.version}</artifactId>
<version>${hudi.version}</version>
</dependency>

<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-spark-${spark.binary.version}</artifactId>
<version>${paimon.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

Expand Down

0 comments on commit dc3ee94

Please sign in to comment.