MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / gen_create_database

Function gen_create_database

src/gpre/languages/ada.cpp:1013–1083  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1011//
1012
1013static void gen_create_database( const act* action, int column)
1014{
1015 TEXT s1[32], s2[32];
1016
1017 gpre_req* request = ((mdbb*) action->act_object)->mdbb_dpb_request;
1018 const gpre_dbb* db = (gpre_dbb*) request->req_database;
1019
1020 sprintf(s1, "isc_%dl", request->req_ident);
1021
1022 if (request->req_flags & REQ_extend_dpb)
1023 {
1024 sprintf(s2, "isc_%dp", request->req_ident);
1025 if (request->req_length)
1026 printa(column, "%s = isc_to_dpb_ptr (isc_%d'address);", s2, request->req_ident);
1027 if (db->dbb_r_user)
1028 printa(column, "firebird.MODIFY_DPB (%s, %s, firebird.isc_dpb_user_name, %s, %d);\n",
1029 s2, s1, db->dbb_r_user, (strlen(db->dbb_r_user) - 2));
1030 if (db->dbb_r_password)
1031 printa(column, "firebird.MODIFY_DPB (%s, %s, firebird.isc_dpb_password, %s, %d);\n",
1032 s2, s1, db->dbb_r_password,
1033 (strlen(db->dbb_r_password) - 2));
1034
1035 // Process Role Name
1036 if (db->dbb_r_sql_role)
1037 printa(column, "firebird.MODIFY_DPB (%s, %s, firebird.isc_dpb_sql_role_name, %s, %d);\n",
1038 s2, s1, db->dbb_r_sql_role, (strlen(db->dbb_r_sql_role) - 2));
1039
1040 if (db->dbb_r_lc_messages)
1041 printa(column, "firebird.MODIFY_DPB (%s, %s, firebird.isc_dpb_lc_messages, %s, %d);\n",
1042 s2, s1, db->dbb_r_lc_messages, (strlen(db->dbb_r_lc_messages) - 2));
1043 if (db->dbb_r_lc_ctype)
1044 printa(column, "firebird.MODIFY_DPB (%s, %s, firebird.isc_dpb_lc_ctype, %s, %d);\n",
1045 s2, s1, db->dbb_r_lc_ctype, (strlen(db->dbb_r_lc_ctype) - 2));
1046
1047 }
1048 else
1049 sprintf(s2, "isc_to_dpb_ptr (isc_%d'address)", request->req_ident);
1050
1051 if (request->req_length)
1052 printa(column, "firebird.CREATE_DATABASE (%s %d, \"%s\", %s%s, %s, %s, 0);",
1053 status_vector(action), strlen(db->dbb_filename), db->dbb_filename,
1054 gpreGlob.ada_package, db->dbb_name->sym_string, s1, s2);
1055 else
1056 printa(column, "firebird.CREATE_DATABASE (%s %d, \"%s\", %s%s, 0, firebird.null_dpb, 0);",
1057 status_vector(action), strlen(db->dbb_filename), db->dbb_filename,
1058 gpreGlob.ada_package, db->dbb_name->sym_string);
1059
1060 if (request && request->req_flags & REQ_extend_dpb)
1061 {
1062 if (request->req_length)
1063 printa(column, "if (%s != isc_%d)", s2, request->req_ident);
1064 printa(column + (request->req_length ? 4 : 0), "firebird.FREE (%s);", s2);
1065
1066 // reset the length of the dpb
1067 if (request->req_length)
1068 printa(column, "%s = %d;", s1, request->req_length);
1069 }
1070

Callers 1

ADA_actionFunction · 0.70

Calls 5

printaFunction · 0.70
status_vectorFunction · 0.70
gen_ddlFunction · 0.70
set_sqlcodeFunction · 0.70
endifFunction · 0.70

Tested by

no test coverage detected