Uploaded image for project: 'CarbonData'
  1. CarbonData
  2. CARBONDATA-2580

MV Datamap - Cannot create two MV`s with same name in different databases.

    XMLWordPrintableJSON

Details

    Description

      Cannot create two MV`s with same name in different databases. If you create a MV datamap say MV1 in default database, then you could not use the same name(MV1) for defining another MV datamap in any other database.

      Test queries: 

      scala> carbon.sql("create table ratish(id int, name string) stored by 'carbondata'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("insert into ratish select 1,'ram'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("insert into ratish select 2,'ravi'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("insert into ratish select 3,'raghu'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("create datamap radi using 'mv' as select name from ratish").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("rebuild datamap radi").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("explain select name from ratish").show(200,false)
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      plan

      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      == CarbonData Profiler ==
      Table Scan on radi_table
      • total blocklets: 1
      • filter: none
      • pruned by Main DataMap
      • skipped blocklets: 0
      == Physical Plan ==
      *Project ratish_name#13790 AS name#13818
      +- *BatchedScan CarbonDatasourceHadoopRelation [ Database name :default, Table name :radi_table, Schema :Some(StructType(StructField(ratish_name,StringType,true))) ] default.radi_tableratish_name#13790

      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      scala> carbon.sql("create database rad").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("use rad").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("create table ratish(id int, name string) stored by 'carbondata'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("insert into ratish select 1,'ram'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("insert into ratish select 2,'ravi'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("insert into ratish select 3,'raghu'").show(200,false)
      ++

      ++
      ++

      scala> carbon.sql("create datamap radi using 'mv' as select name from ratish").show(200,false)
      java.io.IOException: DataMap with name radi already exists in storage
      at org.apache.carbondata.core.metadata.schema.table.DiskBasedDMSchemaStorageProvider.saveSchema(DiskBasedDMSchemaStorageProvider.java:70)
      at org.apache.carbondata.core.datamap.DataMapStoreManager.saveDataMapSchema(DataMapStoreManager.java:158)
      at org.apache.carbondata.mv.datamap.MVHelper$.createMVDataMap(MVHelper.scala:115)
      at org.apache.carbondata.mv.datamap.MVDataMapProvider.initMeta(MVDataMapProvider.scala:53)
      at org.apache.spark.sql.execution.command.datamap.CarbonCreateDataMapCommand.processMetadata(CarbonCreateDataMapCommand.scala:118)
      at org.apache.spark.sql.execution.command.AtomicRunnableCommand.run(package.scala:90)
      at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:58)
      at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:56)
      at org.apache.spark.sql.execution.command.ExecutedCommandExec.executeCollect(commands.scala:67)
      at org.apache.spark.sql.Dataset.<init>(Dataset.scala:183)
      at org.apache.spark.sql.CarbonSession$$anonfun$sql$1.apply(CarbonSession.scala:108)
      at org.apache.spark.sql.CarbonSession$$anonfun$sql$1.apply(CarbonSession.scala:97)
      at org.apache.spark.sql.CarbonSession.withProfiler(CarbonSession.scala:155)
      at org.apache.spark.sql.CarbonSession.sql(CarbonSession.scala:95)
      ... 48 elided

       

       

      Attachments

        Issue Links

          Activity

            People

              xubo245 Bo Xu
              Prasanna Ravichandran Prasanna Ravichandran
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: