)]}'
{"neutron/db/migration/alembic_migrations/versions/50d5ba354c23_ml2_binding_vif_details.py":[{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"22225160ec37ae60c4bce16f5fd6bdbf6a902884","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":48,"context_line":"                  sa.Column(\u0027vif_details\u0027, sa.String(length\u003d4095),"},{"line_number":49,"context_line":"                            nullable\u003dFalse, server_default\u003d\u0027\u0027))"},{"line_number":50,"context_line":"    migr_context \u003d context.get_context()"},{"line_number":51,"context_line":"    with context.begin_transaction():"},{"line_number":52,"context_line":"        for value in (\u0027true\u0027, \u0027false\u0027):"},{"line_number":53,"context_line":"            if op.get_bind().engine.name \u003d\u003d \u0027ibm_db_sa\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F9LA%3D","line":50,"updated":"2014-04-25 02:42:19.000000000","message":"Will change context to op.execute in next patch.","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"d40dafcad951967e70b6e568426b24dd3e591bbf","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                migr_context.execute("},{"line_number":59,"context_line":"                    \"UPDATE ml2_port_bindings SET\""},{"line_number":60,"context_line":"                    \" vif_details \u003d \u0027{\\\"port_filter\\\": false}\u0027\""},{"line_number":61,"context_line":"                    \" WHERE cap_port_filter \u003d 0\")"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                migr_context.execute("},{"line_number":64,"context_line":"                    \"UPDATE ml2_port_bindings SET\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FC0Q%3D","line":61,"updated":"2014-04-24 12:40:43.000000000","message":"Technically, you\u0027re running these two statements twice since it\u0027s inside the for loop.  Shouldn\u0027t hurt anything, it\u0027s just duplicated effort.  I\u0027d almost rather see the for loop go away entirely and have two update statements in the else leg hard coding \"true\" and \"false\" the same way you did for 0 and 1.","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"22225160ec37ae60c4bce16f5fd6bdbf6a902884","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                migr_context.execute("},{"line_number":59,"context_line":"                    \"UPDATE ml2_port_bindings SET\""},{"line_number":60,"context_line":"                    \" vif_details \u003d \u0027{\\\"port_filter\\\": false}\u0027\""},{"line_number":61,"context_line":"                    \" WHERE cap_port_filter \u003d 0\")"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                migr_context.execute("},{"line_number":64,"context_line":"                    \"UPDATE ml2_port_bindings SET\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F9Us%3D","line":61,"in_reply_to":"AAAAXH%2F%2FC0Q%3D","updated":"2014-04-25 02:42:19.000000000","message":"Will refactor in next patch.","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"d40dafcad951967e70b6e568426b24dd3e591bbf","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    if op.get_bind().engine.name \u003d\u003d \u0027ibm_db_sa\u0027:"},{"line_number":75,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":76,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":77,"context_line":"                                nullable\u003dFalse, server_default\u003d\u00270\u0027))"},{"line_number":78,"context_line":"        with context.begin_transaction():"},{"line_number":79,"context_line":"            migr_context \u003d context.get_context()"},{"line_number":80,"context_line":"            migr_context.execute("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FCzE%3D","line":77,"updated":"2014-04-24 12:40:43.000000000","message":"The inconsistency between specifying a default here and the way sqlalchemy creates the table new in the non-upgrade path still concerns me.... I\u0027ve found for several columns and tables that defaults are specified in alembic, yet when we do a fresh install (and thus alembic is not involved), sqlalchemy apparently doesn\u0027t specify these defaults.  Here is the DDL for the ml2_port_bindings table in db2:\n\nCREATE TABLE \"NEUTRON \".\"ML2_PORT_BINDINGS\"  (\n                  \"PORT_ID\" VARCHAR(36 OCTETS) NOT NULL ,\n                  \"HOST\" VARCHAR(255 OCTETS) NOT NULL ,\n                  \"VNIC_TYPE\" VARCHAR(64 OCTETS) NOT NULL ,\n                  \"PROFILE\" VARCHAR(4095 OCTETS) NOT NULL ,\n                  \"VIF_TYPE\" VARCHAR(64 OCTETS) NOT NULL ,\n                  \"VIF_DETAILS\" VARCHAR(4095 OCTETS) NOT NULL ,\n                  \"DRIVER\" VARCHAR(64 OCTETS) ,\n                  \"SEGMENT\" VARCHAR(36 OCTETS) )\n                 IN \"USERSPACE1\"\n                 ORGANIZE BY ROW;","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"22225160ec37ae60c4bce16f5fd6bdbf6a902884","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    if op.get_bind().engine.name \u003d\u003d \u0027ibm_db_sa\u0027:"},{"line_number":75,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":76,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":77,"context_line":"                                nullable\u003dFalse, server_default\u003d\u00270\u0027))"},{"line_number":78,"context_line":"        with context.begin_transaction():"},{"line_number":79,"context_line":"            migr_context \u003d context.get_context()"},{"line_number":80,"context_line":"            migr_context.execute("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F9Nk%3D","line":77,"in_reply_to":"AAAAXH%2F%2FCzE%3D","updated":"2014-04-25 02:42:19.000000000","message":"Paul, I think this is because in ML2 plugin model definition, default is used instead of \"server_default\" at line 49. \n\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/models.py#L64\n\nAccording to sqlalchemy, the \"DEFAULT\" value in DDL is only specified when \"server_default\" is used.\n\nHowever, I am not sure if we need to fix this (especially in this patch) since both default and server_default from sqlalchemy provides the way to use default values. Maybe it\u0027s worth a discussion on mail list, and let me try to send out an email to hear other\u0027s thoughts on this.","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"dc2088a1dc914afb4513165ab7247d72e7500fed","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    else:"},{"line_number":85,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":86,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":87,"context_line":"                                nullable\u003dFalse, server_default\u003dFalse))"},{"line_number":88,"context_line":"        with context.begin_transaction():"},{"line_number":89,"context_line":"            migr_context \u003d context.get_context()"},{"line_number":90,"context_line":"            migr_context.execute("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FDVo%3D","line":87,"updated":"2014-04-24 11:09:19.000000000","message":"0 can be used as server_default here as well as in L77","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"22225160ec37ae60c4bce16f5fd6bdbf6a902884","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    else:"},{"line_number":85,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":86,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":87,"context_line":"                                nullable\u003dFalse, server_default\u003dFalse))"},{"line_number":88,"context_line":"        with context.begin_transaction():"},{"line_number":89,"context_line":"            migr_context \u003d context.get_context()"},{"line_number":90,"context_line":"            migr_context.execute("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F9Mg%3D","line":87,"in_reply_to":"AAAAXH%2F%2FDVo%3D","updated":"2014-04-25 02:42:19.000000000","message":"will try this in next patch.","commit_id":"09fe8dba2b8463ddc40447e195d6aca962235e34"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"a35b2f636bfe2bdac158a348fe1fb93605db1f0a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    op.execute("},{"line_number":50,"context_line":"        \"UPDATE ml2_port_bindings SET\""},{"line_number":51,"context_line":"        \" vif_details \u003d \u0027{\\\"port_filter\\\": true}\u0027\""},{"line_number":52,"context_line":"        \" WHERE cap_port_filter \u003d 1\")"},{"line_number":53,"context_line":"    op.execute("},{"line_number":54,"context_line":"        \"UPDATE ml2_port_bindings SET\""},{"line_number":55,"context_line":"        \" vif_details \u003d \u0027{\\\"port_filter\\\": false}\u0027\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F8U0%3D","line":52,"updated":"2014-04-25 06:30:40.000000000","message":"apparently, my comment for the previous patchset was incorrect: postgress performs strong type check, and comparison with 1/0 will not work for it. Sorry about that.","commit_id":"ba04b873a455628836f0e2acbc2792ada7cdfaa6"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"eb4434b20c15ac51983eeeee74b74f12ab5f03ce","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    op.execute("},{"line_number":50,"context_line":"        \"UPDATE ml2_port_bindings SET\""},{"line_number":51,"context_line":"        \" vif_details \u003d \u0027{\\\"port_filter\\\": true}\u0027\""},{"line_number":52,"context_line":"        \" WHERE cap_port_filter \u003d 1\")"},{"line_number":53,"context_line":"    op.execute("},{"line_number":54,"context_line":"        \"UPDATE ml2_port_bindings SET\""},{"line_number":55,"context_line":"        \" vif_details \u003d \u0027{\\\"port_filter\\\": false}\u0027\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F8Lg%3D","line":52,"in_reply_to":"AAAAXX%2F%2F8U0%3D","updated":"2014-04-25 06:58:50.000000000","message":"OK. Then we will need to go back to the previous method.","commit_id":"ba04b873a455628836f0e2acbc2792ada7cdfaa6"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"ce3d8a9d6b0769d5bb129594f106dce07a2e6615","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        op.execute("},{"line_number":60,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":61,"context_line":"            \" vif_details \u003d \u0027{\\\"port_filter\\\": true}\u0027\""},{"line_number":62,"context_line":"            \" WHERE cap_port_filter \u003d True\")"},{"line_number":63,"context_line":"        op.execute("},{"line_number":64,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":65,"context_line":"            \" vif_details \u003d \u0027{\\\"port_filter\\\": false}\u0027\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXX%2F%2F2pg%3D","line":62,"updated":"2014-04-25 19:01:25.000000000","message":"I am not familiar with non-db2 engines... but the original code used lowercase \"true\".... is this case sensitive?  If so, should it not be capitalized?\n\nThis would go for the other True\u0027s and False\u0027s in the statements below.","commit_id":"29eef77a0ceaf474429ce6f353f2d8357d4ba15c"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"0d0baa6805e773b8bca00177047e562bd75bb7ae","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        op.execute("},{"line_number":60,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":61,"context_line":"            \" vif_details \u003d \u0027{\\\"port_filter\\\": true}\u0027\""},{"line_number":62,"context_line":"            \" WHERE cap_port_filter \u003d True\")"},{"line_number":63,"context_line":"        op.execute("},{"line_number":64,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":65,"context_line":"            \" vif_details \u003d \u0027{\\\"port_filter\\\": false}\u0027\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXX%2F%2FxeA%3D","line":62,"in_reply_to":"AAAAXX%2F%2F2pg%3D","updated":"2014-04-28 02:53:13.000000000","message":"True and False works for MySQL and postgresql. But I agree \"true\" or \"TRUE\" will be more clear here. Will modify in next patch.","commit_id":"29eef77a0ceaf474429ce6f353f2d8357d4ba15c"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"ce3d8a9d6b0769d5bb129594f106dce07a2e6615","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        #\"DEFAULT\" clause not specified. So server_default is used."},{"line_number":77,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":78,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":79,"context_line":"                                nullable\u003dFalse, server_default\u003d\u00270\u0027))"},{"line_number":80,"context_line":"        op.execute("},{"line_number":81,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":82,"context_line":"            \" cap_port_filter \u003d 1\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXX%2F%2F2ow%3D","line":79,"updated":"2014-04-25 19:01:25.000000000","message":"Since the field is a smallint in db2, shouldn\u0027t the default be an int and not a str?","commit_id":"29eef77a0ceaf474429ce6f353f2d8357d4ba15c"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"0d0baa6805e773b8bca00177047e562bd75bb7ae","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        #\"DEFAULT\" clause not specified. So server_default is used."},{"line_number":77,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":78,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":79,"context_line":"                                nullable\u003dFalse, server_default\u003d\u00270\u0027))"},{"line_number":80,"context_line":"        op.execute("},{"line_number":81,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":82,"context_line":"            \" cap_port_filter \u003d 1\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXX%2F%2FxgE%3D","line":79,"in_reply_to":"AAAAXX%2F%2F2ow%3D","updated":"2014-04-28 02:53:13.000000000","message":"will change to int in next patch.","commit_id":"29eef77a0ceaf474429ce6f353f2d8357d4ba15c"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"fcc7c45bc15a552879ede1d288987f4297bbb765","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":79,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":80,"context_line":"                                nullable\u003dFalse,"},{"line_number":81,"context_line":"                                server_default\u003dsa.text(\"0\")))"},{"line_number":82,"context_line":"        op.execute("},{"line_number":83,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":84,"context_line":"            \" cap_port_filter \u003d 1\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2Ftsc%3D","line":81,"updated":"2014-04-28 14:12:04.000000000","message":"Does sa.text(\"0\") translate to an INT?","commit_id":"01592f0b003ace9114b4bc9a2ff84f7266b382b3"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"e197dcdf9c86127c2e911be222c0e3701525b15c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":79,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":80,"context_line":"                                nullable\u003dFalse,"},{"line_number":81,"context_line":"                                server_default\u003dsa.text(\"0\")))"},{"line_number":82,"context_line":"        op.execute("},{"line_number":83,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":84,"context_line":"            \" cap_port_filter \u003d 1\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_6b0d283e","line":81,"in_reply_to":"AAAAXX%2F%2Ftsc%3D","updated":"2014-05-05 01:51:49.000000000","message":"I think so, here is the DDL after downgrade:\n\nCREATE TABLE \"NEUTRON \".\"ML2_PORT_BINDINGS\"  (\n\t\t  \"PORT_ID\" VARCHAR(36 OCTETS) NOT NULL , \n\t\t  \"HOST\" VARCHAR(255 OCTETS) NOT NULL , \n\t\t  \"VIF_TYPE\" VARCHAR(64 OCTETS) NOT NULL , \n\t\t  \"DRIVER\" VARCHAR(64 OCTETS) , \n\t\t  \"SEGMENT\" VARCHAR(36 OCTETS) , \n\t\t  \"VNIC_TYPE\" VARCHAR(64 OCTETS) NOT NULL WITH DEFAULT \u0027normal\u0027 , \n\t\t  \"CAP_PORT_FILTER\" SMALLINT NOT NULL WITH DEFAULT 0 )   \n\t\t IN \"USERSPACE1\"  \n\t\t ORGANIZE BY ROW;","commit_id":"01592f0b003ace9114b4bc9a2ff84f7266b382b3"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"fcc7c45bc15a552879ede1d288987f4297bbb765","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                                nullable\u003dFalse, default\u003dFalse))"},{"line_number":90,"context_line":"        op.execute("},{"line_number":91,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":92,"context_line":"            \" cap_port_filter \u003d True\""},{"line_number":93,"context_line":"            \" WHERE vif_details LIKE \u0027%\\\"port_filter\\\": true%\u0027\")"},{"line_number":94,"context_line":"    op.drop_column(\u0027ml2_port_bindings\u0027, \u0027vif_details\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2FtsA%3D","line":92,"updated":"2014-04-28 14:12:04.000000000","message":"This should be lowercase \"true\" for consistency.","commit_id":"01592f0b003ace9114b4bc9a2ff84f7266b382b3"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"e197dcdf9c86127c2e911be222c0e3701525b15c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                                nullable\u003dFalse, default\u003dFalse))"},{"line_number":90,"context_line":"        op.execute("},{"line_number":91,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":92,"context_line":"            \" cap_port_filter \u003d True\""},{"line_number":93,"context_line":"            \" WHERE vif_details LIKE \u0027%\\\"port_filter\\\": true%\u0027\")"},{"line_number":94,"context_line":"    op.drop_column(\u0027ml2_port_bindings\u0027, \u0027vif_details\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_8b698c27","line":92,"in_reply_to":"AAAAXX%2F%2FtsA%3D","updated":"2014-05-05 01:51:49.000000000","message":"Done","commit_id":"01592f0b003ace9114b4bc9a2ff84f7266b382b3"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"174fed7e9fd9a0495730c1f3aeacbfeee92e1c56","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    else:"},{"line_number":87,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":88,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":89,"context_line":"                                nullable\u003dFalse, default\u003dFalse))"},{"line_number":90,"context_line":"        op.execute("},{"line_number":91,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":92,"context_line":"            \" cap_port_filter \u003d true\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_2146e17c","line":89,"updated":"2014-05-05 04:21:46.000000000","message":"still need to change default -\u003e server_default","commit_id":"5822b20897a9ef5c9cd3bd5a68e00d80c72c54b0"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"70d085067e262413eab4e8050f84b3b4b34a7fac","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    else:"},{"line_number":87,"context_line":"        op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":88,"context_line":"                      sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":89,"context_line":"                                nullable\u003dFalse, default\u003dFalse))"},{"line_number":90,"context_line":"        op.execute("},{"line_number":91,"context_line":"            \"UPDATE ml2_port_bindings SET\""},{"line_number":92,"context_line":"            \" cap_port_filter \u003d true\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_84715a78","line":89,"in_reply_to":"9ad9bd40_2146e17c","updated":"2014-05-06 03:06:41.000000000","message":"Done","commit_id":"5822b20897a9ef5c9cd3bd5a68e00d80c72c54b0"},{"author":{"_account_id":9623,"name":"Paul Ward","email":"wpward@linux.vnet.ibm.com","username":"wpward"},"change_message_id":"7d6bbac449a0dc904f0f5e70ca749b1a1e85ffea","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":77,"context_line":"                  sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":78,"context_line":"                            nullable\u003dFalse,"},{"line_number":79,"context_line":"                            server_default\u003dsa.text(\"0\")))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if op.get_bind().engine.name \u003d\u003d \u0027ibm_db_sa\u0027:"},{"line_number":82,"context_line":"        op.execute("}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_8b5b19f5","line":79,"updated":"2014-05-06 14:35:24.000000000","message":"In patch set 2, enikanorov said:\n\n\"postgress performs strong type check, and comparison with 1/0 will not work for it\"\n\nFor that reason, I don\u0027t think you can have the op.add_column outside the if...else.  I think you need to put it back the way it was in patch set 5 (where you set server_default to 0 for db2 and it remains server_default\u003dFalse for everything else) and just change \"default\" to \"server_default\" per enikanorov\u0027s comment in patch set 5.","commit_id":"daec34da604b1f161c4924f9a90df1c4e9339f62"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"0a61d8cbe0be53e57f0c2cea288302dc4c4c401a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":77,"context_line":"                  sa.Column(\u0027cap_port_filter\u0027, sa.Boolean(),"},{"line_number":78,"context_line":"                            nullable\u003dFalse,"},{"line_number":79,"context_line":"                            server_default\u003dsa.text(\"0\")))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if op.get_bind().engine.name \u003d\u003d \u0027ibm_db_sa\u0027:"},{"line_number":82,"context_line":"        op.execute("}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_00fa7674","line":79,"in_reply_to":"9ad9bd40_8b5b19f5","updated":"2014-05-07 02:32:23.000000000","message":"I will need to use server_default\u003dsa.text(\"false\") instead of server_default\u003dFalse because only `.FetchedValue` instance, str, Unicode or :func:`~sqlalchemy.sql.expression.text` are accepted for server_default according to sqlalchemy/schema.py.","commit_id":"daec34da604b1f161c4924f9a90df1c4e9339f62"}]}
