diff --git a/src/lib/dhcpsrv/pgsql_lease_mgr.cc b/src/lib/dhcpsrv/pgsql_lease_mgr.cc index eef68d5a87..430783ce89 100644 --- a/src/lib/dhcpsrv/pgsql_lease_mgr.cc +++ b/src/lib/dhcpsrv/pgsql_lease_mgr.cc @@ -54,9 +54,6 @@ const size_t MAX_PARAMETERS_IN_QUERY = 13; /// @brief Defines a single query struct TaggedStatement { - /// Query index - PgSqlLeaseMgr::StatementIndex index; - /// Number of parameters for a given query int nbparams; @@ -89,119 +86,134 @@ const size_t OID_VARCHAR = 1043; /// that the order columns appear in statement body must match the order they /// that the occur in the table. This does not apply to the where clause. TaggedStatement tagged_statements[] = { - {PgSqlLeaseMgr::DELETE_LEASE4, 1, - { OID_INT8 }, - "delete_lease4", - "DELETE FROM lease4 WHERE address = $1"}, - {PgSqlLeaseMgr::DELETE_LEASE6, 1, - { OID_VARCHAR }, - "delete_lease6", - "DELETE FROM lease6 WHERE address = $1"}, - {PgSqlLeaseMgr::GET_LEASE4_ADDR, 1, - { OID_INT8 }, - "get_lease4_addr", - "SELECT address, hwaddr, client_id, " - "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " - "fqdn_fwd, fqdn_rev, hostname " - "FROM lease4 " - "WHERE address = $1"}, - {PgSqlLeaseMgr::GET_LEASE4_CLIENTID, 1, - { OID_BYTEA }, - "get_lease4_clientid", - "SELECT address, hwaddr, client_id, " - "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " - "fqdn_fwd, fqdn_rev, hostname " - "FROM lease4 " - "WHERE client_id = $1"}, - {PgSqlLeaseMgr::GET_LEASE4_CLIENTID_SUBID, 2, - { OID_BYTEA, OID_INT8 }, - "get_lease4_clientid_subid", - "SELECT address, hwaddr, client_id, " - "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " - "fqdn_fwd, fqdn_rev, hostname " - "FROM lease4 " - "WHERE client_id = $1 AND subnet_id = $2"}, - {PgSqlLeaseMgr::GET_LEASE4_HWADDR, 1, - { OID_BYTEA }, - "get_lease4_hwaddr", - "SELECT address, hwaddr, client_id, " - "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " - "fqdn_fwd, fqdn_rev, hostname " - "FROM lease4 " - "WHERE hwaddr = $1"}, - {PgSqlLeaseMgr::GET_LEASE4_HWADDR_SUBID, 2, - { OID_BYTEA, OID_INT8 }, - "get_lease4_hwaddr_subid", - "SELECT address, hwaddr, client_id, " - "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " - "fqdn_fwd, fqdn_rev, hostname " - "FROM lease4 " - "WHERE hwaddr = $1 AND subnet_id = $2"}, - {PgSqlLeaseMgr::GET_LEASE6_ADDR, 2, - { OID_VARCHAR, OID_INT2 }, - "get_lease6_addr", - "SELECT address, duid, valid_lifetime, " - "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, " - "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname " - "FROM lease6 " - "WHERE address = $1 AND lease_type = $2"}, - {PgSqlLeaseMgr::GET_LEASE6_DUID_IAID, 3, - { OID_BYTEA, OID_INT8, OID_INT2 }, - "get_lease6_duid_iaid", - "SELECT address, duid, valid_lifetime, " - "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, " - "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname " - "FROM lease6 " - "WHERE duid = $1 AND iaid = $2 AND lease_type = $3"}, - {PgSqlLeaseMgr::GET_LEASE6_DUID_IAID_SUBID, 4, - { OID_INT2, OID_BYTEA, OID_INT8, OID_INT8 }, - "get_lease6_duid_iaid_subid", - "SELECT address, duid, valid_lifetime, " - "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, " - "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname " - "FROM lease6 " - "WHERE lease_type = $1 " - "AND duid = $2 AND iaid = $3 AND subnet_id = $4"}, - {PgSqlLeaseMgr::GET_VERSION, 0, - { OID_NONE }, - "get_version", - "SELECT version, minor FROM schema_version"}, - {PgSqlLeaseMgr::INSERT_LEASE4, 9, - { OID_INT8, OID_BYTEA, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, + // DELETE_LEASE4 + { 1, { OID_INT8 }, + "delete_lease4", + "DELETE FROM lease4 WHERE address = $1"}, + + // DELETE_LEASE6 + { 1, { OID_VARCHAR }, + "delete_lease6", + "DELETE FROM lease6 WHERE address = $1"}, + + // GET_LEASE4_ADDR + { 1, { OID_INT8 }, + "get_lease4_addr", + "SELECT address, hwaddr, client_id, " + "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " + "fqdn_fwd, fqdn_rev, hostname " + "FROM lease4 " + "WHERE address = $1"}, + + // GET_LEASE4_CLIENTID + { 1, { OID_BYTEA }, + "get_lease4_clientid", + "SELECT address, hwaddr, client_id, " + "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " + "fqdn_fwd, fqdn_rev, hostname " + "FROM lease4 " + "WHERE client_id = $1"}, + + // GET_LEASE4_CLIENTID_SUBID + { 2, { OID_BYTEA, OID_INT8 }, + "get_lease4_clientid_subid", + "SELECT address, hwaddr, client_id, " + "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " + "fqdn_fwd, fqdn_rev, hostname " + "FROM lease4 " + "WHERE client_id = $1 AND subnet_id = $2"}, + + // GET_LEASE4_HWADDR + { 1, { OID_BYTEA }, + "get_lease4_hwaddr", + "SELECT address, hwaddr, client_id, " + "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " + "fqdn_fwd, fqdn_rev, hostname " + "FROM lease4 " + "WHERE hwaddr = $1"}, + + // GET_LEASE4_HWADDR_SUBID + { 2, { OID_BYTEA, OID_INT8 }, + "get_lease4_hwaddr_subid", + "SELECT address, hwaddr, client_id, " + "valid_lifetime, extract(epoch from expire)::bigint, subnet_id, " + "fqdn_fwd, fqdn_rev, hostname " + "FROM lease4 " + "WHERE hwaddr = $1 AND subnet_id = $2"}, + + // GET_LEASE6_ADDR + { 2, { OID_VARCHAR, OID_INT2 }, + "get_lease6_addr", + "SELECT address, duid, valid_lifetime, " + "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, " + "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname " + "FROM lease6 " + "WHERE address = $1 AND lease_type = $2"}, + + // GET_LEASE6_DUID_IAID + { 3, { OID_BYTEA, OID_INT8, OID_INT2 }, + "get_lease6_duid_iaid", + "SELECT address, duid, valid_lifetime, " + "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, " + "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname " + "FROM lease6 " + "WHERE duid = $1 AND iaid = $2 AND lease_type = $3"}, + + // GET_LEASE6_DUID_IAID_SUBID + { 4, { OID_INT2, OID_BYTEA, OID_INT8, OID_INT8 }, + "get_lease6_duid_iaid_subid", + "SELECT address, duid, valid_lifetime, " + "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, " + "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname " + "FROM lease6 " + "WHERE lease_type = $1 " + "AND duid = $2 AND iaid = $3 AND subnet_id = $4"}, + + // GET_VERSION + { 0, { OID_NONE }, + "get_version", + "SELECT version, minor FROM schema_version"}, + + // INSERT_LEASE4 + { 9, { OID_INT8, OID_BYTEA, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, OID_BOOL, OID_BOOL, OID_VARCHAR }, - "insert_lease4", - "INSERT INTO lease4(address, hwaddr, client_id, " - "valid_lifetime, expire, subnet_id, fqdn_fwd, fqdn_rev, hostname) " - "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)"}, - {PgSqlLeaseMgr::INSERT_LEASE6, 12, - { OID_VARCHAR, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, - OID_INT8, OID_INT2, OID_INT8, OID_INT2, OID_BOOL, OID_BOOL, - OID_VARCHAR }, - "insert_lease6", - "INSERT INTO lease6(address, duid, valid_lifetime, " - "expire, subnet_id, pref_lifetime, " - "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname) " - "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)"}, - {PgSqlLeaseMgr::UPDATE_LEASE4, 10, - { OID_INT8, OID_BYTEA, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, - OID_BOOL, OID_BOOL, OID_VARCHAR, OID_INT8 }, - "update_lease4", - "UPDATE lease4 SET address = $1, hwaddr = $2, " - "client_id = $3, valid_lifetime = $4, expire = $5, " - "subnet_id = $6, fqdn_fwd = $7, fqdn_rev = $8, hostname = $9 " - "WHERE address = $10"}, - {PgSqlLeaseMgr::UPDATE_LEASE6, 13, - { OID_VARCHAR, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, OID_INT8, - OID_INT2, OID_INT8, OID_INT2, OID_BOOL, OID_BOOL, OID_VARCHAR, - OID_VARCHAR }, - "update_lease6", - "UPDATE lease6 SET address = $1, duid = $2, " - "valid_lifetime = $3, expire = $4, subnet_id = $5, " - "pref_lifetime = $6, lease_type = $7, iaid = $8, " - "prefix_len = $9, fqdn_fwd = $10, fqdn_rev = $11, hostname = $12 " - "WHERE address = $13"}, + "insert_lease4", + "INSERT INTO lease4(address, hwaddr, client_id, " + "valid_lifetime, expire, subnet_id, fqdn_fwd, fqdn_rev, hostname) " + "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)"}, + + // INSERT_LEASE6 + { 12, { OID_VARCHAR, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, + OID_INT8, OID_INT2, OID_INT8, OID_INT2, OID_BOOL, OID_BOOL, + OID_VARCHAR }, + "insert_lease6", + "INSERT INTO lease6(address, duid, valid_lifetime, " + "expire, subnet_id, pref_lifetime, " + "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname) " + "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)"}, + + // UPDATE_LEASE4 + { 10, { OID_INT8, OID_BYTEA, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, + OID_BOOL, OID_BOOL, OID_VARCHAR, OID_INT8 }, + "update_lease4", + "UPDATE lease4 SET address = $1, hwaddr = $2, " + "client_id = $3, valid_lifetime = $4, expire = $5, " + "subnet_id = $6, fqdn_fwd = $7, fqdn_rev = $8, hostname = $9 " + "WHERE address = $10"}, + + // UPDATE_LEASE6 + { 13, { OID_VARCHAR, OID_BYTEA, OID_INT8, OID_TIMESTAMP, OID_INT8, OID_INT8, + OID_INT2, OID_INT8, OID_INT2, OID_BOOL, OID_BOOL, OID_VARCHAR, + OID_VARCHAR }, + "update_lease6", + "UPDATE lease6 SET address = $1, duid = $2, " + "valid_lifetime = $3, expire = $4, subnet_id = $5, " + "pref_lifetime = $6, lease_type = $7, iaid = $8, " + "prefix_len = $9, fqdn_fwd = $10, fqdn_rev = $11, hostname = $12 " + "WHERE address = $13"}, + // End of list sentinel - {PgSqlLeaseMgr::NUM_STATEMENTS, 0, { 0 }, NULL, NULL} + { 0, { 0 }, NULL, NULL} }; };