mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Fixes for db migration script 47: add sql to update the new user_id column in the job table with valid data.
This commit is contained in:
@@ -3,6 +3,8 @@ Add a user_id column to the job table.
|
||||
"""
|
||||
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
from galaxy.model.custom_types import *
|
||||
@@ -10,10 +12,17 @@ from galaxy.model.custom_types import *
|
||||
import datetime
|
||||
now = datetime.datetime.utcnow
|
||||
|
||||
import logging
|
||||
import sys, logging
|
||||
log = logging.getLogger( __name__ )
|
||||
log.setLevel(logging.DEBUG)
|
||||
handler = logging.StreamHandler( sys.stdout )
|
||||
format = "%(name)s %(levelname)s %(asctime)s %(message)s"
|
||||
formatter = logging.Formatter( format )
|
||||
handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def upgrade():
|
||||
print __doc__
|
||||
@@ -22,30 +31,48 @@ def upgrade():
|
||||
Job_table = Table( "job", metadata, autoload=True )
|
||||
except NoSuchTableError:
|
||||
Job_table = None
|
||||
log.error( "Failed loading table job" )
|
||||
log.debug( "Failed loading table job" )
|
||||
if Job_table:
|
||||
try:
|
||||
col = Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=True )
|
||||
col.create( Job_table )
|
||||
assert col is Job_table.c.user_id
|
||||
except Exception, e:
|
||||
log.error( "Adding column 'user_id' to job table failed: %s" % ( str( e ) ) )
|
||||
log.debug( "Adding column 'user_id' to job table failed: %s" % ( str( e ) ) )
|
||||
try:
|
||||
i = Index( "ix_job_user_id", Job_table.c.user_id )
|
||||
i.create()
|
||||
except Exception, e:
|
||||
log.error( "Adding index 'ix_job_user_id' failed: %s" % str( e ) )
|
||||
|
||||
log.debug( "Adding index 'ix_job_user_id' failed: %s" % str( e ) )
|
||||
try:
|
||||
cmd = "SELECT job.id AS galaxy_job_id, " \
|
||||
+ "galaxy_session.user_id AS galaxy_user_id " \
|
||||
+ "FROM job " \
|
||||
+ "JOIN galaxy_session ON job.session_id = galaxy_session.id;"
|
||||
job_users = db_session.execute( cmd ).fetchall()
|
||||
print "Updating user_id column in job table for ", len( job_users ), " rows..."
|
||||
print ""
|
||||
update_count = 0
|
||||
for row in job_users:
|
||||
if row.galaxy_user_id:
|
||||
cmd = "UPDATE job SET user_id = %d WHERE id = %d" % ( int( row.galaxy_user_id ), int( row.galaxy_job_id ) )
|
||||
update_count += 1
|
||||
db_session.execute( cmd )
|
||||
print "Updated the user_id column for ", update_count, " rows in the job table. "
|
||||
print len( job_users ) - update_count, " rows have no user_id since the value was NULL in the galaxy_session table."
|
||||
print ""
|
||||
except Exception, e:
|
||||
log.debug( "Updating job.user_id column failed: %s" % str( e ) )
|
||||
def downgrade():
|
||||
metadata.reflect()
|
||||
try:
|
||||
Job_table = Table( "job", metadata, autoload=True )
|
||||
except NoSuchTableError:
|
||||
Job_table = None
|
||||
log.error( "Failed loading table job" )
|
||||
log.debug( "Failed loading table job" )
|
||||
if Job_table:
|
||||
try:
|
||||
col = Job_table.c.user_id
|
||||
col.drop()
|
||||
except Exception, e:
|
||||
log.error( "Dropping column 'user_id' from job table failed: %s" % ( str( e ) ) )
|
||||
log.debug( "Dropping column 'user_id' from job table failed: %s" % ( str( e ) ) )
|
||||
|
||||
Reference in New Issue
Block a user