Github user xuchuanyin commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2656#discussion_r212787386
  
    --- Diff: 
integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/externalformat/CsvBasedCarbonTableSuite.scala
 ---
    @@ -241,4 +243,104 @@ class CsvBasedCarbonTableSuite extends QueryTest
         
CarbonProperties.getInstance().addProperty(CarbonCommonConstants.ENABLE_VECTOR_READER,
           CarbonCommonConstants.ENABLE_VECTOR_READER_DEFAULT)
       }
    +
    +  test("block update data on external format table") {
    +    createCsvCaronTable
    +    // block update data on external table.
    +    var exception = intercept[MalformedCarbonCommandException] {
    +      sql(s"update $csvCarbonTable set (empname) = ('b') where designation 
= 'a' ").collect
    +    }
    +    assert(exception.getMessage.contains("Unsupported operation on 
external format table"))
    +  }
    +
    +  test("block delete data on external format table") {
    +    createCsvCaronTable
    +    val exception = intercept[MalformedCarbonCommandException] {
    +      sql(s"delete from $csvCarbonTable where designation = 'a' ")
    +    }
    +    assert(exception.getMessage.contains("Unsupported operation on 
external format table"))
    +  }
    +
    +  test("block add columns on external format table") {
    +    createCsvCaronTable
    +    val exception = intercept[MalformedCarbonCommandException] {
    +      sql(s"alter table $csvCarbonTable add columns(addcolumn int)")
    +    }
    +    assert(exception.getMessage.contains("Unsupported operation on 
external format table"))
    +  }
    +
    +  test("block drop columns on external format table") {
    +    createCsvCaronTable
    +    val exception = intercept[MalformedCarbonCommandException] {
    +      sql(s"alter table $csvCarbonTable drop columns(empname,empno)")
    +    }
    +    assert(exception.getMessage.contains("Unsupported operation on 
external format table"))
    +  }
    +
    +  test("block change datatype on external format table") {
    +    createCsvCaronTable
    +    val exception = intercept[MalformedCarbonCommandException] {
    +      sql(s"alter table $csvCarbonTable change empno empno bigint")
    +    }
    +    assert(exception.getMessage.contains("Unsupported operation on 
external format table"))
    +  }
    +
    +  test("block create external format table if columns not in 
format.header") {
    +    val exception = intercept[ProcessMetaDataException] {
    +      sql(
    +        s"""
    +           | CREATE TABLE $csvCarbonTable(empname String, empno smallint, 
designation string,
    +           | deptname String, projectcode int, projectjoindate 
String,projectenddate String,
    +           | doj String, workgroupcategory int, workgroupcategoryname 
String,deptno int,
    +           | attendance String, utilization String,salary String)
    +           | STORED BY 'carbondata'
    +           | TBLPROPERTIES(
    +           | 'format'='csv',
    +           | 'csv.header'='empname, designation, doj,
    +           | workgroupcategory, workgroupcategoryname, deptno,
    +           | deptname, projectcode, projectjoindate, projectenddate,
    +           | attendance, utilization, SALARY',
    +           | 'csv.delimiter'='|'
    +           | )
    +       """.stripMargin
    +      )
    +    }
    +    assert(exception.getMessage.contains("column 'empno' not in 
tblproperty 'csv.header'"))
    +  }
    +
    +  test("test desc formatted for external format table") {
    +    createCsvCaronTable
    +    val result = sql(s"desc formatted $csvCarbonTable").collect()
    +    val index = result.indexWhere(_.get(0).toString.
    +      contains("##Detailed External-Format Information"))
    +    assert(index > -1)
    +    assert(result(index + 1).get(0).toString.contains("format"))
    --- End diff --
    
    the sequence of the content is not ensured, it may change in the future.
    You can use checkExistence to check whether the keywords are there in the 
DataFrame


---

Reply via email to