Skip to content
Snippets Groups Projects
Commit c2ed8915 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Overhaul ecpg manual page.

Update Italian jdbc error messages.
parent 76355439
No related branches found
No related tags found
No related merge requests found
TODO list for PostgreSQL TODO list for PostgreSQL
======================== ========================
Last updated: Tue Sep 4 12:27:12 EDT 2001 Last updated: Wed Sep 5 20:04:07 EDT 2001
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
...@@ -178,7 +178,8 @@ COMMANDS ...@@ -178,7 +178,8 @@ COMMANDS
o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..) o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
o Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...) o Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
o Disallow missing columns in INSERT ... VALUES, per ANSI o Disallow missing columns in INSERT ... VALUES, per ANSI
o Allow INSERT/UPDATE ... RETURNING new.col or old.col (Philip) o Allow INSERT/UPDATE ... RETURNING new.col or old.col, handle
RULE cases (Philip)
* SHOW/SET * SHOW/SET
o Add SHOW command to display locks o Add SHOW command to display locks
o -Add SHOW command to show all settings o -Add SHOW command to show all settings
...@@ -310,8 +311,11 @@ MISCELLANEOUS ...@@ -310,8 +311,11 @@ MISCELLANEOUS
* Allow logging of query durations * Allow logging of query durations
* Add hash for evaluating GROUP BY aggregates * Add hash for evaluating GROUP BY aggregates
* -Read pg_hba.conf only on postmaster startup or SIGHUP (Bruce) * -Read pg_hba.conf only on postmaster startup or SIGHUP (Bruce)
* Improve spinlock code, perhaps with OS semaphores, sleeper queue, or * Improve spinlock code
spining to obtain lock on multi-cpu systems o use SysV semaphores or queue of backends waiting on the lock
o wakeup sleeper or sleep for less than one clock tick
o spin for lock on multi-cpu machines, yield on single cpu machines
o read/write locks
* Add queue of backends waiting for spinlock * Add queue of backends waiting for spinlock
SOURCE CODE SOURCE CODE
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.21 2001/09/06 00:23:42 momjian Exp $
--> -->
<chapter id="ecpg"> <chapter id="ecpg">
...@@ -29,39 +29,31 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia ...@@ -29,39 +29,31 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia
in <acronym>C</acronym></title> in <acronym>C</acronym></title>
<para> <para>
This describes an embedded <acronym>SQL</acronym> in <acronym>C</acronym> This describes the embedded <acronym>SQL</acronym> package for
package for <productname>Postgres</productname>. <productname>Postgres</productname>. It works with
It was written by Linus Tolke (<email>linus@epact.se</email>) <acronym>C</acronym> and <acronym>C++</acronym>. It was written by
and Michael Meskes (<email>meskes@debian.org</email>). Linus Tolke (<email>linus@epact.se</email>) and Michael Meskes
The package is installed with the <productname>Postgres</> distribution. (<email>meskes@debian.org</email>). The package is installed with the
<productname>Postgres</> distribution, and carries a similar license.
<note>
<para>
Permission is granted to copy and use in the same way as you are allowed
to copy and use the rest of <productname>PostgreSQL</productname>.
</para>
</note>
</para> </para>
<sect1 id="ecpg-why"> <sect1 id="ecpg-why">
<title>Why Embedded <acronym>SQL</acronym>?</title> <title>Why Embedded <acronym>SQL</acronym>?</title>
<para> <para>
Embedded <acronym>SQL</acronym> has some small advantages over other ways Embedded <acronym>SQL</acronym> has advantages over other methods
to handle <acronym>SQL</acronym> for handling <acronym>SQL</acronym> queries. It takes care of
queries. It takes care of all the tedious moving of information to and the tedious passing of information to and from variables in your
from variables in your <acronym>C</acronym> program. <acronym>C</acronym> or <acronym>C++</acronym> program. Many
Many <acronym>RDBMS</acronym> packages <acronym>RDBMS</acronym> packages support this embedded language.
support this embedded language.
</para> </para>
<para> There is an ANSI-standard describing how the embedded language should <para>
work. <application>ecpg</application> was designed to meet this standard There is an ANSI standard describing how the embedded language
as much as possible. So it is should work. <application>ecpg</application> was designed to match
possible to port programs with embedded <acronym>SQL</acronym> written for this standard as much as possible. It is possible to port embedded
other <acronym>RDBMS</acronym> packages to <acronym>SQL</acronym> programs written for other
<productname>Postgres</productname> and thus promoting the spirit of free <acronym>RDBMS</acronym> to <productname>Postgres</productname>.
software.
</para> </para>
</sect1> </sect1>
...@@ -69,40 +61,27 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia ...@@ -69,40 +61,27 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia
<title>The Concept</title> <title>The Concept</title>
<para> <para>
You write your program in <acronym>C</acronym> with some You write your program in <acronym>C/C++</acronym> with special
special <acronym>SQL</acronym> things. <acronym>SQL</acronym> constructs. When declaring variables to be
For declaring variables that can be used in used in <acronym>SQL</acronym> statements, you need to put them in a
<acronym>SQL</acronym> statements you need to special <command>declare</> section. You use a special syntax for the
put them in a special declare section. <acronym>SQL</acronym> queries.
You use a special syntax for the <acronym>SQL</acronym> queries.
</para> </para>
<para> <para>
Before compiling you run the file through Before compiling you run the file through the embedded
the embedded <acronym>SQL</acronym> <acronym>C</acronym> <acronym>SQL</acronym> <acronym>C</acronym> preprocessor and it
preprocessor and it converts the <acronym>SQL</acronym> statements you used converts the <acronym>SQL</acronym> statements you used to function
to function calls with the variables used as arguments. Both query input and
calls with the variables used as arguments. Both variables that are used result output variables are passed.
as input to the <acronym>SQL</acronym> statements and variables that will
contain the
result are passed.
</para> </para>
<para> <para>
Then you compile and at link time you link with a special library that After compiling, you must link with a special library that contains
contains the functions used. These functions (actually it is mostly one needed functions. These functions fetch information from the
single function) fetches the information from the arguments, performs arguments, perform the <acronym>SQL</acronym> query using the
the <acronym>SQL</acronym> query using the ordinary interface <filename>libpq</filename> interface, and put the result in the
(<filename>libpq</filename>) and puts back arguments specified for output.
the result in the arguments dedicated for output.
</para>
<para>
Then you run your program and when the control arrives to
the <acronym>SQL</acronym>
statement the <acronym>SQL</acronym> statement is performed against
the database and you
can continue with the result.
</para> </para>
</sect1> </sect1>
...@@ -110,53 +89,51 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia ...@@ -110,53 +89,51 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia
<title>How To Use <application>ecpg</application></title> <title>How To Use <application>ecpg</application></title>
<para> <para>
This section describes how to use the <application>ecpg</application> tool. This section describes how to use <application>ecpg</application>.
</para> </para>
<sect2> <sect2>
<title>Preprocessor</title> <title>Preprocessor</title>
<para> <para>
The preprocessor is called <application>ecpg</application>. The preprocessor is called <application>ecpg</application>. After
After installation it resides in installation it resides in the <productname>Postgres</productname>
the <productname>Postgres</productname> <filename>bin/</filename> directory. <filename>bin/</filename> directory.
</para> </para>
</sect2> </sect2>
<sect2> <sect2>
<title>Library</title> <title>Library</title>
<para> <para>
The <application>ecpg</application> library is called The <application>ecpg</application> library is called
<filename>libecpg.a</filename> or <filename>libecpg.a</filename> or <filename>libecpg.so</filename>.
<filename>libecpg.so</filename>. Additionally, the library Additionally, the library uses the <filename>libpq</filename>
uses the <filename>libpq</filename> library for communication to the library for communication to the
<productname>Postgres</productname> server so you will <productname>Postgres</productname> server. You will have to link
have to link your program with <parameter>-lecpg -lpq</parameter>. your program using <parameter>-lecpg -lpq</parameter>.
</para> </para>
<para> <para>
The library has some methods that are "hidden" but that could prove very The library has some methods that are "hidden" but may prove
useful sometime. useful.
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
<function>ECPGdebug(int <replaceable>on</replaceable>, FILE <function>ECPGdebug(int <replaceable>on</replaceable>, FILE
*<replaceable>stream</replaceable>)</function> *<replaceable>stream</replaceable>)</function> turns on debug
turns on debug logging if called with the first argument non-zero. logging if called with the first argument non-zero. Debug
Debug logging is done on <replaceable>stream</replaceable>. logging is done on <replaceable>stream</replaceable>. Most
Most <acronym>SQL</acronym> statement logs its arguments and result. <acronym>SQL</acronym> statement log their arguments and results.
</para> </para>
<para> <para>
The most important one (<function>ECPGdo</function>) The most important function , <function>ECPGdo</function>, logs
that is called on almost all <acronym>SQL</acronym> all <acronym>SQL</acronym> statements with both the expanded
statements logs both its expanded string, string, i.e. the string with all the input variables inserted,
i.e. the string and the result from the <productname>Postgres</productname>
with all the input variables inserted, and the result from the server. This can be very useful when searching for errors in
<productname>Postgres</productname> server. your <acronym>SQL</acronym> statements.
This can be very useful when searching for errors
in your <acronym>SQL</acronym> statements.
</para> </para>
</listitem> </listitem>
...@@ -174,13 +151,13 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia ...@@ -174,13 +151,13 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.20 2001/08/26 17:04:02 momjia
<title>Error handling</title> <title>Error handling</title>
<para> <para>
To be able to detect errors from the <productname>Postgres</productname> To detect errors from the <productname>Postgres</productname>
server you include a line like server, include a line like:
<programlisting> <programlisting>
exec sql include sqlca; exec sql include sqlca;
</programlisting> </programlisting>
in the include section of your file. This will define a struct and a in the include section of your file. This will define a struct and
variable with the name <parameter>sqlca</parameter> as following: a variable with the name <parameter>sqlca</parameter> as follows:
<programlisting> <programlisting>
struct sqlca struct sqlca
{ {
...@@ -218,19 +195,18 @@ struct sqlca ...@@ -218,19 +195,18 @@ struct sqlca
</para> </para>
<para> <para>
If an error occured in the last <acronym>SQL</acronym> statement If an error occured in the last <acronym>SQL</acronym> statement.
then <parameter>sqlca.sqlcode</parameter> <parameter>sqlca.sqlcode</parameter> will be non-zero. If
will be non-zero. If <parameter>sqlca.sqlcode</parameter> is less that 0 <parameter>sqlca.sqlcode</parameter> is less that 0, this is a
then this is serious error, like the database definition does not match the
some kind of serious error, like the database definition does not match query. If it is greater than 0, it is a normal error like the
the query given. If it is bigger than 0 then this is a normal error like table did not contain the requested row.
the table did not contain the requested row.
</para> </para>
<para> <para>
sqlca.sqlerrm.sqlerrmc will contain a string that describes the error. <parameter>sqlca.sqlerrm.sqlerrmc</parameter> will contain a string
The string ends with the line number that describes the error. The string ends with the line number in
in the source file. the source file.
</para> </para>
<para> <para>
...@@ -241,7 +217,7 @@ struct sqlca ...@@ -241,7 +217,7 @@ struct sqlca
<term>-12, Out of memory in line %d.</term> <term>-12, Out of memory in line %d.</term>
<listitem> <listitem>
<para> <para>
Does not normally occur. This is a sign that your virtual memory is Should not normally occur. This indicates your virtual memory is
exhausted. exhausted.
</para> </para>
</listitem> </listitem>
...@@ -251,9 +227,10 @@ struct sqlca ...@@ -251,9 +227,10 @@ struct sqlca
<term>-200, Unsupported type %s on line %d.</term> <term>-200, Unsupported type %s on line %d.</term>
<listitem> <listitem>
<para> <para>
Does not normally occur. This is a sign that the preprocessor has Should not normally occur. This indicates the preprocessor has
generated something that the library does not know about. Perhaps you generated something that the library does not know about.
are running incompatible versions of the preprocessor and the library. Perhaps you are running incompatible versions of the
preprocessor and the library.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -262,10 +239,10 @@ struct sqlca ...@@ -262,10 +239,10 @@ struct sqlca
<term>-201, Too many arguments line %d.</term> <term>-201, Too many arguments line %d.</term>
<listitem> <listitem>
<para> <para>
This means that <productname>Postgres</productname> has returned more This means that <productname>Postgres</productname> has
arguments than we have returned more arguments than we have matching variables.
matching variables. Perhaps you have forgotten a couple of the host Perhaps you have forgotten a couple of the host variables in
variables in the <command>INTO :var1,:var2</command>-list. the <command>INTO :var1,:var2</command>-list.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -274,10 +251,10 @@ struct sqlca ...@@ -274,10 +251,10 @@ struct sqlca
<term>-202, Too few arguments line %d.</term> <term>-202, Too few arguments line %d.</term>
<listitem> <listitem>
<para> <para>
This means that <productname>Postgres</productname> has returned fewer This means that <productname>Postgres</productname> has
arguments than we have returned fewer arguments than we have host variables. Perhaps
host variables. Perhaps you have too many host variables in the you have too many host variables in the <command>INTO
<command>INTO :var1,:var2</command>-list. :var1,:var2</command>-list.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -286,9 +263,9 @@ struct sqlca ...@@ -286,9 +263,9 @@ struct sqlca
<term>-203, Too many matches line %d.</term> <term>-203, Too many matches line %d.</term>
<listitem> <listitem>
<para> <para>
This means that the query has returned several lines but the This means the query has returned several rows but the
variables specified are no arrays. The <command>SELECT</command> you made variables specified are not arrays. The
probably was not unique. <command>SELECT</command> command was not unique.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -297,11 +274,11 @@ struct sqlca ...@@ -297,11 +274,11 @@ struct sqlca
<term>-204, Not correctly formatted int type: %s line %d.</term> <term>-204, Not correctly formatted int type: %s line %d.</term>
<listitem> <listitem>
<para> <para>
This means that the host variable is of an <type>int</type> type and the field This means the host variable is of type <type>int</type> and
in the <productname>Postgres</productname> database is of another type and the field in the <productname>Postgres</productname> database
contains a value that cannot be interpreted as an <type>int</type>. is of another type and contains a value that cannot be
The library uses <function>strtol</function> interpreted as an <type>int</type>. The library uses
for this conversion. <function>strtol()</function> for this conversion.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -310,11 +287,12 @@ struct sqlca ...@@ -310,11 +287,12 @@ struct sqlca
<term>-205, Not correctly formatted unsigned type: %s line %d.</term> <term>-205, Not correctly formatted unsigned type: %s line %d.</term>
<listitem> <listitem>
<para> <para>
This means that the host variable is of an <type>unsigned int</type> type and This means the host variable is of type <type>unsigned
the field in the <productname>Postgres</productname> database is of another int</type> and the field in the
type and contains a <productname>Postgres</productname> database is of another type
value that cannot be interpreted as an <type>unsigned int</type>. The library and contains a value that cannot be interpreted as an
uses <function>strtoul</function> for this conversion. <type>unsigned int</type>. The library uses
<function>strtoul()</function> for this conversion.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -323,11 +301,11 @@ struct sqlca ...@@ -323,11 +301,11 @@ struct sqlca
<term>-206, Not correctly formatted floating point type: %s line %d.</term> <term>-206, Not correctly formatted floating point type: %s line %d.</term>
<listitem> <listitem>
<para> <para>
This means that the host variable is of a <type>float</type> type and This means the host variable is of type <type>float</type> and
the field in the <productname>Postgres</productname> database is of another the field in the <productname>Postgres</productname> database
type and contains a is of another type and contains a value that cannot be
value that cannot be interpreted as an <type>float</type>. The library interpreted as a <type>float</type>. The library uses
uses <function>strtod</function> for this conversion. <function>strtod()</function> for this conversion.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -336,9 +314,9 @@ struct sqlca ...@@ -336,9 +314,9 @@ struct sqlca
<term>-207, Unable to convert %s to bool on line %d.</term> <term>-207, Unable to convert %s to bool on line %d.</term>
<listitem> <listitem>
<para> <para>
This means that the host variable is of a <type>bool</type> type and This means the host variable is of type <type>bool</type> and
the field in the <productname>Postgres</productname> database is neither 't' the field in the <productname>Postgres</productname> database
nor 'f'. is neither 't' nor 'f'.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -357,7 +335,7 @@ struct sqlca ...@@ -357,7 +335,7 @@ struct sqlca
<term>-220, No such connection %s in line %d.</term> <term>-220, No such connection %s in line %d.</term>
<listitem> <listitem>
<para> <para>
The program tries to access a connection that does not exist. The program tried to access a connection that does not exist.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -366,7 +344,8 @@ struct sqlca ...@@ -366,7 +344,8 @@ struct sqlca
<term>-221, Not connected in line %d.</term> <term>-221, Not connected in line %d.</term>
<listitem> <listitem>
<para> <para>
The program tries to access a connection that does exist but is not open. The program tried to access a connection that does exist but is
not open.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -395,7 +374,7 @@ struct sqlca ...@@ -395,7 +374,7 @@ struct sqlca
<term>-401, Error in transaction processing line %d. </term> <term>-401, Error in transaction processing line %d. </term>
<listitem> <listitem>
<para> <para>
<productname>Postgres</productname> signalled to us that we cannot start, <productname>Postgres</productname> signaled that we cannot start,
commit or rollback the transaction. commit or rollback the transaction.
</para> </para>
</listitem> </listitem>
...@@ -415,7 +394,7 @@ struct sqlca ...@@ -415,7 +394,7 @@ struct sqlca
<listitem> <listitem>
<para> <para>
This is a "normal" error that tells you that what you are quering cannot This is a "normal" error that tells you that what you are quering cannot
be found or we have gone through the cursor. be found or you are at the end of the cursor.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -430,29 +409,28 @@ struct sqlca ...@@ -430,29 +409,28 @@ struct sqlca
<abstract> <abstract>
<para> <para>
What will never be included and why or what cannot be done with this What will never be included and why it cannot be done.
concept.
</para> </para>
</abstract> </abstract>
<para> <para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>Oracle's single tasking possibility</term> <term>Oracle's single tasking</term>
<listitem> <listitem>
<para> <para>
Oracle version 7.0 on AIX 3 uses the OS-supported locks on the shared Oracle version 7.0 on AIX 3 uses OS-supported locks in shared
memory segments and allows the application designer to link an memory that allow an application designer to link an application
application in a so called single tasking way. Instead of starting one in a "single tasking" way. Instead of starting one client
client process per application process both the database part and the process per application process, both the database part and the
application part is run in the same process. In later versions of Oracle application part run in the same process. In later versions of
this is no longer supported. Oracle this is no longer supported.
</para> </para>
<para> <para>
This would require a total redesign of the This would require a total redesign of the
<productname>Postgres</productname> access model and <productname>Postgres</productname> access model and the
that effort can not justify the performance gained. performance gain does not justify the effort.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -464,37 +442,38 @@ struct sqlca ...@@ -464,37 +442,38 @@ struct sqlca
<title>Porting From Other <acronym>RDBMS</acronym> Packages</title> <title>Porting From Other <acronym>RDBMS</acronym> Packages</title>
<para> <para>
The design of <application>ecpg</application> follows SQL standard. So The design of <application>ecpg</application> follows the SQL
porting from a standard RDBMS should not be a problem. Unfortunately there standard. Porting from a standard RDBMS should not be a problem.
is no such thing as a standard RDBMS. So <application>ecpg</application> Unfortunately there is no such thing as a standard RDBMS. Therefore
also tries to understand syntax additions as long as they do not create <application>ecpg</application> tries to understand syntax
conflicts with the standard. extensions as long as they do not create conflicts with the
standard.
</para> </para>
<para> <para>
The following list shows all the known incompatibilities. If you find one The following list shows all the known incompatibilities. If you
not listed please notify find one not listed please notify <ulink
<ulink url="meskes@debian.org">Michael Meskes</ulink>. url="meskes@debian.org">Michael Meskes</ulink>. Note, however, that
Note, however, that we list only incompatibilities from we list only incompatibilities from a precompiler of another RDBMS
a precompiler of another RDBMS to <application>ecpg</application> and not to <application>ecpg</application> and not
additional <application>ecpg</application> features that these RDBMS do not <application>ecpg</application> features that these RDBMS do not
have. support.
</para> </para>
<para> <para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>Syntax of FETCH command</term> <term>Syntax of FETCH</term>
<listitem> <listitem>
<para> <para>
The standard syntax of the FETCH command is: The standard syntax for FETCH is:
</para> </para>
<para> <para>
FETCH [direction] [amount] IN|FROM <replaceable>cursor name</replaceable>. FETCH [direction] [amount] IN|FROM <replaceable>cursor</replaceable>.
</para> </para>
<para> <para>
<application>ORACLE</application>, however, does not use the keywords IN <application>ORACLE</application>, however, does not use the keywords IN
resp. FROM. This feature cannot be added since it would create parsing or FROM. This feature cannot be added since it would create parsing
conflicts. conflicts.
</para> </para>
</listitem> </listitem>
...@@ -507,39 +486,35 @@ struct sqlca ...@@ -507,39 +486,35 @@ struct sqlca
<title>For the Developer</title> <title>For the Developer</title>
<para> <para>
This section is for those who want to develop the This section explain how <application>ecpg</application>
<application>ecpg</application> interface. It works internally. It contains valuable information to help users
describes how the things work. The ambition is to make this section understand how to use <application>ecpg</application>.
contain things for those that want to have a look inside and the section
on How to use it should be enough for all normal questions.
So, read this before looking at the internals of the
<application>ecpg</application>. If
you are not interested in how it really works, skip this section.
</para> </para>
<sect2> <sect2>
<title>ToDo List</title> <title>ToDo List</title>
<para> <para>
This version the preprocessor has some flaws: This version of the preprocessor has some flaws:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>Library functions</term> <term>Library functions</term>
<listitem> <listitem>
<para> <para>
to_date et al. do not exists. But then <productname>Postgres</productname> to_date et al. does not exist. However,
has some good conversion routines itself. So you probably won't miss these. <productname>Postgres</productname> has some good conversion
routines so you probably won't miss them.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>Structures ans unions</term> <term>Structures and unions</term>
<listitem> <listitem>
<para> <para>
Structures and unions have to be defined in the declare section. Structures and unions have to be defined in the
<command>declare</> section.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -580,8 +555,11 @@ struct sqlca ...@@ -580,8 +555,11 @@ struct sqlca
<term>message 'no data found'</term> <term>message 'no data found'</term>
<listitem> <listitem>
<para> <para>
The error message for "no data" in an exec sql insert select from statement The error message for "no data" in:
has to be 100. <programlisting>
exec sql insert select from statement
</programlisting>
has to be <literal>100</>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -590,8 +568,9 @@ struct sqlca ...@@ -590,8 +568,9 @@ struct sqlca
<term>sqlwarn[6]</term> <term>sqlwarn[6]</term>
<listitem> <listitem>
<para> <para>
sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified in a SET sqlwarn[6] should be <literal>W</> if the <command>PRECISION</>
DESCRIPTOR statement will be ignored. or <command>SCALE</> value specified in a <command>SET
DESCRIPTOR</> statement was ignored.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -603,49 +582,50 @@ struct sqlca ...@@ -603,49 +582,50 @@ struct sqlca
<title>The Preprocessor</title> <title>The Preprocessor</title>
<para> <para>
The first four lines written to the output are constant additions by ecpg. The first four lines written by ecpg to the output are fixed lines.
These are two comments and two include lines necessary for the interface to the Two are comments and two are include lines necessary to interface
library. to the library.
</para> </para>
<para> <para>
Then the preprocessor works in one pass only, reading the input file and Then the preprocessor reads through the file and writes output.
writing to the output as it goes along. Normally it just echoes Normally it just echoes everything to the output.
everything to the output without looking at it further.
</para> </para>
<para> <para>
When it comes to an <command>EXEC SQL</command> statements it intervenes and When it sees an <command>EXEC SQL</command> statement, it
changes them depending on what it is. intervenes and changes it. The <command>EXEC SQL</command>
The <command>EXEC SQL</command> statement can be one of these: statement can be one of these:
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>Declare sections</term> <term>Declare sections</term>
<listitem> <listitem>
<para> <para>
Declare sections begins with <command>Declare</> sections begin with:
<programlisting> <programlisting>
exec sql begin declare section; exec sql begin declare section;
</programlisting> </programlisting>
and ends with and end with:
<programlisting> <programlisting>
exec sql end declare section; exec sql end declare section;
</programlisting> </programlisting>
In the section only variable declarations are allowed. Every variable In this section only variable declarations are allowed. Every
declare within this section is also entered in a list of variables variable declared within this section is stored in a list
indexed on their name together with the corresponding type. of variables indexed by name together with its corresponding
type.
</para> </para>
<para> <para>
In particular the definition of a structure or union also has to be listed In particular the definition of a structure or union also must
inside a declare section. Otherwise <application>ecpg</application> cannot be listed inside a <command>declare</> section. Otherwise
handle these types since it simply does not know the definition. <application>ecpg</application> cannot handle these types since
it does not know the definition.
</para> </para>
<para> <para>
The declaration is echoed to the file to make the variable a normal The declaration is also echoed to the file to make it a normal
C-variable also. C variable.
</para> </para>
<para> <para>
...@@ -654,7 +634,7 @@ exec sql end declare section; ...@@ -654,7 +634,7 @@ exec sql end declare section;
<programlisting> <programlisting>
VARCHAR var[180]; VARCHAR var[180];
</programlisting> </programlisting>
is converted into is converted into:
<programlisting> <programlisting>
struct varchar_var { int len; char arr[180]; } var; struct varchar_var { int len; char arr[180]; } var;
</programlisting> </programlisting>
...@@ -670,16 +650,17 @@ struct varchar_var { int len; char arr[180]; } var; ...@@ -670,16 +650,17 @@ struct varchar_var { int len; char arr[180]; } var;
<programlisting> <programlisting>
exec sql include filename; exec sql include filename;
</programlisting> </programlisting>
Note that this is NOT the same as Note that this is NOT the same as:
<programlisting> <programlisting>
#include &lt;filename.h&gt; #include &lt;filename.h&gt;
</programlisting> </programlisting>
</para> </para>
<para> <para>
Instead the file specified is parsed by <application>ecpg</application> Instead the file specified is parsed by
itself. So the contents of the specified file is included in the resulting C <application>ecpg</application> so the contents of the file are
code. This way you are able to specify EXEC SQL commands in an include file. included in the resulting C code. This way you are able to
specify EXEC SQL commands in an include file.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -763,8 +744,9 @@ exec sql connect to <replaceable>connection target</replaceable>; ...@@ -763,8 +744,9 @@ exec sql connect to <replaceable>connection target</replaceable>;
</variablelist> </variablelist>
</para> </para>
<para> Finally the userid and the password. Each may be a constant text, a <para>
character variable or a chararcter string. Finally, the userid and password may be a constant text, a
character variable, or a character string.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -773,7 +755,7 @@ exec sql connect to <replaceable>connection target</replaceable>; ...@@ -773,7 +755,7 @@ exec sql connect to <replaceable>connection target</replaceable>;
<term>Disconnect statements</term> <term>Disconnect statements</term>
<listitem> <listitem>
<para> <para>
A disconnect statement looks loke: A disconnect statement looks like:
<programlisting> <programlisting>
exec sql disconnect [<replaceable>connection target</replaceable>]; exec sql disconnect [<replaceable>connection target</replaceable>];
</programlisting> </programlisting>
...@@ -805,7 +787,6 @@ exec sql disconnect [<replaceable>connection target</replaceable>]; ...@@ -805,7 +787,6 @@ exec sql disconnect [<replaceable>connection target</replaceable>];
</listitem> </listitem>
</varlistentry> </varlistentry>
<!--WARNING: FROM HERE ON THE TEXT IS OUTDATED!-->
<varlistentry> <varlistentry>
<term>Open cursor statement</term> <term>Open cursor statement</term>
<listitem> <listitem>
...@@ -814,7 +795,9 @@ exec sql disconnect [<replaceable>connection target</replaceable>]; ...@@ -814,7 +795,9 @@ exec sql disconnect [<replaceable>connection target</replaceable>];
<programlisting> <programlisting>
exec sql open <replaceable>cursor</replaceable>; exec sql open <replaceable>cursor</replaceable>;
</programlisting> </programlisting>
and is ignore and not copied from the output. and is not copied to the output. Instead, the cursor's
<command>DECLARE</> command is used because it opens the cursor
as well.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -823,14 +806,10 @@ exec sql open <replaceable>cursor</replaceable>; ...@@ -823,14 +806,10 @@ exec sql open <replaceable>cursor</replaceable>;
<term>Commit statement</term> <term>Commit statement</term>
<listitem> <listitem>
<para> <para>
A commit statement looks like A commit statement looks like:
<programlisting> <programlisting>
exec sql commit; exec sql commit;
</programlisting> </programlisting>
and is translated on the output to
<programlisting>
ECPGcommit(__LINE__);
</programlisting>
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -839,52 +818,50 @@ ECPGcommit(__LINE__); ...@@ -839,52 +818,50 @@ ECPGcommit(__LINE__);
<term>Rollback statement</term> <term>Rollback statement</term>
<listitem> <listitem>
<para> <para>
A rollback statement looks like A rollback statement looks like:
<programlisting> <programlisting>
exec sql rollback; exec sql rollback;
</programlisting> </programlisting>
and is translated on the output to
<programlisting>
ECPGrollback(__LINE__);
</programlisting>
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<!--STARTING HERE IT IS OKAY AGAIN!-->
<varlistentry> <varlistentry>
<term>Other statements</term> <term>Other statements</term>
<listitem> <listitem>
<para> <para>
Other <acronym>SQL</acronym> statements are other statements that start with Other <acronym>SQL</acronym> statements are used by
<command>exec sql</command> and ends with <command>;</command>. starting with <command>exec sql</command> and ending with
Everything inbetween is treated <command>;</command>. Everything in between is treated as an
as an <acronym>SQL</acronym> statement and parsed for variable substitution. <acronym>SQL</acronym> statement and parsed for variable
substitution.
</para> </para>
<para> <para>
Variable substitution occur when a symbol starts with a colon Variable substitution occurs when a symbol starts with a colon
(<command>:</command>). Then a variable with that name is looked for among (<command>:</command>). The variable with that name is looked
the variables that were previously declared within a declare section and up among the variables that were previously declared within a
depending on the variable being for input or output the pointers to the <command>declare</> section. Depending on whether the variable is
variables are written to the output to allow for access by the function. being use for input or output, a pointer to the variable is
output to allow access by the function.
</para> </para>
<para> <para>
For every variable that is part of the <acronym>SQL</acronym> request For every variable that is part of the <acronym>SQL</acronym>
the function gets another ten arguments: query, the function gets other arguments:
<simplelist> <simplelist>
<member>The type as a special symbol.</member> <member>The type as a special symbol.</member>
<member>A pointer to the value or a pointer to the pointer.</member> <member>A pointer to the value or a pointer to the pointer.</member>
<member>The size of the variable if it is a char or varchar.</member> <member>The size of the variable if it is a char or varchar.</member>
<member>Number of elements in the array (for array fetches).</member> <member>The number of elements in the array (for array fetches).</member>
<member>The offset to the next element in the array (for array fetches)</member> <member>The offset to the next element in the array (for array fetches).</member>
<member>The type of the indicator variable as a special symbol.</member> <member>The type of the indicator variable as a special symbol.</member>
<member>A pointer to the value of the indicator variable or a pointer to the pointer of the indicator variable.</member> <member>A pointer to the value of the indicator variable or a pointer to the pointer of the indicator variable.</member>
<member>0.</member> <member>0.</member>
<member>Number of elements in the indicator array (for array fetches).</member> <member>Number of elements in the indicator array (for array fetches).</member>
<member>The offset to the next element in the indicator array (for array fetches)</member> <member>The offset to the next element in the indicator array
(for array fetches).</member>
</simplelist> </simplelist>
</para> </para>
...@@ -929,10 +906,9 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -929,10 +906,9 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
ECPGt_int,&amp;(result),1L,1L,sizeof(int), ECPGt_int,&amp;(result),1L,1L,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 147 "foo.pgc" #line 147 "foo.pgc"
</programlisting> </programlisting>
(the indentation in this manual is added for readability and not (The indentation in this manual is added for readability and not
something that the preprocessor can do.) something the preprocessor does.)
</para> </para>
</sect2> </sect2>
...@@ -940,11 +916,11 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -940,11 +916,11 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
<title>The Library</title> <title>The Library</title>
<para> <para>
The most important function in the library is the <function>ECPGdo</function> The most important function in the library is
function. It takes a variable amount of arguments. Hopefully we will not run <function>ECPGdo</function>. It takes a variable number of
into machines with limits on the amount of variables that can be arguments. Hopefully there are no computers that limit the
accepted by a vararg function. This could easily add up to 50 or so number of variables that can be accepted by a varargs() function. This
arguments. can easily add up to 50 or so arguments.
</para> </para>
<para> <para>
...@@ -955,7 +931,7 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -955,7 +931,7 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
<term>A line number</term> <term>A line number</term>
<listitem> <listitem>
<para> <para>
This is a line number for the original line used in error messages only. This is a line number of the original line; used in error messages only.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -964,11 +940,11 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -964,11 +940,11 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
<term>A string</term> <term>A string</term>
<listitem> <listitem>
<para> <para>
This is the <acronym>SQL</acronym> request that is to be issued. This is the <acronym>SQL</acronym> query that is to be issued.
This request is modified It is modified by the input variables, i.e. the variables that
by the input variables, i.e. the variables that where not known at where not known at compile time but are to be entered in the
compile time but are to be entered in the request. Where the variables query. Where the variables should go the string contains
should go the string contains ";". <literal>?</literal>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -977,7 +953,7 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -977,7 +953,7 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
<term>Input variables</term> <term>Input variables</term>
<listitem> <listitem>
<para> <para>
As described in the section about the preprocessor every input variable As described in the section about the preprocessor, every input variable
gets ten arguments. gets ten arguments.
</para> </para>
</listitem> </listitem>
...@@ -996,7 +972,7 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -996,7 +972,7 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
<term>Output variables</term> <term>Output variables</term>
<listitem> <listitem>
<para> <para>
As described in the section about the preprocessor every input variable As described in the section about the preprocessor, every input variable
gets ten arguments. These variables are filled by the function. gets ten arguments. These variables are filled by the function.
</para> </para>
</listitem> </listitem>
...@@ -1014,16 +990,14 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ", ...@@ -1014,16 +990,14 @@ ECPGdo(__LINE__, NULL, "select res from mytable where index = ? ",
</para> </para>
<para> <para>
All the <acronym>SQL</acronym> statements are performed in one transaction All <acronym>SQL</acronym> statements are performed in one
unless you issue a commit transaction. To get this auto-transaction going transaction unless you issue a commit transaction. To accomplish
the first statement or the first after statement after a commit or rollback this auto-transaction behavior, the first statement and the first
always begins a transaction. To disable this feature per default use the statement after a commit or rollback always begins a new transaction. To
<option>-t</option> option on the commandline. disable this feature, use the <option>-t</option> command-line
option.
</para> </para>
<para>
To be completed: entries describing the other entries.
</para>
</sect2> </sect2>
</sect1> </sect1>
</chapter> </chapter>
......
# This is the italian version of some errors. Errors not in this file # This is the italian version of some errors. Errors not in this file
# are handled by the parent errors.properties file. # are handled by the parent errors.properties file.
# #
# Daniele Arduini <darduini@deis.unibo.it> # Daniele Arduini <darduini@cinetica.it <mailto:darduini@cinetica.it>>
# Wed Aug 9 12:18:31 CEST 2000 # Tue Aug 21 09:26:47 CEST 2001
# #
postgresql.drv.version:Si è verificato un errore interno. Si consiglia di ricompilare il driver.
postgresql.con.auth:L'autenticazione di tipo {0} non è supportata. Verificare che nel file di configurazione pg_hba.conf sia presente l'indirizzo IP o la sotto-rete del client, e che lo schema di autenticazione utilizzato sia supportato dal driver. postgresql.con.auth:L'autenticazione di tipo {0} non è supportata. Verificare che nel file di configurazione pg_hba.conf sia presente l'indirizzo IP o la sotto-rete del client, e che lo schema di autenticazione utilizzato sia supportato dal driver.
postgresql.con.authfail:Si è verificato un errore durante la richiesta di autenticazione. postgresql.con.authfail:Si è verificato un errore durante la richiesta di autenticazione.
postgresql.con.call:I ``Callable Statements'' non sono supportati al momento. postgresql.con.call:I ``Callable Statements'' non sono supportati al momento.
postgresql.con.creobj:Fallita la creazione dell'oggetto per {0} {1} postgresql.con.creobj:Fallita la creazione dell'oggetto per {0} {1}
postgresql.con.failed:Il tentativo di connessione è fallito perché {0} postgresql.con.failed:Il tentativo di connessione è fallito perché {0}
#postgresql.con.fathom:Unable to fathom update count {0} postgresql.con.fathom:Impossibile il conteggio di ``update'' {0}
postgresql.con.garbled:Ricevuti dati incomprensibili. postgresql.con.garbled:Ricevuti dati incomprensibili.
postgresql.con.ioerror:Si è verificato un errore di I/O nella spedizione di dati al backend - {0} postgresql.con.ioerror:Si è verificato un errore di I/O nella spedizione di dati al processo server - {0}
postgresql.con.kerb4:L'autenticazione di tipo ``Kerberos 4'' non è supportata da questo driver. postgresql.con.kerb4:L'autenticazione di tipo ``Kerberos 4'' non è supportata da questo driver.
postgresql.con.kerb5:L'autenticazione di tipo ``Kerberos 5'' non è supportata da questo driver. postgresql.con.kerb5:L'autenticazione di tipo ``Kerberos 5'' non è supportata da questo driver.
postgresql.con.multres:Impossibile gestire gruppi multipli di risultati. postgresql.con.multres:Impossibile gestire gruppi multipli di risultati.
...@@ -28,47 +29,50 @@ postgresql.con.user:La propriet ...@@ -28,47 +29,50 @@ postgresql.con.user:La propriet
postgresql.fp.error:La chiamata a FastPath ha restituito {0} postgresql.fp.error:La chiamata a FastPath ha restituito {0}
postgresql.fp.expint:Chiamata Fastpath {0} - Nessun risultato restituito mentre ci si aspettava un intero. postgresql.fp.expint:Chiamata Fastpath {0} - Nessun risultato restituito mentre ci si aspettava un intero.
postgresql.fp.protocol:Errore nel protocollo FastPath: {0} postgresql.fp.protocol:Errore nel protocollo FastPath: {0}
postgresql.fp.send:Fallita la spedizione della chiamata fastpath {0} {1} postgresql.fp.send:Fallito l'invio della chiamata fastpath {0} {1}
postgresql.fp.unknown:La funzione fastpath {0} è sconosciuta. postgresql.fp.unknown:La funzione fastpath {0} è sconosciuta.
postgresql.geo.box:Fallita la conversione di un ``box'' - {0} postgresql.geo.box:Fallita la conversione di un ``box'' - {0}
postgresql.geo.circle:Fallita la conversione di un ``circle'' - {0} postgresql.geo.circle:Fallita la conversione di un ``circle'' - {0}
postgresql.geo.line:Fallita la conversione di una ``line'' - {0} postgresql.geo.line:Fallita la conversione di una ``line'' - {0}
postgresql.geo.lseg:Fallita la conversione di un ``lseg'' - {0} postgresql.geo.lseg:Fallita la conversione di un ``lseg'' - {0}
postgresql.geo.path:Impossibile stabilire se il ``path'' è aperto o chiuso. postgresql.geo.path:Impossibile stabilire se il percorso è aperto o chiuso.
postgresql.geo.point:Fallita la conversione di un ``point'' - {0} postgresql.geo.point:Fallita la conversione di un ``point'' - {0}
postgresql.jvm.version:Il file ``postgresql.jar'' non contiene le classi JDBC corrette per questa JVM. Provare a ricompilarle. Se il problema persiste, tentare di forzare la versione fornendola nella linea di comando con l'opzione -Djava.version=1.1 or -Djava.version=1.2\nL'eccezione ricevuta è stata {0} postgresql.jvm.version:Il file ``postgresql.jar'' non contiene le classi JDBC corrette per questa JVM. Provare a ricompilarle. Se il problema persiste, tentare di forzare la versione fornendo sulla linea di comando l'opzione -Djava.version=1.1 oppure -Djava.version=1.2\nL'eccezione ricevuta è stata {0}
postgresql.lo.init:Inizializzazione di LargeObject API fallita. postgresql.lo.init:Inizializzazione di LargeObject API fallita.
postgresql.money:Fallita la conversione di un ``money'' - {0}. postgresql.money:Fallita la conversione di un ``money'' - {0}.
postgresql.noupdate:Questo ResultSet non è modificabile.
postgresql.notsensitive:Questo ResultSet non risente delle modifiche in tempo reale dopo che la query è stata eseguita.
postgresql.psqlnotimp:Il processo server al momento non supporta questa funzionalità.
postgresql.prep.is:InputStream come parametro non è supportato postgresql.prep.is:InputStream come parametro non è supportato
postgresql.prep.param:Nessun valore specificato come parametro {0}. postgresql.prep.param:Nessun valore specificato come parametro {0}.
postgresql.prep.range:Indice di parametro fuori dall'intervallo. postgresql.prep.range:Indice del parametro fuori dall'intervallo ammissibile.
postgresql.prep.type:Valore di tipo sconosciuto. postgresql.prep.type:Valore di tipo sconosciuto.
postgresql.res.badbigdec:Cattivo BigDecimal {0} postgresql.res.badbigdec:BigDecimal non corretto {0}
postgresql.res.badbyte:Cattivo Byte {0} postgresql.res.badbyte:Byte non corretto {0}
postgresql.res.baddate:Cattivo Date Format a {0} in {1} postgresql.res.baddate:Date Format non corretto a {0} in {1}
postgresql.res.baddouble:Cattivo Double {0} postgresql.res.baddouble:Double non corretto {0}
postgresql.res.badfloat:Cattivo Float {0} postgresql.res.badfloat:Float non corretto {0}
postgresql.res.badint:Cattivo Integer {0} postgresql.res.badint:Integer non corretto {0}
postgresql.res.badlong:Cattivo Long {0} postgresql.res.badlong:Long non corretto {0}
postgresql.res.badshort:Cattivo Short {0} postgresql.res.badshort:Short non corretto {0}
postgresql.res.badtime:Cattivo Time {0} postgresql.res.badtime:Time non corretto {0}
postgresql.res.badtimestamp:Cattivo Timestamp Format a {0} in {1} postgresql.res.badtimestamp:Timestamp Format non corretto a {0} in {1}
postgresql.res.colname:Colonna denominata {0} non trovata. postgresql.res.colname:Colonna denominata {0} non trovata.
postgresql.res.colrange:Indice di colonna fuori dall'intervallo. postgresql.res.colrange:Indice di colonna fuori dall'intervallo ammissibile.
postgresql.serial.interface:Impossibile serializzare una interfaccia. postgresql.serial.interface:Impossibile serializzare un'interfaccia.
postgresql.serial.namelength:La lunghezza dei nomi per Class & Package non può essere superiore a 32 caratteri. {0} è di {1} caratteri. postgresql.serial.namelength:La lunghezza dei nomi per Class & Package non può essere superiore a 32 caratteri. {0} è di {1} caratteri.
postgresql.serial.noclass:Nessuna classe trovata per {0}. postgresql.serial.noclass:Nessuna classe trovata per {0}.
postgresql.serial.table:La tabella per {0} non è nel database. Contattare il DBA, visto che il database è in uno stato incosistente. postgresql.serial.table:La tabella per {0} non è nel database. Contattare l'amministratore del DB, visto che il database è in uno stato incosistente.
postgresql.serial.underscore:Il nome di una classe non può contenere il carattere ``_''. E` stato fornito {0}. postgresql.serial.underscore:Il nome di una classe non può contenere il carattere ``_''. E` stato fornito {0}.
postgresql.stat.batch.empty:La sequenza di operazioni è vuota. Non c'è niente da eseguire. postgresql.stat.batch.empty:La sequenza di operazioni è vuota. Non c'è niente da eseguire.
postgresql.stat.batch.error:L'operazione {0} {1} della sequenza è stata annullata. postgresql.stat.batch.error:L'operazione {0} {1} della sequenza è stata annullata.
postgresql.stat.maxfieldsize:Fallito un tentativo a setMaxFieldSize() - verrà utilizzato il valore predefinito a tempo di compilazione. postgresql.stat.maxfieldsize:Fallito un tentativo a setMaxFieldSize() - verrà utilizzato il valore predefinito a tempo di compilazione.
postgresql.stat.noresult:Nessun risultato è stato restituito dalla query. postgresql.stat.noresult:Nessun risultato è stato restituito dalla query.
postgresql.stat.result:Un risultato è stato restituito dallo statement, quando ci si aspettava nulla. postgresql.stat.result:Un risultato è stato restituito dallo statement, quando non ci si aspettava nulla.
postgresql.stream.eof:Il backend ha interrotto la connessione. Probabilmente la tua azione ha causato la sua uscita. postgresql.stream.eof:Il backend ha interrotto la connessione. Probabilmente la tua azione ha causato la sua uscita.
postgresql.stream.flush:Si è verificato un errore di I/O mentre si svuotava il buffer d'uscita - {0} postgresql.stream.flush:Si è verificato un errore di I/O mentre si svuotava il buffer d'uscita - {0}
postgresql.stream.ioerror:Si è verificato un errore di I/O mentre si leggevano dati dal backend - {0} postgresql.stream.ioerror:Si è verificato un errore di I/O mentre si leggevano dati dal backend - {0}
postgresql.stream.toomuch:Troppi dati ricevuti. postgresql.stream.toomuch:Troppi dati ricevuti.
postgresql.unusual:Qualcosa di insolito si è verificato causando il fallimento del driver. Per favore riferire allo sviluppatore questa eccezione: {0} postgresql.unusual:Qualcosa di insolito si è verificato causando il fallimento del driver. Per favore riferire all'autore del driver questa eccezione: {0}
postgresql.unimplemented:Questo metodo non è stato ancora implementato. postgresql.unimplemented:Questo metodo non è stato ancora implementato.
postgresql.unexpected:Un risultato inaspettato è stato ricevuto dalla query. postgresql.unexpected:Un risultato inaspettato è stato ricevuto dalla query.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment