[Sqlalchemy-commits] [1207] sqlalchemy/trunk/test: removed all "tablename + '_' + columname" code an
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-03-25 21:15:11
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1207] sqlalchemy/trunk/test: removed all "tablename + '_' + columname" code and replaced with column._label, to take </title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1207</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-03-25 15:14:54 -0600 (Sat, 25 Mar 2006)</dd> </dl> <h3>Log Message</h3> <pre>removed all "tablename + '_' + columname" code and replaced with column._label, to take advantage of column labeling rules bind param compilation,when it unique-ifys the name of bind params, maintains the length of the bind parameter name instead of appending to it</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunklibsqlalchemyansisqlpy">sqlalchemy/trunk/lib/sqlalchemy/ansisql.py</a></li> <li><a href="#sqlalchemytrunklibsqlalchemymappingmapperpy">sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py</a></li> <li><a href="#sqlalchemytrunklibsqlalchemymappingpropertiespy">sqlalchemy/trunk/lib/sqlalchemy/mapping/properties.py</a></li> <li><a href="#sqlalchemytrunklibsqlalchemysqlpy">sqlalchemy/trunk/lib/sqlalchemy/sql.py</a></li> <li><a href="#sqlalchemytrunktestselectpy">sqlalchemy/trunk/test/select.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunklibsqlalchemyansisqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/ansisql.py (1206 => 1207)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/ansisql.py 2006-03-25 20:32:10 UTC (rev 1206) +++ sqlalchemy/trunk/lib/sqlalchemy/ansisql.py 2006-03-25 21:14:54 UTC (rev 1207) </span><span class="lines">@@ -262,7 +262,10 @@ </span><span class="cx"> # redefine the generated name of the bind param in the case </span><span class="cx"> # that we have multiple conflicting bind parameters. </span><span class="cx"> while self.binds.setdefault(key, bindparam) is not bindparam: </span><del>- key = "%s_%d" % (bindparam.key, count) </del><ins>+ # insure the name doesn't expand the length of the string + # in case we're at the edge of max identifier length + tag = "_%d" % count + key = bindparam.key[0 : len(bindparam.key) - len(tag)] + tag </ins><span class="cx"> count += 1 </span><span class="cx"> bindparam.key = key </span><span class="cx"> self.strings[bindparam] = self.bindparam_string(key) </span></span></pre></div> <a id="sqlalchemytrunklibsqlalchemymappingmapperpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py (1206 => 1207)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py 2006-03-25 20:32:10 UTC (rev 1206) +++ sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py 2006-03-25 21:14:54 UTC (rev 1207) </span><span class="lines">@@ -610,7 +610,7 @@ </span><span class="cx"> if not isinsert: </span><span class="cx"> # doing an UPDATE? put primary key values as "WHERE" parameters </span><span class="cx"> # matching the bindparam we are creating below, i.e. "<tablename>_<colname>" </span><del>- params[col.table.name + "_" + col.key] = self._getattrbycolumn(obj, col) </del><ins>+ params[col._label] = self._getattrbycolumn(obj, col) </ins><span class="cx"> else: </span><span class="cx"> # doing an INSERT, primary key col ? </span><span class="cx"> # if the primary key values are not populated, </span><span class="lines">@@ -658,7 +658,7 @@ </span><span class="cx"> if len(update): </span><span class="cx"> clause = sql.and_() </span><span class="cx"> for col in self.pks_by_table[table]: </span><del>- clause.clauses.append(col == sql.bindparam(col.table.name + "_" + col.key)) </del><ins>+ clause.clauses.append(col == sql.bindparam(col._label)) </ins><span class="cx"> statement = table.update(clause) </span><span class="cx"> rows = 0 </span><span class="cx"> for rec in update: </span></span></pre></div> <a id="sqlalchemytrunklibsqlalchemymappingpropertiespy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/mapping/properties.py (1206 => 1207)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/mapping/properties.py 2006-03-25 20:32:10 UTC (rev 1206) +++ sqlalchemy/trunk/lib/sqlalchemy/mapping/properties.py 2006-03-25 21:14:54 UTC (rev 1207) </span><span class="lines">@@ -601,7 +601,7 @@ </span><span class="cx"> if self.use_get: </span><span class="cx"> ident = [] </span><span class="cx"> for primary_key in self.mapper.pks_by_table[self.mapper.table]: </span><del>- ident.append(params[self.mapper.table.name + "_" + primary_key.name]) </del><ins>+ ident.append(params[primary_key._label]) </ins><span class="cx"> return self.mapper.get(*ident) </span><span class="cx"> elif self.order_by is not False: </span><span class="cx"> order_by = self.order_by </span><span class="lines">@@ -643,12 +643,12 @@ </span><span class="cx"> circular = isinstance(binary.left, schema.Column) and isinstance(binary.right, schema.Column) and binary.left.table is binary.right.table </span><span class="cx"> if isinstance(binary.left, schema.Column) and isinstance(binary.right, schema.Column) and ((not circular and binary.left.table is table) or (circular and binary.right is foreignkey)): </span><span class="cx"> binary.left = binds.setdefault(binary.left, </span><del>- sql.BindParamClause(binary.right.table.name + "_" + binary.right.name, None, shortname = binary.left.name)) </del><ins>+ sql.BindParamClause(binary.right._label, None, shortname = binary.left.name)) </ins><span class="cx"> binary.swap() </span><span class="cx"> </span><span class="cx"> if isinstance(binary.right, schema.Column) and isinstance(binary.left, schema.Column) and ((not circular and binary.right.table is table) or (circular and binary.left is foreignkey)): </span><span class="cx"> binary.right = binds.setdefault(binary.right, </span><del>- sql.BindParamClause(binary.left.table.name + "_" + binary.left.name, None, shortname = binary.right.name)) </del><ins>+ sql.BindParamClause(binary.left._label, None, shortname = binary.right.name)) </ins><span class="cx"> </span><span class="cx"> if secondaryjoin is not None: </span><span class="cx"> lazywhere = sql.and_(primaryjoin, secondaryjoin) </span></span></pre></div> <a id="sqlalchemytrunklibsqlalchemysqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/sql.py (1206 => 1207)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/sql.py 2006-03-25 20:32:10 UTC (rev 1206) +++ sqlalchemy/trunk/lib/sqlalchemy/sql.py 2006-03-25 21:14:54 UTC (rev 1207) </span><span class="lines">@@ -1039,7 +1039,7 @@ </span><span class="cx"> if self.table.name is None: </span><span class="cx"> return BindParamClause(self.text, obj, shortname=self.text, type=self.type) </span><span class="cx"> else: </span><del>- return BindParamClause(self.table.name + "_" + self.text, obj, shortname = self.text, type=self.type) </del><ins>+ return BindParamClause(self._label, obj, shortname = self.text, type=self.type) </ins><span class="cx"> def _make_proxy(self, selectable, name = None): </span><span class="cx"> c = ColumnClause(name or self.text, selectable) </span><span class="cx"> c._original = self.original </span></span></pre></div> <a id="sqlalchemytrunktestselectpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/test/select.py (1206 => 1207)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/test/select.py 2006-03-25 20:32:10 UTC (rev 1206) +++ sqlalchemy/trunk/test/select.py 2006-03-25 21:14:54 UTC (rev 1207) </span><span class="lines">@@ -176,7 +176,7 @@ </span><span class="cx"> order_by = ['dist', places.c.nm] </span><span class="cx"> ) </span><span class="cx"> </span><del>- self.runtest(q,"SELECT places.id, places.nm, zips.zipcode, latlondist((SELECT zips.latitude AS latitude FROM zips WHERE zips.zipcode = :zips_zipcode_1), (SELECT zips.longitude AS longitude FROM zips WHERE zips.zipcode = :zips_zipcode_2)) AS dist FROM places, zips WHERE zips.zipcode = :zips_zipcode ORDER BY dist, places.nm") </del><ins>+ self.runtest(q,"SELECT places.id, places.nm, zips.zipcode, latlondist((SELECT zips.latitude AS latitude FROM zips WHERE zips.zipcode = :zips_zipco_1), (SELECT zips.longitude AS longitude FROM zips WHERE zips.zipcode = :zips_zipco_2)) AS dist FROM places, zips WHERE zips.zipcode = :zips_zipcode ORDER BY dist, places.nm") </ins><span class="cx"> </span><span class="cx"> zalias = zips.alias('main_zip') </span><span class="cx"> qlat = select([zips.c.latitude], zips.c.zipcode == zalias.c.zipcode, scalar=True) </span><span class="lines">@@ -199,8 +199,8 @@ </span><span class="cx"> or_(table2.c.othername=='asdf', table2.c.othername == 'foo', table2.c.otherid == 9), </span><span class="cx"> "sysdate() = today()", </span><span class="cx"> )), </span><del>- "SELECT mytable.myid, mytable.name, mytable.description FROM mytable, myothertable WHERE mytable.myid = :mytable_myid AND (myothertable.othername = :myothertable_othername OR myothertable.othername = :myothertable_othername_1 OR myothertable.otherid = :myothertable_otherid) AND sysdate() = today()", - checkparams = {'myothertable_othername': 'asdf', 'myothertable_othername_1':'foo', 'myothertable_otherid': 9, 'mytable_myid': 12} </del><ins>+ "SELECT mytable.myid, mytable.name, mytable.description FROM mytable, myothertable WHERE mytable.myid = :mytable_myid AND (myothertable.othername = :myothertable_othername OR myothertable.othername = :myothertable_otherna_1 OR myothertable.otherid = :myothertable_otherid) AND sysdate() = today()", + checkparams = {'myothertable_othername': 'asdf', 'myothertable_otherna_1':'foo', 'myothertable_otherid': 9, 'mytable_myid': 12} </ins><span class="cx"> ) </span><span class="cx"> </span><span class="cx"> def testoperators(self): </span><span class="lines">@@ -210,13 +210,13 @@ </span><span class="cx"> ) </span><span class="cx"> </span><span class="cx"> self.runtest( </span><del>- literal("a") + literal("b") * literal("c"), ":literal + :literal_1 * :literal_2", db </del><ins>+ literal("a") + literal("b") * literal("c"), ":literal + :liter_1 * :liter_2", db </ins><span class="cx"> ) </span><span class="cx"> </span><span class="cx"> def testmultiparam(self): </span><span class="cx"> self.runtest( </span><span class="cx"> select(["*"], or_(table1.c.myid == 12, table1.c.myid=='asdf', table1.c.myid == 'foo')), </span><del>- "SELECT * FROM mytable WHERE mytable.myid = :mytable_myid OR mytable.myid = :mytable_myid_1 OR mytable.myid = :mytable_myid_2" </del><ins>+ "SELECT * FROM mytable WHERE mytable.myid = :mytable_myid OR mytable.myid = :mytable_my_1 OR mytable.myid = :mytable_my_2" </ins><span class="cx"> ) </span><span class="cx"> </span><span class="cx"> def testorderby(self): </span><span class="lines">@@ -339,13 +339,13 @@ </span><span class="cx"> </span><span class="cx"> def testliteral(self): </span><span class="cx"> self.runtest(select([literal("foo") + literal("bar")], from_obj=[table1]), </span><del>- "SELECT :literal + :literal_1 FROM mytable") </del><ins>+ "SELECT :literal + :liter_1 FROM mytable") </ins><span class="cx"> </span><span class="cx"> def testfunction(self): </span><span class="cx"> """tests the generation of functions using the func keyword""" </span><span class="cx"> # test an expression with a function </span><span class="cx"> self.runtest(func.lala(3, 4, literal("five"), table1.c.myid) * table2.c.otherid, </span><del>- "lala(:lala, :lala_1, :literal, mytable.myid) * myothertable.otherid") </del><ins>+ "lala(:lala, :la_1, :literal, mytable.myid) * myothertable.otherid") </ins><span class="cx"> </span><span class="cx"> # test it in a SELECT </span><span class="cx"> self.runtest(select([func.count(table1.c.myid)]), </span><span class="lines">@@ -416,7 +416,7 @@ </span><span class="cx"> self.runtest(x, "SELECT mytable.myid, mytable.name, mytable.description \ </span><span class="cx"> FROM mytable WHERE mytable.myid = :mytable_myid UNION \ </span><span class="cx"> SELECT mytable.myid, mytable.name, mytable.description \ </span><del>-FROM mytable WHERE mytable.myid = :mytable_myid_1 ORDER BY mytable.myid") </del><ins>+FROM mytable WHERE mytable.myid = :mytable_my_1 ORDER BY mytable.myid") </ins><span class="cx"> </span><span class="cx"> self.runtest( </span><span class="cx"> union( </span><span class="lines">@@ -487,7 +487,7 @@ </span><span class="cx"> </span><span class="cx"> def testin(self): </span><span class="cx"> self.runtest(select([table1], table1.c.myid.in_(1, 2, 3)), </span><del>- "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid IN (:mytable_myid, :mytable_myid_1, :mytable_myid_2)") </del><ins>+ "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid IN (:mytable_myid, :mytable_my_1, :mytable_my_2)") </ins><span class="cx"> </span><span class="cx"> self.runtest(select([table1], table1.c.myid.in_(select([table2.c.otherid]))), </span><span class="cx"> "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid IN (SELECT myothertable.otherid AS otherid FROM myothertable)") </span><span class="lines">@@ -549,7 +549,7 @@ </span><span class="cx"> values = { </span><span class="cx"> table1.c.name : table1.c.name + "lala", </span><span class="cx"> table1.c.myid : func.do_stuff(table1.c.myid, literal('hoho')) </span><del>- }), "UPDATE mytable SET myid=do_stuff(mytable.myid, :literal_2), name=mytable.name + :mytable_name WHERE mytable.myid = hoho(:hoho) AND mytable.name = :literal + mytable.name + :literal_1") </del><ins>+ }), "UPDATE mytable SET myid=do_stuff(mytable.myid, :liter_2), name=mytable.name + :mytable_name WHERE mytable.myid = hoho(:hoho) AND mytable.name = :literal + mytable.name + :liter_1") </ins><span class="cx"> </span><span class="cx"> def testcorrelatedupdate(self): </span><span class="cx"> # test against a straight text subquery </span></span></pre> </div> </div> </body> </html> |