comparison roundup/backends/back_mysql.py @ 2380:1ccfcfeca61b maint-0.7

backport from HEAD
author Richard Jones <richard@users.sourceforge.net>
date Sat, 29 May 2004 02:09:13 +0000
parents c69b67905043
children fe722c32ce0c
comparison
equal deleted inserted replaced
2373:b48fcae8b2ad 2380:1ccfcfeca61b
513 start_t = time.time() 513 start_t = time.time()
514 514
515 cn = self.classname 515 cn = self.classname
516 516
517 timezone = self.db.getUserTimezone() 517 timezone = self.db.getUserTimezone()
518 518
519 # vars to hold the components of the SQL statement
520 frum = ['_'+cn] # FROM clauses
521 loj = [] # LEFT OUTER JOIN clauses
522 where = [] # WHERE clauses
523 args = [] # *any* positional arguments
524 a = self.db.arg
525
519 # figure the WHERE clause from the filterspec 526 # figure the WHERE clause from the filterspec
520 props = self.getprops() 527 props = self.getprops()
521 frum = ['_'+cn] 528 mlfilt = 0 # are we joining with Multilink tables?
522 where = []
523 args = []
524 a = self.db.arg
525 mlfilt = 0
526 for k, v in filterspec.items(): 529 for k, v in filterspec.items():
527 propclass = props[k] 530 propclass = props[k]
528 # now do other where clause stuff 531 # now do other where clause stuff
529 if isinstance(propclass, Multilink): 532 if isinstance(propclass, Multilink):
530 mlfilt = 1 533 mlfilt = 1
666 ordercols.append(o) 669 ordercols.append(o)
667 elif isinstance(props[prop], Link): 670 elif isinstance(props[prop], Link):
668 # determine whether the linked Class has an order property 671 # determine whether the linked Class has an order property
669 lcn = props[prop].classname 672 lcn = props[prop].classname
670 link = self.db.classes[lcn] 673 link = self.db.classes[lcn]
674 o = '_%s._%s'%(cn, prop)
671 if link.getprops().has_key('order'): 675 if link.getprops().has_key('order'):
672 tn = '_' + lcn 676 tn = '_' + lcn
673 frum.append(tn) 677 loj.append('LEFT OUTER JOIN %s on %s=%s.id'%(tn,
674 where.append('_%s._%s = %s.id'%(cn, prop, tn)) 678 o, tn))
675 ordercols.append(tn + '._order') 679 ordercols.append(tn + '._order')
676 o = tn + '._order' 680 o = tn + '._order'
681 else:
682 ordercols.append(o)
677 elif prop == 'id': 683 elif prop == 'id':
678 o = '_%s.id'%cn 684 o = '_%s.id'%cn
679 else: 685 else:
680 o = '_%s._%s'%(cn, prop) 686 o = '_%s._%s'%(cn, prop)
681 ordercols.append(o) 687 ordercols.append(o)
699 cols = cols + ordercols 705 cols = cols + ordercols
700 order = ' order by %s'%(','.join(orderby)) 706 order = ' order by %s'%(','.join(orderby))
701 else: 707 else:
702 order = '' 708 order = ''
703 cols = ','.join(cols) 709 cols = ','.join(cols)
704 sql = 'select %s from %s %s%s'%(cols, frum, where, order) 710 loj = ' '.join(loj)
711 sql = 'select %s from %s %s %s%s'%(cols, frum, loj, where, order)
705 args = tuple(args) 712 args = tuple(args)
706 if __debug__: 713 if __debug__:
707 print >>hyperdb.DEBUG, 'filter', (self, sql, args) 714 print >>hyperdb.DEBUG, 'filter', (self, sql, args)
708 self.db.cursor.execute(sql, args) 715 self.db.cursor.execute(sql, args)
709 l = self.db.cursor.fetchall() 716 l = self.db.cursor.fetchall()

Roundup Issue Tracker: http://roundup-tracker.org/