summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc/descriptor.c
diff options
context:
space:
mode:
authorMichael Meskes2021-08-13 08:34:04 +0000
committerMichael Meskes2021-08-13 08:45:08 +0000
commit399edafa2aba562a8013fbe039f3cbf3a41a436e (patch)
treeab6b4389af421ea0982fa1da9c7d9f92dade93d6 /src/interfaces/ecpg/preproc/descriptor.c
parent512f4ca6c6b5d2e3a1620288048ccaa712121e12 (diff)
Fix connection handling for DEALLOCATE and DESCRIBE statements
After binding a statement to a connection with DECLARE STATEMENT the connection was still not used for DEALLOCATE and DESCRIBE statements. This patch fixes that, adds a missing warning and cleans up the code. Author: Hayato Kuroda Reviewed-by: Kyotaro Horiguchi, Michael Paquier Discussion: https://postgr.es/m/TYAPR01MB5866BA57688DF2770E2F95C6F5069%40TYAPR01MB5866.jpnprd01.prod.outlook.com
Diffstat (limited to 'src/interfaces/ecpg/preproc/descriptor.c')
-rw-r--r--src/interfaces/ecpg/preproc/descriptor.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/interfaces/ecpg/preproc/descriptor.c b/src/interfaces/ecpg/preproc/descriptor.c
index a29f5303273..35d94711d56 100644
--- a/src/interfaces/ecpg/preproc/descriptor.c
+++ b/src/interfaces/ecpg/preproc/descriptor.c
@@ -121,7 +121,10 @@ drop_descriptor(char *name, char *connection)
}
}
}
- mmerror(PARSE_ERROR, ET_WARNING, "descriptor \"%s\" does not exist", name);
+ if (connection)
+ mmerror(PARSE_ERROR, ET_WARNING, "descriptor %s bound to connection %s does not exist", name, connection);
+ else
+ mmerror(PARSE_ERROR, ET_WARNING, "descriptor %s bound to the default connection does not exist", name);
}
struct descriptor
@@ -141,9 +144,18 @@ lookup_descriptor(char *name, char *connection)
|| (connection && i->connection
&& strcmp(connection, i->connection) == 0))
return i;
+ if (connection && !i->connection)
+ {
+ /* overwrite descriptor's connection */
+ i->connection = mm_strdup(connection);
+ return i;
+ }
}
}
- mmerror(PARSE_ERROR, ET_WARNING, "descriptor \"%s\" does not exist", name);
+ if (connection)
+ mmerror(PARSE_ERROR, ET_WARNING, "descriptor %s bound to connection %s does not exist", name, connection);
+ else
+ mmerror(PARSE_ERROR, ET_WARNING, "descriptor %s bound to the default connection does not exist", name);
return NULL;
}