* SyncVariables * * Make psql's internal variables agree with connection state upon * establishing a new connection. */
| 3667 | * establishing a new connection. |
| 3668 | */ |
| 3669 | void |
| 3670 | SyncVariables(void) |
| 3671 | { |
| 3672 | char vbuf[32]; |
| 3673 | const char *server_version; |
| 3674 | |
| 3675 | /* get stuff from connection */ |
| 3676 | pset.encoding = PQclientEncoding(pset.db); |
| 3677 | pset.popt.topt.encoding = pset.encoding; |
| 3678 | pset.sversion = PQserverVersion(pset.db); |
| 3679 | |
| 3680 | setFmtEncoding(pset.encoding); |
| 3681 | |
| 3682 | SetVariable(pset.vars, "DBNAME", PQdb(pset.db)); |
| 3683 | SetVariable(pset.vars, "USER", PQuser(pset.db)); |
| 3684 | SetVariable(pset.vars, "HOST", PQhost(pset.db)); |
| 3685 | SetVariable(pset.vars, "PORT", PQport(pset.db)); |
| 3686 | SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding)); |
| 3687 | |
| 3688 | /* this bit should match connection_warnings(): */ |
| 3689 | /* Try to get full text form of version, might include "devel" etc */ |
| 3690 | server_version = PQparameterStatus(pset.db, "server_version"); |
| 3691 | /* Otherwise fall back on pset.sversion */ |
| 3692 | if (!server_version) |
| 3693 | { |
| 3694 | formatPGVersionNumber(pset.sversion, true, vbuf, sizeof(vbuf)); |
| 3695 | server_version = vbuf; |
| 3696 | } |
| 3697 | SetVariable(pset.vars, "SERVER_VERSION_NAME", server_version); |
| 3698 | |
| 3699 | snprintf(vbuf, sizeof(vbuf), "%d", pset.sversion); |
| 3700 | SetVariable(pset.vars, "SERVER_VERSION_NUM", vbuf); |
| 3701 | |
| 3702 | /* send stuff to it, too */ |
| 3703 | PQsetErrorVerbosity(pset.db, pset.verbosity); |
| 3704 | PQsetErrorContextVisibility(pset.db, pset.show_context); |
| 3705 | } |
| 3706 | |
| 3707 | /* |
| 3708 | * UnsyncVariables |
no test coverage detected