| 1685 | // |
| 1686 | |
| 1687 | static 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 |
no test coverage detected