code: def create_table(
          self, table_name, obj=None, schema=None, database=None, max_rows=None
      ):
          
          _database = self.db_name
          self.set_database(database)
  
          if obj is not None:
              if isinstance(obj, pd.DataFrame):
                  raise NotImplementedError(
                      'Pandas Data Frame input not implemented.'
                  )
              else:
                  to_insert = obj
              ast = self._build_ast(to_insert, MapDDialect.make_context())
              select = ast.queries[0]
  
              statement = ddl.CTAS(table_name, select, database=database)
          elif schema is not None:
              statement = ddl.CreateTableWithSchema(
                  table_name, schema, database=database, max_rows=max_rows
              )
          else:
              raise com.IbisError('Must pass expr or schema')
  
          result = self._execute(statement, False)
  
          self.set_database(_database)
          return result
docs: Create a new table in MapD using an Ibis table expression.
  
          Parameters
          ----------
          table_name : string
          obj : TableExpr or pandas.DataFrame, optional
            If passed, creates table from select statement results
          schema : ibis.Schema, optional
            Mutually exclusive with expr, creates an empty table with a
            particular schema
          database : string, default None (optional)
          max_rows : int, Default None
            Set the maximum number of rows allowed in a table to create a capped
            collection. When this limit is reached, the oldest fragment is
            removed. Default = 2^62.
  
          Examples
          --------
          >>> con.create_table('new_table_name', table_expr)  # doctest: +SKIP