[Cartoweb-users] Accounting error SQL

Bruno Friedmann bruno at ioda-net.ch
Wed Jul 2 08:22:08 EDT 2008


Rahh I've found

This is the ligne inserted like found in pg_log.

2008-07-02 14:03:46 CEST cwdev carto_dev LOG:  instruction : INSERT INTO cw_accounting (date, info) VALUES (now(),
'general.client_version=\"1\";general.mapid=\"geojb.geojb\";general.time=\"1215000223\";general.ua=\"Mozilla/5.0 (X11; U; Linux
x86_64; en-US; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.1
Firefox/3.0\";general.ip=\"127.0.0.1\";general.sessid=\"0JyYwADYAGDQJEHYjRxRE2\";general.direct_access=\"1\";layers.server_version=\"1\";layers.layers=\"COUVERTUREDUSOL,COUVERTUREDUSOL_SYMBOLE,COUVERTUREDUSOL_SYMBOLEA,COUVERTUREDUSOL_TEXTE,PARCELLE_NUMEROCENTRE,PARCELLE,PARCELLE_LIGNE,PL,BATIMENTS,BATIMENT_NUMERO,PFA12,PFP12,PFA3,PFP3,ODELPOINT,ODELLIGNE,ODELSURFACE,ODELPROJET,COUVERTUREDUSOL_LIGNE,LOCALISATION_RUE,LOCALISATION_LIEU,LOCALISATION_NOMLOCAL\";layers.switch_id=\"default\";images.server_version=\"0\";images.mainmap.width=\"600\";images.mainmap.height=\"420\";location.server_version=\"0\";location.bbox=\"550000,203017.53,620000,251982.47\";location.scale=\"441681.2554\";general.elapsed_time=\"2.178224\";layers.client_version=\"0\";layers.visible_layers=\"COUVERTUREDUSOL\"')

In fact the trouble is the following. We don't need the \ before " as we are enclosed in a ' ' string.
If we want to keep this we need to escape all in a postgres way ( need to insert a E just before the beginning ' )

As I don't know what would be expected by the log parser, I don't know how to patch it ( suppress the addslashes ) or add the E
 before the sql statement.

If you have an idea, I can create the patch for the sources.
I simply comment line 187 in common/Accounting.php
            // $accountingPacket = addslashes($accountingPacket);
and it work like a charm ( in point of view of postgres ).




Oliver Christen wrote:
> well, the data comes from pretty much every parts of Cartoweb.
> all line with $this->account(...) will log data.
> 
> I would say simply output in some files the sql generated in
> Accounting.php and then search for \
> 
> then based on the string being included we can eventually know where it
> came from.
> 
> Sylvain is not available at the moment.
> 
> regards
> Oliver
> 
> I mean there's none of our data inside the table, only the accounting
> plugin is writing to it.
> After the insert, the data is filtered by postgresql so there's no \r\n
> inside the table.
> 
> So I must found where the plugin take it's data, and prepare the sql.
> So I would check the Accounting.php file if I found something.
> 
> Perharps Sylvain has a more precise id ?
> 
> 
> Oliver Christen wrote:
>> "user or us" ?
>> im sorry but I dont understand what you mean.
>>
>> the sql for accounting is in cartoweb3/common/Accounting.php if thats
>> what you are looking for.
>>
>> regards
>> Oliver
>>
>>
>>> Thanks Oliver, i will dump the db it should be easy to find the \r\n
>>> into the sql file.
>>>
>>> But also we need to understand where we can escape properly the string
>>> into accounting plugin
>>> As it is this plugin that lead to this error. And there's no "user or
>>> us" data insert.
>>>
>>>
>>> Oliver Christen wrote:
>>>> Hi
>>>>
>>>> it seems to be linked to some backslashs in the data inserted into the
>>>> database, usualy when a backslash is present but no special
>>>> character is
>>>> positionned after that. one usual example are file path on windows:
>>>> c:\foo\bar
>>>>
>>>> it should be interesting to know what is the string that triggered that
>>>> postgres notice, maybe you can log that too ?
>>>>
>>>> that's all I can say based on the message
>>>>
>>>> regards
>>>> Oliver
>>>>
>>>>> Dear CW team,
>>>>>
>>>>> We encounter a constant log in postgresql server if we activate the
>>>>> accounting plugin.
>>>>>
>>>>> This is what we found on the pg log server ( sorry it's french LC )
>>>>>
>>>>> 2008-07-01 15:36:16 CEST cwdev carto_dev ATTENTION:  utilisation non
>>>>> standard d'un échappement dans une chaîne littérale au
>>>>> caractère 55
>>>>> 2008-07-01 15:36:16 CEST cwdev carto_dev ASTUCE :  Utilisez la syntaxe
>>>>> de la chaîne d'échappement pour les échappements,
>>>>> c'est-à-dire E'\r\n'.
>>>>>
>>>>> I've try to see where it could be in the source but doesn't found
>>>>> someting.
>>>>>
>>>>> If you could drive me where to search.
>>>>>
>>>>> -- 
>>>>>
>>>>>     Bruno Friedmann
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Cartoweb-users mailing list
>>>>> Cartoweb-users at lists.maptools.org
>>>>> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>>>>
>>>>
>>>
>>>
>>> -- 
>>>
>>>     Bruno Friedmann
>>>
>>> Ioda-Net Sàrl   - www.ioda-net.ch
>>>  2830 Vellerat - Switzerland
>>>
>>>  Tél : ++41 32 435 7171
>>>  Fax : ++41 32 435 7172
>>>  gsm : ++41 78 802 6760
>>>
>>> C'est Facile et Cool d'Évoluer en ligne : www.cfcel.com
>>>
>>>
>>> _______________________________________________
>>> Cartoweb-users mailing list
>>> Cartoweb-users at lists.maptools.org
>>> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>>
>>
> 
> 


-- 

     Bruno Friedmann

Ioda-Net Sàrl   - www.ioda-net.ch
  2830 Vellerat - Switzerland

  Tél : ++41 32 435 7171
  Fax : ++41 32 435 7172
  gsm : ++41 78 802 6760

C'est Facile et Cool d'Évoluer en ligne : www.cfcel.com




More information about the Cartoweb-users mailing list