cubicweb/server/sqlutils.py
changeset 12811 03c0684e0160
parent 12810 4a98b93ac5ac
equal deleted inserted replaced
12810:4a98b93ac5ac 12811:03c0684e0160
    25 from logging import getLogger
    25 from logging import getLogger
    26 from datetime import time, datetime, timedelta
    26 from datetime import time, datetime, timedelta
    27 
    27 
    28 from pytz import utc
    28 from pytz import utc
    29 
    29 
    30 from logilab import database as db, common as lgc
    30 from logilab import database as logilab_database, common as lgc
    31 from logilab.common.shellutils import ProgressBar, DummyProgressBar
    31 from logilab.common.shellutils import ProgressBar, DummyProgressBar
    32 from logilab.common.logging_ext import set_log_methods
    32 from logilab.common.logging_ext import set_log_methods
    33 from logilab.common.date import utctime, utcdatetime, strptime
    33 from logilab.common.date import utctime, utcdatetime, strptime
    34 from logilab.database.sqlgen import SQLGenerator
    34 from logilab.database.sqlgen import SQLGenerator
    35 
    35 
   117     """
   117     """
   118     from cubicweb.server.schema2sql import grant_schema
   118     from cubicweb.server.schema2sql import grant_schema
   119     from cubicweb.server.sources import native
   119     from cubicweb.server.sources import native
   120     stmts = list(native.grant_schema(user, set_owner))
   120     stmts = list(native.grant_schema(user, set_owner))
   121     if text_index:
   121     if text_index:
   122         dbhelper = db.get_db_helper(driver)
   122         dbhelper = logilab_database.get_db_helper(driver)
   123         # XXX should return a list of sql statements rather than ';' joined statements
   123         # XXX should return a list of sql statements rather than ';' joined statements
   124         stmts += dbhelper.sql_grant_user_on_fti(user).split(';')
   124         stmts += dbhelper.sql_grant_user_on_fti(user).split(';')
   125     stmts += grant_schema(schema, user, set_owner, skip_entities=skip_entities, prefix=SQL_PREFIX)
   125     stmts += grant_schema(schema, user, set_owner, skip_entities=skip_entities, prefix=SQL_PREFIX)
   126     return stmts
   126     return stmts
   127 
   127 
   134     from cubicweb.server.schema2sql import schema2sql
   134     from cubicweb.server.schema2sql import schema2sql
   135     from cubicweb.server.sources import native
   135     from cubicweb.server.sources import native
   136     if set_owner:
   136     if set_owner:
   137         assert user, 'user is argument required when set_owner is true'
   137         assert user, 'user is argument required when set_owner is true'
   138     stmts = list(native.sql_schema(driver))
   138     stmts = list(native.sql_schema(driver))
   139     dbhelper = db.get_db_helper(driver)
   139     dbhelper = logilab_database.get_db_helper(driver)
   140     if text_index:
   140     if text_index:
   141         stmts += dbhelper.sql_init_fti().split(';')  # XXX
   141         stmts += dbhelper.sql_init_fti().split(';')  # XXX
   142     stmts += schema2sql(dbhelper, schema, prefix=SQL_PREFIX,
   142     stmts += schema2sql(dbhelper, schema, prefix=SQL_PREFIX,
   143                         skip_entities=skip_entities,
   143                         skip_entities=skip_entities,
   144                         skip_relations=skip_relations)
   144                         skip_relations=skip_relations)
   152 
   152 
   153 
   153 
   154 def sql_drop_all_user_tables(driver_or_helper, sqlcursor):
   154 def sql_drop_all_user_tables(driver_or_helper, sqlcursor):
   155     """Return ths sql to drop all tables found in the database system."""
   155     """Return ths sql to drop all tables found in the database system."""
   156     if not getattr(driver_or_helper, 'list_tables', None):
   156     if not getattr(driver_or_helper, 'list_tables', None):
   157         dbhelper = db.get_db_helper(driver_or_helper)
   157         dbhelper = logilab_database.get_db_helper(driver_or_helper)
   158     else:
   158     else:
   159         dbhelper = driver_or_helper
   159         dbhelper = driver_or_helper
   160 
   160 
   161     stmts = [dbhelper.sql_drop_sequence('entities_id_seq')]
   161     stmts = [dbhelper.sql_drop_sequence('entities_id_seq')]
   162     # for mssql, we need to drop views before tables
   162     # for mssql, we need to drop views before tables
   289         dbpassword = source_config.get('db-password')
   289         dbpassword = source_config.get('db-password')
   290         dbencoding = source_config.get('db-encoding', 'UTF-8')
   290         dbencoding = source_config.get('db-encoding', 'UTF-8')
   291         dbextraargs = source_config.get('db-extra-arguments')
   291         dbextraargs = source_config.get('db-extra-arguments')
   292         dbnamespace = source_config.get('db-namespace')
   292         dbnamespace = source_config.get('db-namespace')
   293 
   293 
   294         self.dbhelper = db.get_db_helper(self.dbdriver)
   294         self.dbhelper = logilab_database.get_db_helper(self.dbdriver)
   295         self.dbhelper.record_connection_info(dbname, dbhost, dbport, dbuser,
   295         self.dbhelper.record_connection_info(dbname, dbhost, dbport, dbuser,
   296                                              dbpassword, dbextraargs,
   296                                              dbpassword, dbextraargs,
   297                                              dbencoding, dbnamespace)
   297                                              dbencoding, dbnamespace)
   298         self.sqlgen = SQLGenerator()
   298         self.sqlgen = SQLGenerator()
   299 
   299