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

Function act_create_database

src/gpre/sql.cpp:1687–1777  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1685//
1686
1687static act* act_create_database()
1688{
1689 bool dummy;
1690
1691 if (gpreGlob.isc_databases && gpreGlob.isc_databases->dbb_next)
1692 PAR_error("CREATE DATABASE only allowed in context of a single database");
1693
1694 if (!gpreGlob.isc_databases)
1695 {
1696 // generate a dummy db
1697
1698 dummy = true;
1699 gpreGlob.isc_databases = (gpre_dbb*) MSC_alloc_permanent(DBB_LEN);
1700
1701 // allocate symbol block
1702
1703 gpre_sym* symbol = (gpre_sym*) MSC_alloc_permanent(SYM_LEN);
1704
1705 // make it the default database
1706
1707 symbol->sym_type = SYM_database;
1708 symbol->sym_object = (gpre_ctx*) gpreGlob.isc_databases;
1709 symbol->sym_string = gpreGlob.database_name;
1710
1711 // database block points to the symbol block
1712
1713 gpreGlob.isc_databases->dbb_name = symbol;
1714 gpreGlob.isc_databases->dbb_filename = NULL;
1715 gpreGlob.isc_databases->dbb_c_lc_ctype = gpreGlob.module_lc_ctype;
1716 }
1717 else
1718 dummy = false;
1719
1720 // get database name
1721
1722 gpre_dbb* db = NULL;
1723 if (isQuoted(gpreGlob.token_global.tok_type))
1724 {
1725 db = dup_dbb(gpreGlob.isc_databases);
1726 TEXT* string = (TEXT*) MSC_alloc(gpreGlob.token_global.tok_length + 1);
1727 db->dbb_filename = string;
1728 MSC_copy(gpreGlob.token_global.tok_string, gpreGlob.token_global.tok_length, string);
1729 if (!gpreGlob.isc_databases->dbb_filename)
1730 gpreGlob.isc_databases->dbb_filename = string;
1731 PAR_get_token();
1732 }
1733 else
1734 CPR_s_error("<quoted database name>");
1735
1736 // Create a request for generating DYN to add files to database.
1737
1738 //gpre_req* request = MSC_request (REQ_create_database);
1739 gpre_req* request = MSC_request(REQ_ddl);
1740 request->req_flags |= REQ_sql_database_dyn;
1741 request->req_database = db;
1742
1743 // create action block
1744

Callers 1

act_createFunction · 0.85

Calls 12

MSC_alloc_permanentFunction · 0.85
isQuotedFunction · 0.85
dup_dbbFunction · 0.85
MSC_allocFunction · 0.85
MSC_copyFunction · 0.85
PAR_get_tokenFunction · 0.85
CPR_s_errorFunction · 0.85
MSC_requestFunction · 0.85
MSC_actionFunction · 0.85
tail_databaseFunction · 0.85
PAR_errorFunction · 0.70
gen_wheneverFunction · 0.70

Tested by

no test coverage detected