← Back to team overview

openerp-india team mailing list archive

[Bug 1075513] [NEW] Table: public.procurement_order Field: message size too small?

 

Public bug reported:

Creating a new OM, if some error happens on procurement, an error-message is logged on public.procurement_order table and field message.
But using a localized ( on my case in Spanish ) database, the message itself exceeds its field size which has currently 64 characters, causing an SQL-Error.

It is safe to have such small field size? And maybe this can occur on
other localizations?

Here is the sql sentence that fails:

"update procurement_order set message='No hay suficiente stock y no se
ha definido una regla de stock mínimo.' where id=5"

And here is an example stack trace:

Environment Information :
System : Linux-3.2.0-32-generic-pae-i686-with-Ubuntu-12.04-precise
OS Name : posix
Distributor ID: Ubuntu
Description: Ubuntu 12.04.1 LTS
Release: 12.04
Codename: precise
Operating System Release : 3.2.0-32-generic-pae
Operating System Version : #51-Ubuntu SMP Wed Sep 26 21:54:23 UTC 2012
Operating System Architecture : 32bit
Operating System Locale : en_US.UTF-8
Python Version : 2.7.3
OpenERP-Client Version : 6.1.1
Last revision No. & ID :Bazaar Package not Found !Traceback (most recent call last):
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/service/netrpc_server.py", line 64, in run
    result = netsvc.dispatch_rpc(msg[0], msg[1], msg[2:])
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/netsvc.py", line 360, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/service/web_services.py", line 586, in dispatch
    res = fn(db, uid, *params)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/osv.py", line 121, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/osv.py", line 176, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/osv.py", line 164, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/raul/Work.openerp/NiledOpenERP.6_1/addons-niled/mrp_niled/wizard/lot_selection.py", line 55, in confirm_production
    wf_service.trg_validate(uid, 'mrp.production', context['active_id'], 'button_confirm', cr)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_service.py", line 124, in trg_validate
    res2 = instance.validate(cr, id, ident, signal)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/instance.py", line 48, in validate
    workitem.process(cr, witem, ident, signal, force_running, stack=stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
    process(cr, res, ident, stack=stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 53, in process
    result = _execute(cr, workitem, activity, ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 128, in _execute
    id_new = wkf_expr.execute(cr, ident, workitem, activity)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 68, in execute
    return _eval_expr(cr, ident, workitem, activity['action'])
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 58, in _eval_expr
    ret = eval(line, env, nocopy=True)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/tools/safe_eval.py", line 241, in safe_eval
    return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
  File "", line 1, in <module>
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/orm.py", line 368, in function_proxy
    return attr(self._cr, self._uid, [self._id], *args, **kwargs)
  File "/home/raul/Work.openerp/NiledOpenERP.6_1/addons-niled/mrp_niled/mrp.py", line 202, in action_confirm
    picking_id = super(mrp_production, self).action_confirm(cr, uid, ids)
  File "/home/raul/Work.openerp/openerp/addons/6.1/mrp/mrp.py", line 1020, in action_confirm
    self._make_production_line_procurement(cr, uid, line, shipment_move_id, context=context)
  File "/home/raul/Work.openerp/openerp/addons/6.1/mrp/mrp.py", line 888, in _make_production_line_procurement
    wf_service.trg_validate(uid, procurement_order._name, procurement_id, 'button_confirm', cr)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_service.py", line 124, in trg_validate
    res2 = instance.validate(cr, id, ident, signal)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/instance.py", line 48, in validate
    workitem.process(cr, witem, ident, signal, force_running, stack=stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
    process(cr, res, ident, stack=stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
    process(cr, res, ident, stack=stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
    process(cr, res, ident, stack=stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 158, in _split_test
    if wkf_expr.check(cr, workitem, ident, transition,signal):
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 81, in check
    return _eval_expr(cr, ident, workitem, transition['condition'])
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 58, in _eval_expr
    ret = eval(line, env, nocopy=True)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/tools/safe_eval.py", line 241, in safe_eval
    return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
  File "", line 1, in <module>
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/orm.py", line 368, in function_proxy
    return attr(self._cr, self._uid, [self._id], *args, **kwargs)
  File "/home/raul/Work.openerp/openerp/addons/6.1/procurement/procurement.py", line 255, in check_make_to_stock
    ok = ok and self._check_make_to_stock_product(cr, uid, procurement, context)
  File "/home/raul/Work.openerp/openerp/addons/6.1/procurement/procurement.py", line 387, in _check_make_to_stock_product
    cr.execute('update procurement_order set message=%s where id=%s', (message, procurement.id))
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/sql_db.py", line 152, in wrapper
    return f(self, *args, **kwargs)
  File "/home/raul/Work.openerp/openerp/server/6.1/openerp/sql_db.py", line 212, in execute
    res = self._obj.execute(query, params)
DataError: value too long for type character varying(64)

** Affects: openobject-addons
     Importance: Undecided
         Status: New


** Tags: 6.1

** Tags added: 6.1

-- 
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Addons.
https://bugs.launchpad.net/bugs/1075513

Title:
   Table: public.procurement_order Field: message size too small?

Status in OpenERP Addons (modules):
  New

Bug description:
  Creating a new OM, if some error happens on procurement, an error-message is logged on public.procurement_order table and field message.
  But using a localized ( on my case in Spanish ) database, the message itself exceeds its field size which has currently 64 characters, causing an SQL-Error.

  It is safe to have such small field size? And maybe this can occur on
  other localizations?

  Here is the sql sentence that fails:

  "update procurement_order set message='No hay suficiente stock y no se
  ha definido una regla de stock mínimo.' where id=5"

  And here is an example stack trace:

  Environment Information :
  System : Linux-3.2.0-32-generic-pae-i686-with-Ubuntu-12.04-precise
  OS Name : posix
  Distributor ID: Ubuntu
  Description: Ubuntu 12.04.1 LTS
  Release: 12.04
  Codename: precise
  Operating System Release : 3.2.0-32-generic-pae
  Operating System Version : #51-Ubuntu SMP Wed Sep 26 21:54:23 UTC 2012
  Operating System Architecture : 32bit
  Operating System Locale : en_US.UTF-8
  Python Version : 2.7.3
  OpenERP-Client Version : 6.1.1
  Last revision No. & ID :Bazaar Package not Found !Traceback (most recent call last):
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/service/netrpc_server.py", line 64, in run
      result = netsvc.dispatch_rpc(msg[0], msg[1], msg[2:])
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/netsvc.py", line 360, in dispatch_rpc
      result = ExportService.getService(service_name).dispatch(method, params)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/service/web_services.py", line 586, in dispatch
      res = fn(db, uid, *params)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/osv.py", line 121, in wrapper
      return f(self, dbname, *args, **kwargs)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/osv.py", line 176, in execute
      res = self.execute_cr(cr, uid, obj, method, *args, **kw)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/osv.py", line 164, in execute_cr
      return getattr(object, method)(cr, uid, *args, **kw)
    File "/home/raul/Work.openerp/NiledOpenERP.6_1/addons-niled/mrp_niled/wizard/lot_selection.py", line 55, in confirm_production
      wf_service.trg_validate(uid, 'mrp.production', context['active_id'], 'button_confirm', cr)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_service.py", line 124, in trg_validate
      res2 = instance.validate(cr, id, ident, signal)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/instance.py", line 48, in validate
      workitem.process(cr, witem, ident, signal, force_running, stack=stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
      ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
      _join_test(cr, t[0], t[1], ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
      create(cr,[activity], inst_id, ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
      process(cr, res, ident, stack=stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 53, in process
      result = _execute(cr, workitem, activity, ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 128, in _execute
      id_new = wkf_expr.execute(cr, ident, workitem, activity)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 68, in execute
      return _eval_expr(cr, ident, workitem, activity['action'])
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 58, in _eval_expr
      ret = eval(line, env, nocopy=True)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/tools/safe_eval.py", line 241, in safe_eval
      return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
    File "", line 1, in <module>
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/orm.py", line 368, in function_proxy
      return attr(self._cr, self._uid, [self._id], *args, **kwargs)
    File "/home/raul/Work.openerp/NiledOpenERP.6_1/addons-niled/mrp_niled/mrp.py", line 202, in action_confirm
      picking_id = super(mrp_production, self).action_confirm(cr, uid, ids)
    File "/home/raul/Work.openerp/openerp/addons/6.1/mrp/mrp.py", line 1020, in action_confirm
      self._make_production_line_procurement(cr, uid, line, shipment_move_id, context=context)
    File "/home/raul/Work.openerp/openerp/addons/6.1/mrp/mrp.py", line 888, in _make_production_line_procurement
      wf_service.trg_validate(uid, procurement_order._name, procurement_id, 'button_confirm', cr)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_service.py", line 124, in trg_validate
      res2 = instance.validate(cr, id, ident, signal)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/instance.py", line 48, in validate
      workitem.process(cr, witem, ident, signal, force_running, stack=stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
      ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
      _join_test(cr, t[0], t[1], ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
      create(cr,[activity], inst_id, ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
      process(cr, res, ident, stack=stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
      ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
      _join_test(cr, t[0], t[1], ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
      create(cr,[activity], inst_id, ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
      process(cr, res, ident, stack=stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
      ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 176, in _split_test
      _join_test(cr, t[0], t[1], ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 184, in _join_test
      create(cr,[activity], inst_id, ident, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 41, in create
      process(cr, res, ident, stack=stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 61, in process
      ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/workitem.py", line 158, in _split_test
      if wkf_expr.check(cr, workitem, ident, transition,signal):
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 81, in check
      return _eval_expr(cr, ident, workitem, transition['condition'])
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/workflow/wkf_expr.py", line 58, in _eval_expr
      ret = eval(line, env, nocopy=True)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/tools/safe_eval.py", line 241, in safe_eval
      return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
    File "", line 1, in <module>
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/osv/orm.py", line 368, in function_proxy
      return attr(self._cr, self._uid, [self._id], *args, **kwargs)
    File "/home/raul/Work.openerp/openerp/addons/6.1/procurement/procurement.py", line 255, in check_make_to_stock
      ok = ok and self._check_make_to_stock_product(cr, uid, procurement, context)
    File "/home/raul/Work.openerp/openerp/addons/6.1/procurement/procurement.py", line 387, in _check_make_to_stock_product
      cr.execute('update procurement_order set message=%s where id=%s', (message, procurement.id))
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/sql_db.py", line 152, in wrapper
      return f(self, *args, **kwargs)
    File "/home/raul/Work.openerp/openerp/server/6.1/openerp/sql_db.py", line 212, in execute
      res = self._obj.execute(query, params)
  DataError: value too long for type character varying(64)

To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-addons/+bug/1075513/+subscriptions


Follow ups

References