8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 15:23:03 +01:00

Remove QLI. (#6840)

This commit is contained in:
Adriano dos Santos Fernandes 2021-06-08 10:31:18 -03:00 committed by GitHub
parent 11e6ef9cd8
commit 010c3a8bd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
109 changed files with 693 additions and 38890 deletions

View File

@ -112,7 +112,6 @@ function(epp_process type files)
COMMENT "Calling GPRE master for ${F}"
#
COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
COMMAND ${CMAKE_COMMAND} -E copy_if_different metadata.fdb ${dir}/yachts.lnk
COMMAND ${CMAKE_COMMAND} -E copy_if_different security.fdb ${dir}/security.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different msg.fdb ${dir}/msg.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different help.fdb ${dir}/help.fdb

View File

@ -48,7 +48,4 @@ source_group("JRD files\\${GEN_TXT}" "${BSRC}/jrd/${GEN}")
source_group("JRD files\\Trace" "${SSRC}/jrd/trace/${CPP}")
source_group("Lock" "${SSRC}/lock/${CPP}")
source_group("REMOTE files" "${SSRC}/remote/${CPP}")
source_group("QLI files" "${SSRC}/qli/${CPP}")
source_group("QLI files\\${EPP_TXT}" "${SSRC}/qli/${EPP}")
source_group("QLI files\\${GEN_TXT}" "${BSRC}/qli/${GEN}")
source_group("UTILITIES files" "${SSRC}/utilities/${CPP}")

View File

@ -137,7 +137,6 @@ copyFiles() {
cp $BuiltFBDir/bin/gstat $DestDir/bin/gstat
copyIfExists $BuiltFBDir/bin/isc4.gbak $DestDir/bin/isc4.gbak
cp $BuiltFBDir/bin/isql $DestDir/bin/isql
cp $BuiltFBDir/bin/qli $DestDir/bin/qli
# Append libraries to scripts
addLibs $BuiltFBDir/bin changedbapassword.aix.sh $DestDir/bin
@ -167,9 +166,6 @@ copyFiles() {
echo "Example files have not been built!"
fi
copyIfExists $BuiltFBDir/help/help.gbak $DestDir/help
cp $BuiltFBDir/help/help.fdb $DestDir/help
#cp -r $BuildSrcDir/doc $DestDir
#cp -r $BuiltFBDir/doc $DestDir

View File

@ -137,7 +137,7 @@ copyFiles() {
#directories
makeDirs "@FB_BINDIR@ @FB_SBINDIR@ @FB_CONFDIR@ @FB_LIBDIR@ @FB_INCDIR@ @FB_DOCDIR@/sql.extensions @FB_SAMPLEDIR@ \
@FB_SAMPLEDBDIR@ @FB_HELPDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \
@FB_SAMPLEDBDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \
@FB_GUARDDIR@ @FB_PLUGDIR@ @FB_TZDATADIR@"
for i in metadata security; do
@ -159,7 +159,6 @@ copyFiles() {
copyIfExists $BuiltFBDir/bin/fbsvcmgr ${TargetDir}@FB_BINDIR@
copyIfExists $BuiltFBDir/bin/fbtracemgr ${TargetDir}@FB_BINDIR@
cp $BuiltFBDir/bin/isql ${TargetDir}@FB_BINDIR@/isql
cp $BuiltFBDir/bin/qli ${TargetDir}@FB_BINDIR@/qli
chown root:wheel ${TargetDir}@FB_BINDIR@/*
chmod 0755 ${TargetDir}@FB_BINDIR@/*
@ -219,13 +218,6 @@ copyFiles() {
chmod 0444 ${TargetDir}@FB_SAMPLEDBDIR@/*.fdb
fi
#QLI help
copyIfExists $BuiltFBDir/help/help.gbak ${TargetDir}@FB_HELPDIR@
cp $BuiltFBDir/help/help.fdb ${TargetDir}@FB_HELPDIR@
chown root:wheel ${TargetDir}@FB_HELPDIR@/*.fdb
chmod 0444 ${TargetDir}@FB_HELPDIR@/*.fdb
#message file
cp $BuiltFBDir/*.msg ${TargetDir}@FB_MSGDIR@
@ -368,9 +360,6 @@ fixFilePermissions() {
do
MakeFileFirebirdWritable $i
done
cd @FB_HELPDIR@
chmod a=r help.fdb
}

View File

@ -135,7 +135,6 @@ copyFiles() {
cp $BuiltFBDir/bin/gstat $DestDir/bin/gstat
copyIfExists $BuiltFBDir/bin/isc4.gbak $DestDir/bin/isc4.gbak
cp $BuiltFBDir/bin/isql $DestDir/bin/isql
cp $BuiltFBDir/bin/qli $DestDir/bin/qli
# Append libraries to scripts
addLibs $BuiltFBDir/bin changedbaPassword.sh $DestDir/bin
@ -166,9 +165,6 @@ copyFiles() {
echo "Example files have not been built!"
fi
copyIfExists $BuiltFBDir/help/help.gbak $DestDir/help
cp $BuiltFBDir/help/help.fdb $DestDir/help
#cp -r $BuildSrcDir/doc $DestDir
#cp -r $BuiltFBDir/doc $DestDir

View File

@ -109,7 +109,6 @@ copyFiles() {
cp $BuiltFBDir/bin/gstat $DestDir/bin/gstat
copyIfExists $BuiltFBDir/bin/security.gbak $DestDir/bin/security.gbak
cp $BuiltFBDir/bin/isql $DestDir/bin/isql
cp $BuiltFBDir/bin/qli $DestDir/bin/qli
cp $BuildRootDir/gen/install/bin/SSchangeRunUser.sh $DestDir/bin
cp $BuildRootDir/gen/install/bin/SSrestoreRootRunUser.sh $DestDir/bin
@ -134,9 +133,6 @@ copyFiles() {
done
fi
copyIfExists $BuiltFBDir/help/help.gbak $DestDir/help
cp $BuiltFBDir/help/help.fdb $DestDir/help
#cp -r $BuildSrcDir/doc $DestDir
#cp -r $BuiltFBDir/doc $DestDir

View File

@ -162,7 +162,7 @@ copyFiles() {
#directories
makeDirs "@FB_BINDIR@ @FB_SBINDIR@ @FB_CONFDIR@ @FB_LIBDIR@ @FB_INCDIR@/firebird @FB_DOCDIR@/sql.extensions \
@FB_SAMPLEDIR@ @FB_SAMPLEDBDIR@ @FB_HELPDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \
@FB_SAMPLEDIR@ @FB_SAMPLEDBDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \
@FB_GUARDDIR@ @FB_PLUGDIR@ @FB_TZDATADIR@"
for i in udf; do
@ -182,7 +182,6 @@ copyFiles() {
copyIfExists $BuiltFBDir/bin/fbsvcmgr ${TargetDir}@FB_BINDIR@
copyIfExists $BuiltFBDir/bin/fbtracemgr ${TargetDir}@FB_BINDIR@
cp $BuiltFBDir/bin/isql ${TargetDir}@FB_BINDIR@/isql
cp $BuiltFBDir/bin/qli ${TargetDir}@FB_BINDIR@/qli
chmod 0755 ${TargetDir}@FB_BINDIR@/*
@ -226,12 +225,6 @@ copyFiles() {
chmod 0755 ${TargetDir}@FB_SAMPLEDIR@/prebuilt/bin/*
fi
#QLI help
copyIfExists $BuiltFBDir/help/help.gbak ${TargetDir}@FB_HELPDIR@
cp $BuiltFBDir/help/help.fdb ${TargetDir}@FB_HELPDIR@
chmod 0444 ${TargetDir}@FB_HELPDIR@/*.fdb
#message file
cp $BuiltFBDir/*.msg ${TargetDir}@FB_MSGDIR@

View File

@ -151,7 +151,6 @@ copyIfExists $BuiltFBDir/bin/gsplit $DestDir/bin/gsplit || exit
cp $BuiltFBDir/bin/gstat $DestDir/bin/gstat || exit
copyIfExists $BuiltFBDir/bin/isc4.gbak $DestDir/bin/isc4.gbk || exit
cp $BuiltFBDir/bin/isql $DestDir/bin/isql || exit
cp $BuiltFBDir/bin/qli $DestDir/bin/qli || exit
# Copy examples only if we have them
exampleFiles=`find $BuiltFBDir/examples/ -type f -print`
@ -165,9 +164,6 @@ else
done
fi
copyIfExists $BuiltFBDir/help/help.gbak $DestDir/help || exit
cp $BuiltFBDir/help/help.fdb $DestDir/help || exit
cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg || exit
cp $BuiltFBDir/security2.fdb $DestDir/security2.fdb.sample || exit
@ -240,7 +236,7 @@ do
chmod ug=rx,o= $i || exit
done
chmod a=rx isql qli
chmod a=rx isql
# SUID is needed for running server programs.
for i in fb_lock_mgr gds_drop fb_smp_server

View File

@ -71,7 +71,6 @@ f none @prefix@/bin/gstat=$SRCDIR/bin/gstat 0451 firebird firebird
#f none @prefix@/bin/fbguard=$SRCDIR/bin/fbguard 0451 firebird firebird
#f none @prefix@/bin/fbmgr.bin=$SRCDIR/bin/fbmgr.bin 0451 firebird firebird
f none @prefix@/bin/fb_lock_print=$SRCDIR/bin/fb_lock_print 0451 firebird firebird
f none @prefix@/bin/qli=$SRCDIR/bin/qli 0555 firebird firebird
# from 2.0
f none @prefix@/bin/nbackup=$SRCDIR/bin/nbackup 0451 firebird firebird

View File

@ -72,7 +72,6 @@ f none @prefix@/bin/fbguard=$SRCDIR/bin/fbguard 0755 firebird firebird
f none @prefix@/bin/fbserver=$SRCDIR/bin/fbserver 0755 firebird firebird
f none @prefix@/bin/fbmgr.bin=$SRCDIR/bin/fbmgr.bin 0755 firebird firebird
f none @prefix@/bin/fb_lock_print=$SRCDIR/bin/fb_lock_print 0755 firebird firebird
f none @prefix@/bin/qli=$SRCDIR/bin/qli 6777 firebird firebird
# from 2.0
f none @prefix@/bin/nbackup=$SRCDIR/bin/nbackup 6777 firebird firebird
# from 2.1

View File

@ -48,7 +48,6 @@ f none @prefix@/bin/gstat=$SRCDIR/bin/gstat 0755 root root
f none @prefix@/bin/isql=$SRCDIR/bin/isql 0755 root root
#f none @prefix@/bin/isql_static=$SRCDIR/bin/isql_static 0755 root root
#f none @prefix@/bin/modify_messages=$SRCDIR/bin/modify_messages 0755 root root
f none @prefix@/bin/qli=$SRCDIR/bin/qli 0755 root root
f none @prefix@/bin/fb_lock_print=$SRCDIR/bin/fb_lock_print 0755 root root
d none @prefix@/examples 0755 root root

View File

@ -431,22 +431,6 @@ copy %FB_ROOT_PATH%\builds\install\misc\databases.conf %FB_OUTPUT_DIR%\databases
@goto :EOF
:MISC
::==============================================
:: Make sure that qli's help.fdb is available
::===============================================
@if not exist %FB_OUTPUT_DIR%\help\help.fdb (
(@echo Copying help.fdb for qli support)
(@copy %FB_GEN_DIR%\dbs\help.fdb %FB_OUTPUT_DIR%\help\help.fdb > nul)
(@if %ERRORLEVEL% GEQ 1 ( (call :ERROR Could not copy qli help database ) & (goto :EOF)))
)
::End of MISC
::-----------------
@goto :EOF
:FB_MSG
::=================================================================
:: firebird.msg is generated as part of the build process
@ -714,9 +698,6 @@ if defined WIX (
@echo Writing databases conf
@(@call :DB_CONF ) || (@echo Error calling DB_CONF && @goto :END)
@echo.
@echo Copying miscellany such as the QLI help database
@(@call :MISC ) || (@echo Error calling MISC & @goto :END)
@echo.
@echo Copying firebird.msg
@(@call :FB_MSG ) || (@echo Error calling FB_MSG && @goto :END)
@echo.

View File

@ -480,7 +480,6 @@ Source: {#FilesDir}\instreg.exe; DestDir: {app}; Components: ClientComponent; Fl
Source: {#FilesDir}\instsvc.exe; DestDir: {app}; Components: ServerComponent; MinVersion: {#MinVer}; Flags: sharedfile ignoreversion
Source: {#FilesDir}\isql.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion
Source: {#FilesDir}\nbackup.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion
Source: {#FilesDir}\qli.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion
Source: {#FilesDir}\fbsvcmgr.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion
Source: {#FilesDir}\fbtracemgr.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion
Source: {#FilesDir}\fbclient.dll; DestDir: {app}; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder

View File

@ -748,7 +748,7 @@ procedure SetupSharedFilesArray;
//to list them in the order they appear in the setup script
// Shared Files are defined as either:
// - Files which are absolutely necessary for a functioning installation.
// Hence gbak and gfix are shared files, isql and qli are not
// Hence gbak and gfix are shared files, isql is not
// - Libraries
// - License files
begin

View File

@ -33,7 +33,6 @@ fb_confdir=@FB_CONFDIR@
fb_docdir=@FB_DOCDIR@
fb_sampledir=@FB_SAMPLEDIR@
fb_sampledbdir=@FB_SAMPLEDBDIR@
fb_helpdir=@FB_HELPDIR@
fb_intldir=@FB_INTLDIR@
fb_miscdir=@FB_MISCDIR@
fb_securedbdir=@FB_SECDBDIR@
@ -100,7 +99,6 @@ while test $# -gt 0
--confdir) echo $fb_confdir ;;
--docdir) echo $fb_docdir ;;
--sampledir) echo $fb_sampledir ;;
--helpdir) echo $fb_helpdir ;;
--intldir) echo $fb_intldir ;;
--miscdir) echo $fb_miscdir ;;
--securedbdir) echo $fb_securedbdir ;;

View File

@ -830,7 +830,7 @@ removeEmptyDirs() {
dirContentChanged=''
for rootDir in @FB_BINDIR@ @FB_SBINDIR@ @FB_LIBDIR@ @FB_INCDIR@ @FB_DOCDIR@ @FB_SAMPLEDIR@ @FB_SAMPLEDBDIR@ \
@FB_HELPDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ @FB_GUARDDIR@ @FB_PLUGDIR@ \
@FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ @FB_GUARDDIR@ @FB_PLUGDIR@ \
@FB_TZDATADIR@ @FB_CONFDIR@; do
if [ -d $rootDir ]; then
@ -878,7 +878,7 @@ fixFilePermissions() {
# First of all set owneship of all files to root
# Build list of interesting directories all over the FS
dirs="@FB_BINDIR@ @FB_SBINDIR@ @FB_CONFDIR@ @FB_LIBDIR@ @FB_INCDIR@/firebird @FB_DOCDIR@/sql.extensions \
@FB_SAMPLEDIR@ @FB_SAMPLEDBDIR@ @FB_HELPDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \
@FB_SAMPLEDIR@ @FB_SAMPLEDBDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \
@FB_GUARDDIR@ @FB_PLUGDIR@ @FB_TZDATADIR@"
dirs2=`for i in $dirs; do echo $i; done|sort|uniq`
@ -947,10 +947,6 @@ fixFilePermissions() {
do
MakeFileFirebirdWritable $i
done
# Fix QLI help
cd @FB_HELPDIR@
chmod a=r help.fdb
}

View File

@ -22,7 +22,6 @@ LOCK_MGR= $(BUILD_DIR)/gds_lock_mgr
GFIX= $(BUILD_DIR)/gfix
ISQL= $(BUILD_DIR)/isql
GSEC= $(BUILD_DIR)/gsec
QLI= $(BUILD_DIR)/qli
CHECK_MSGS= $(BUILD_DIR)/check_msgs
BUILD_MSGS= $(BUILD_DIR)/build_file
SEC_AUTH= $(VAR)/auth/security_db.auth
@ -30,7 +29,6 @@ LOCAL_USER_AUTH= $(VAR)/auth/current_euid.auth
EMPTY_DB= $(DB_ROOT)/empty.gdb
MSG_DB= $(DB_ROOT)/msg.gdb
HELP_DB= $(DB_ROOT)/help.gdb
META_DB= $(DB_ROOT)/metadata.gdb
ISC_DB= $(FIREBIRD)/isc4.gdb
ISC_GBAK= $(FIREBIRD)/isc.gbak
@ -75,9 +73,6 @@ SECURITY_GEN_FILES= $(SECURITY_EPP_FILES:%.epp=$(GEN_ROOT)/utilities/%.cpp)
MSG_EPP_FILES= build_file.epp change_msgs.epp check_msgs.epp enter_msgs.epp load.epp modify_msgs.epp
MSG_GEN_FILES= $(MSG_EPP_FILES:%.epp=$(GEN_ROOT)/msgs/%.cpp)
QLI_EPP_FILES= help.epp meta.epp proc.epp show.epp
QLI_GEN_FILES= $(QLI_EPP_FILES:%.epp=$(GEN_ROOT)/qli/%.cpp)
GPRE_FLAGS= -r -m -z -n
all:
@ -119,9 +114,6 @@ $(GEN_ROOT)/utilities/%.cpp: $(SRC_ROOT)/utilities/%.epp $(GPRE)
$(GEN_ROOT)/msgs/%.cpp: $(SRC_ROOT)/msgs/%.epp $(GPRE)
$(GPRE) $(GPRE_FLAGS) $< $@
$(GEN_ROOT)/qli/%.cpp: $(SRC_ROOT)/qli/%.epp $(GPRE)
$(GPRE) $(GPRE_FLAGS) $< $@
gds_lock_mgr: $(LOCK_MGR)
$(LOCK_MGR): $(PROJ_ROOT)/build/gds_lock_mgr
cp $< $@
@ -205,13 +197,6 @@ gfix_preprocess_%:
gfix_preprocess_:
./gpre_wrapper.sh gfix_preprocess alice
qli_preprocess_clean:
rm -f $(QLI_GEN_FILES)
qli_preprocess: $(QLI_GEN_FILES)
qli_preprocess_%:
qli_preprocess_:
./gpre_wrapper.sh qli_preprocess qli
security_preprocess_clean:
rm -f $(SECURITY_GEN_FILES)
security_preprocess: $(SECURITY_GEN_FILES)
@ -237,10 +222,6 @@ empty_db_: $(EMPTY_DB)
$(EMPTY_DB):
rm -f $(EMPTY_DB)
$(CREATE_DB) $(EMPTY_DB)
ln -fs $(EMPTY_DB) $(GEN_ROOT)/burp/yachts.lnk
ln -fs $(EMPTY_DB) $(GEN_ROOT)/alice/yachts.lnk
ln -fs $(EMPTY_DB) $(GEN_ROOT)/isql/yachts.lnk
ln -fs $(EMPTY_DB) $(GEN_ROOT)/utilities/yachts.lnk
empty_db_%:
$(FULL_FW_FLAG):
@ -262,24 +243,11 @@ $(PS_FW_FLAG): $(FULL_FW_FLAG) $(UPG_FW_FLAG)
touch $(PS_FW_FLAG)
darwin_pseudo_fw_clean:
build_dbs_: $(MSG_DB) $(HELP_DB) $(META_DB)
build_dbs_clean:
rm -f $(MSG_DB) $(HELP_DB) $(META_DB)
build_dbs_%:
$(MSG_DB): $(SRC_ROOT)/msgs/msg.gbak
$(GBAK) -MODE read_only -R $(SRC_ROOT)/msgs/msg.gbak $@
ln -fs $(MSG_DB) $(GEN_ROOT)/msgs/msg.gdb
ln -fs $(MSG_DB) $(GEN_ROOT)/msgs/master_msg_db
$(HELP_DB): $(SRC_ROOT)/misc/help.gbak
$(GBAK) -MODE read_only -R $(SRC_ROOT)/misc/help.gbak $@
ln -fs $(HELP_DB) $(GEN_ROOT)/qli/help.gdb
$(META_DB): $(SRC_ROOT)/misc/metadata.gbak
$(GBAK) -MODE read_only -R $(SRC_ROOT)/misc/metadata.gbak $@
ln -fs $(META_DB) $(GEN_ROOT)/qli/yachts.lnk
isc4.gdb_: $(ISC_DB) sysdba_user
$(ISC_DB) : $(SRC_ROOT)/utilities/isc4.sql $(SRC_ROOT)/utilities/isc4.gdl
( cd $(FIREBIRD); $(ISQL) -z -i $(SRC_ROOT)/utilities/isc4.sql)
@ -334,7 +302,7 @@ fw_files_:
mkdir -p $(VAR)/auth
mkdir -p $(FB_FW)/Resources/bin
cp $(FIREBIRD)/interbase.msg $(VAR)/interbase.msg
-cp $(GPRE) $(GBAK) $(ISQL) $(QLI) $(GSEC) $(GFIX) $(FB_FW)/Resources/bin
-cp $(GPRE) $(GBAK) $(ISQL) $(GSEC) $(GFIX) $(FB_FW)/Resources/bin
cp $(FIREBIRD)/isc.gbak $(VAR)
cp build/gdsintl $(VAR)/intl
chmod a+x $(VAR)/intl/*

Binary file not shown.

Binary file not shown.

View File

@ -412,33 +412,13 @@ gpre: $(GPRE) databases
$(GPRE): $(GPRE_Objects) $(COMMON_LIB)
$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..)
HELP_FDB = $(FIREBIRD)/help/help.fdb
SECURITY_FDB = $(FIREBIRD)/security5.fdb
SECURITY_TMP = security.tmp
databases: yachts.lnk msg.timestamp $(HELP_FDB) $(SECURITY_FDB)
databases: msg.timestamp $(SECURITY_FDB)
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(FIREBIRD)/lib
yachts.lnk: metadata.fdb
-$(RM) $@
$(LN) $^ $@
metadata.fdb: $(RUN_ISQL) $(SRC_ROOT)/dbs/metadata.sql
-$(RM) $@
$(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql
$(RUN_GFIX) -mode read_only $@
$(CHMOD) 0444 $@
$(HELP_FDB): help.fdb
-$(RM) $@
$(CP) $^ $@
$(CHMOD) 0444 $@
help.fdb: $(BLD_ROOT)/misc/help.gbak
$(RUN_GBAK) -MODE read_only -R $< $@
$(CHMOD) 0444 $@
$(SECURITY_FDB): security.fdb
-$(RM) $@
$(CP) $^ $@
@ -474,7 +454,6 @@ $(LIBIBUTIL_SO): $(UTIL_Objects)
#___________________________________________________________________________
# most of utilities, including network server and UDF support
# qli is not here cause it needs special database (help.fdb), therefore needs gbak
#
.PHONY: firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix gsec gsplit gstat isql nbackup
@ -636,22 +615,17 @@ $(CODES): $(CODES_Objects) $(COMMON_LIB)
# all the rest we need to build
#
.PHONY: qli message_file tzdata gbak_files
.PHONY: message_file tzdata gbak_files
FDB_FILES := $(HELP_FDB) $(ROOT)/gen/msg.fdb $(SECURITY_FDB) $(FIREBIRD)/examples/empbuild/employee.fdb
FDB_FILES := $(ROOT)/gen/msg.fdb $(SECURITY_FDB) $(FIREBIRD)/examples/empbuild/employee.fdb
GBAK_FILES := $(FDB_FILES:.fdb=.gbak) $(FIREBIRD)/msg.gbak
GBAK_FILES := $(subst Native,$(TARGET),$(GBAK_FILES))
rest: qli message_file tzdata
rest: message_file tzdata
cross_rest: qli gbak_files
cross_rest: gbak_files
$(MAKE) $(BUILD_FILE)
qli: $(QLI)
$(QLI): $(QLI_Objects) $(COMMON_LIB)
$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..)
examples: include_generic
$(MAKE) -f Makefile.examples -C $(GEN_ROOT)/examples/
$(MAKE) -f Makefile.plugins_examples
@ -772,7 +746,6 @@ clean_config clean_all: clean clean_makefiles
clean_dbs:
$(RM) *.fdb *.FDB msg.timestamp
$(RM) yachts.lnk
# The examples are a bit different, since the makefile is included in the directory

View File

@ -399,9 +399,6 @@ INSTSVC = $(BIN)/instsvc$(EXEC_EXT)
SECURITY_FDB = $(FIREBIRD)/security5.fdb
# From qli
QLI = $(BIN)/qli$(EXEC_EXT)
# From isql
ISQL = $(BIN)/isql$(EXEC_EXT)
RUN_ISQL = $(RBIN)/isql$(EXEC_EXT)

View File

@ -61,10 +61,6 @@ $(SRC_ROOT)/gpre/gpre_meta.cpp: $(SRC_ROOT)/gpre/gpre_meta.epp
$(GPRE_BOOT) -lang_internal $(GPRE_FLAGS) $< $@
# These need to change to $(GEN_SRC) at some stage
#$(SRC_ROOT)/qli/meta.cpp $(SRC_ROOT)/qli/proc.cpp $(SRC_ROOT)/qli/show.cpp: yachts.lnk
#$(SRC_ROOT)/qli/help.cpp: help.fdb
# Explicit dependence on generated header (parser)
$(OBJ)/dsql/Parser.o $(OBJ)/common/keywords.o $(OBJ)/dsql/dsql.o: $(SRC_ROOT)/include/gen/parse.h

View File

@ -169,12 +169,6 @@ ISQL_Objects:= $(call dirObjects,isql)
AllObjects += $(ISQL_Objects)
# QLI
QLI_Objects:= $(call dirObjects,qli)
AllObjects += $(QLI_Objects)
# Legacy users management in security database
LEGACY_USERS_MANAGE_Objects:= $(call makeObjects,auth/SecurityDatabase,LegacyManagement.epp)

View File

@ -55,7 +55,6 @@ framework:
cp -r ../gen/$(TARGET)/firebird/plugins $(FB_FW)/Versions/A/Resources/plugins
cp ../gen/$(TARGET)/firebird/security5.fdb $(FB_FW)/Versions/A/Resources/security5.fdb
cp ../gen/$(TARGET)/firebird/firebird.msg $(FB_FW)/Versions/A/Resources/firebird.msg
cp -r ../gen/$(TARGET)/firebird/help $(FB_FW)/Versions/A/Resources/help
cp -r ../gen/$(TARGET)/firebird/tzdata $(FB_FW)/Versions/A/Resources/tzdata
mkdir -p $(FB_FW)/Resources/doc
cp -r ../doc $(FB_FW)/Resources
@ -68,7 +67,6 @@ framework:
cp ../gen/$(TARGET)/firebird/bin/gbak $(FB_FW)/Versions/A/Resources/bin
cp ../gen/$(TARGET)/firebird/bin/isql $(FB_FW)/Versions/A/Resources/bin
cp ../gen/$(TARGET)/firebird/bin/gpre $(FB_FW)/Versions/A/Resources/bin
cp ../gen/$(TARGET)/firebird/bin/qli $(FB_FW)/Versions/A/Resources/bin
cp ../gen/$(TARGET)/firebird/bin/fb_lock_print $(FB_FW)/Versions/A/Resources/bin
cp ../gen/$(TARGET)/firebird/bin/gsec $(FB_FW)/Versions/A/Resources/bin
cp ../gen/$(TARGET)/firebird/bin/gstat $(FB_FW)/Versions/A/Resources/bin

View File

@ -42,7 +42,7 @@ LIB_GUI:= -mwindows -lcomctl32 -lgdi32
# Add resources to some files
FilesToAddVersionInfo=$(LIBFBEMBED_SO) $(LIBFBCLIENT_SO) $(LIBFBINTL_SO) \
$(GSTAT) $(GSEC) $(GFIX) $(QLI) $(ISQL) $(GBAK) $(GPRE)
$(GSTAT) $(GSEC) $(GFIX) $(ISQL) $(GBAK) $(GPRE)
# TODO: guardians also must be here
FilesToAddDialog=$(FB_SUPER_SERVER) $(FB_CLASSIC_SERVER)
FilesToAddDialog2=$(IBGUARD)

View File

@ -19,7 +19,7 @@ set ERRLEV=0
@echo.
@echo Creating directories
:: Create the directory hierarchy.
for %%v in ( alice auth burp dsql gpre isql jrd misc msgs qli examples yvalve utilities) do (
for %%v in ( alice auth burp dsql gpre isql jrd misc msgs examples yvalve utilities) do (
@mkdir %FB_GEN_DIR%\%%v 2>nul
)
@ -312,14 +312,8 @@ goto :EOF
@"%FB_BIN_DIR%\isql" -q %FB_GEN_DB_DIR%/dbs/security5.fdb -i %FB_ROOT_PATH%\src\dbs\security.sql
@copy %FB_GEN_DIR%\dbs\security5.fdb %FB_GEN_DIR%\dbs\security.fdb > nul
@echo Restore metadata.gbak...
@%FB_BIN_DIR%\gbak -r %FB_ROOT_PATH%\builds\misc\metadata.gbak %FB_GEN_DB_DIR%/dbs/metadata.fdb
@call create_msgs.bat db
@%FB_BIN_DIR%\gbak -r %FB_ROOT_PATH%\builds\misc\help.gbak %FB_GEN_DB_DIR%/dbs/help.fdb
@copy %FB_GEN_DIR%\dbs\metadata.fdb %FB_GEN_DIR%\dbs\yachts.lnk > nul
@goto :EOF

View File

@ -52,8 +52,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isql", "isql.vcxproj", "{DE
{F8798A49-9D20-451E-A7BD-FEB5237103B5} = {F8798A49-9D20-451E-A7BD-FEB5237103B5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qli", "qli.vcxproj", "{EBB8361B-49D5-43A5-8771-940DF3E308EF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remote", "remote.vcxproj", "{4BCC693D-1745-45ED-8302-E5E2F979549A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nbackup", "nbackup.vcxproj", "{01A41DFA-8908-4576-A1F1-C8BC7EAE39A1}"

View File

@ -1,254 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EBB8361B-49D5-43A5-8771-940DF3E308EF}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;DEV_BUILD;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;DEV_BUILD;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\qli\all.cpp" />
<ClCompile Include="..\..\..\src\qli\command.cpp" />
<ClCompile Include="..\..\..\src\qli\compile.cpp" />
<ClCompile Include="..\..\..\src\qli\dtr.cpp" />
<ClCompile Include="..\..\..\src\qli\err.cpp" />
<ClCompile Include="..\..\..\src\qli\eval.cpp" />
<ClCompile Include="..\..\..\src\qli\exe.cpp" />
<ClCompile Include="..\..\..\src\qli\expand.cpp" />
<ClCompile Include="..\..\..\src\qli\format.cpp" />
<ClCompile Include="..\..\..\src\qli\gener.cpp" />
<ClCompile Include="..\..\..\src\qli\hsh.cpp" />
<ClCompile Include="..\..\..\src\qli\lex.cpp" />
<ClCompile Include="..\..\..\src\qli\mov.cpp" />
<ClCompile Include="..\..\..\src\qli\parse.cpp" />
<ClCompile Include="..\..\..\src\qli\picstr.cpp" />
<ClCompile Include="..\..\..\src\qli\report.cpp" />
<ClCompile Include="..\..\..\gen\qli\help.cpp" />
<ClCompile Include="..\..\..\gen\qli\meta.cpp" />
<ClCompile Include="..\..\..\gen\qli\proc.cpp" />
<ClCompile Include="..\..\..\gen\qli\show.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\qli\help.epp" />
<None Include="..\..\..\src\qli\meta.epp" />
<None Include="..\..\..\src\qli\proc.epp" />
<None Include="..\..\..\src\qli\show.epp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="common.vcxproj">
<Project>{15605f44-bffd-444f-ad4c-55dc9d704465}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="yvalve.vcxproj">
<Project>{4fe03933-98cd-4879-a135-fd9430087a6b}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\qli\all_proto.h" />
<ClInclude Include="..\..\..\src\qli\blk.h" />
<ClInclude Include="..\..\..\src\qli\comma_proto.h" />
<ClInclude Include="..\..\..\src\qli\compile.h" />
<ClInclude Include="..\..\..\src\qli\compi_proto.h" />
<ClInclude Include="..\..\..\src\qli\dtr.h" />
<ClInclude Include="..\..\..\src\qli\err_proto.h" />
<ClInclude Include="..\..\..\src\qli\eval_proto.h" />
<ClInclude Include="..\..\..\src\qli\exe.h" />
<ClInclude Include="..\..\..\src\qli\exe_proto.h" />
<ClInclude Include="..\..\..\src\qli\expan_proto.h" />
<ClInclude Include="..\..\..\src\qli\format.h" />
<ClInclude Include="..\..\..\src\qli\forma_proto.h" />
<ClInclude Include="..\..\..\src\qli\gener_proto.h" />
<ClInclude Include="..\..\..\src\qli\help_proto.h" />
<ClInclude Include="..\..\..\src\qli\hsh_proto.h" />
<ClInclude Include="..\..\..\src\qli\lex_proto.h" />
<ClInclude Include="..\..\..\src\qli\meta_proto.h" />
<ClInclude Include="..\..\..\src\qli\mov_proto.h" />
<ClInclude Include="..\..\..\src\qli\parse.h" />
<ClInclude Include="..\..\..\src\qli\parse_proto.h" />
<ClInclude Include="..\..\..\src\qli\picst_proto.h" />
<ClInclude Include="..\..\..\src\qli\procddl1.h" />
<ClInclude Include="..\..\..\src\qli\procddl2.h" />
<ClInclude Include="..\..\..\src\qli\procddl3.h" />
<ClInclude Include="..\..\..\src\qli\procddl4.h" />
<ClInclude Include="..\..\..\src\qli\proc_ddl.h" />
<ClInclude Include="..\..\..\src\qli\proc_proto.h" />
<ClInclude Include="..\..\..\src\qli\qliswi.h" />
<ClInclude Include="..\..\..\src\qli\report.h" />
<ClInclude Include="..\..\..\src\qli\repor_proto.h" />
<ClInclude Include="..\..\..\src\qli\reqs.h" />
<ClInclude Include="..\..\..\src\qli\show_proto.h" />
<ClInclude Include="..\..\..\src\qli\symbols.h" />
<ClInclude Include="..\..\..\src\qli\words.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,209 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="QLI files">
<UniqueIdentifier>{da3cf9eb-a5b6-4478-87a3-3da5fa0c95a8}</UniqueIdentifier>
</Filter>
<Filter Include="Header files">
<UniqueIdentifier>{ea691fcc-ce86-44c7-b53b-40b660c82329}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
<Filter Include="Resource files">
<UniqueIdentifier>{34f2b335-6604-4188-a20b-e9916b80b05c}</UniqueIdentifier>
</Filter>
<Filter Include="QLI files\GPRE epp">
<UniqueIdentifier>{a1a82d81-9dc5-4076-8daa-a05176116840}</UniqueIdentifier>
</Filter>
<Filter Include="QLI files\GPRE cpp">
<UniqueIdentifier>{28befd96-6561-4892-8120-10fe6777523c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\qli\all.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\command.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\compile.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\dtr.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\err.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\eval.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\exe.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\expand.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\format.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\gener.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\hsh.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\lex.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\mov.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\parse.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\picstr.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\report.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\help.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\proc.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\meta.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\show.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\qli\help.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\meta.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\proc.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\show.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<Filter>Resource files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\qli\words.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\all_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\blk.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\comma_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\compi_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\compile.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\dtr.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\err_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\eval_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\exe.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\exe_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\expan_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\forma_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\format.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\gener_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\help_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\hsh_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\lex_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\meta_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\mov_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\parse.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\parse_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\picst_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\proc_ddl.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\proc_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl1.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl2.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl3.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl4.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\qliswi.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\repor_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\report.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\reqs.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\show_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\symbols.h">
<Filter>Header files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -52,8 +52,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isql", "isql.vcxproj", "{DE
{F8798A49-9D20-451E-A7BD-FEB5237103B5} = {F8798A49-9D20-451E-A7BD-FEB5237103B5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qli", "qli.vcxproj", "{EBB8361B-49D5-43A5-8771-940DF3E308EF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remote", "remote.vcxproj", "{4BCC693D-1745-45ED-8302-E5E2F979549A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nbackup", "nbackup.vcxproj", "{01A41DFA-8908-4576-A1F1-C8BC7EAE39A1}"

View File

@ -1,254 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EBB8361B-49D5-43A5-8771-940DF3E308EF}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;DEV_BUILD;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;DEV_BUILD;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\qli\all.cpp" />
<ClCompile Include="..\..\..\src\qli\command.cpp" />
<ClCompile Include="..\..\..\src\qli\compile.cpp" />
<ClCompile Include="..\..\..\src\qli\dtr.cpp" />
<ClCompile Include="..\..\..\src\qli\err.cpp" />
<ClCompile Include="..\..\..\src\qli\eval.cpp" />
<ClCompile Include="..\..\..\src\qli\exe.cpp" />
<ClCompile Include="..\..\..\src\qli\expand.cpp" />
<ClCompile Include="..\..\..\src\qli\format.cpp" />
<ClCompile Include="..\..\..\src\qli\gener.cpp" />
<ClCompile Include="..\..\..\src\qli\hsh.cpp" />
<ClCompile Include="..\..\..\src\qli\lex.cpp" />
<ClCompile Include="..\..\..\src\qli\mov.cpp" />
<ClCompile Include="..\..\..\src\qli\parse.cpp" />
<ClCompile Include="..\..\..\src\qli\picstr.cpp" />
<ClCompile Include="..\..\..\src\qli\report.cpp" />
<ClCompile Include="..\..\..\gen\qli\help.cpp" />
<ClCompile Include="..\..\..\gen\qli\meta.cpp" />
<ClCompile Include="..\..\..\gen\qli\proc.cpp" />
<ClCompile Include="..\..\..\gen\qli\show.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\qli\help.epp" />
<None Include="..\..\..\src\qli\meta.epp" />
<None Include="..\..\..\src\qli\proc.epp" />
<None Include="..\..\..\src\qli\show.epp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="common.vcxproj">
<Project>{15605f44-bffd-444f-ad4c-55dc9d704465}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="yvalve.vcxproj">
<Project>{4fe03933-98cd-4879-a135-fd9430087a6b}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\qli\all_proto.h" />
<ClInclude Include="..\..\..\src\qli\blk.h" />
<ClInclude Include="..\..\..\src\qli\comma_proto.h" />
<ClInclude Include="..\..\..\src\qli\compile.h" />
<ClInclude Include="..\..\..\src\qli\compi_proto.h" />
<ClInclude Include="..\..\..\src\qli\dtr.h" />
<ClInclude Include="..\..\..\src\qli\err_proto.h" />
<ClInclude Include="..\..\..\src\qli\eval_proto.h" />
<ClInclude Include="..\..\..\src\qli\exe.h" />
<ClInclude Include="..\..\..\src\qli\exe_proto.h" />
<ClInclude Include="..\..\..\src\qli\expan_proto.h" />
<ClInclude Include="..\..\..\src\qli\format.h" />
<ClInclude Include="..\..\..\src\qli\forma_proto.h" />
<ClInclude Include="..\..\..\src\qli\gener_proto.h" />
<ClInclude Include="..\..\..\src\qli\help_proto.h" />
<ClInclude Include="..\..\..\src\qli\hsh_proto.h" />
<ClInclude Include="..\..\..\src\qli\lex_proto.h" />
<ClInclude Include="..\..\..\src\qli\meta_proto.h" />
<ClInclude Include="..\..\..\src\qli\mov_proto.h" />
<ClInclude Include="..\..\..\src\qli\parse.h" />
<ClInclude Include="..\..\..\src\qli\parse_proto.h" />
<ClInclude Include="..\..\..\src\qli\picst_proto.h" />
<ClInclude Include="..\..\..\src\qli\procddl1.h" />
<ClInclude Include="..\..\..\src\qli\procddl2.h" />
<ClInclude Include="..\..\..\src\qli\procddl3.h" />
<ClInclude Include="..\..\..\src\qli\procddl4.h" />
<ClInclude Include="..\..\..\src\qli\proc_ddl.h" />
<ClInclude Include="..\..\..\src\qli\proc_proto.h" />
<ClInclude Include="..\..\..\src\qli\qliswi.h" />
<ClInclude Include="..\..\..\src\qli\report.h" />
<ClInclude Include="..\..\..\src\qli\repor_proto.h" />
<ClInclude Include="..\..\..\src\qli\reqs.h" />
<ClInclude Include="..\..\..\src\qli\show_proto.h" />
<ClInclude Include="..\..\..\src\qli\symbols.h" />
<ClInclude Include="..\..\..\src\qli\words.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,209 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="QLI files">
<UniqueIdentifier>{da3cf9eb-a5b6-4478-87a3-3da5fa0c95a8}</UniqueIdentifier>
</Filter>
<Filter Include="Header files">
<UniqueIdentifier>{ea691fcc-ce86-44c7-b53b-40b660c82329}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
<Filter Include="Resource files">
<UniqueIdentifier>{34f2b335-6604-4188-a20b-e9916b80b05c}</UniqueIdentifier>
</Filter>
<Filter Include="QLI files\GPRE epp">
<UniqueIdentifier>{a1a82d81-9dc5-4076-8daa-a05176116840}</UniqueIdentifier>
</Filter>
<Filter Include="QLI files\GPRE cpp">
<UniqueIdentifier>{28befd96-6561-4892-8120-10fe6777523c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\qli\all.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\command.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\compile.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\dtr.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\err.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\eval.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\exe.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\expand.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\format.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\gener.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\hsh.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\lex.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\mov.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\parse.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\picstr.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\report.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\help.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\proc.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\meta.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\show.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\qli\help.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\meta.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\proc.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\show.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<Filter>Resource files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\qli\words.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\all_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\blk.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\comma_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\compi_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\compile.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\dtr.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\err_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\eval_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\exe.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\exe_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\expan_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\forma_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\format.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\gener_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\help_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\hsh_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\lex_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\meta_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\mov_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\parse.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\parse_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\picst_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\proc_ddl.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\proc_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl1.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl2.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl3.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl4.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\qliswi.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\repor_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\report.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\reqs.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\show_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\symbols.h">
<Filter>Header files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -52,8 +52,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isql", "isql.vcxproj", "{DE
{F8798A49-9D20-451E-A7BD-FEB5237103B5} = {F8798A49-9D20-451E-A7BD-FEB5237103B5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qli", "qli.vcxproj", "{EBB8361B-49D5-43A5-8771-940DF3E308EF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remote", "remote.vcxproj", "{4BCC693D-1745-45ED-8302-E5E2F979549A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nbackup", "nbackup.vcxproj", "{01A41DFA-8908-4576-A1F1-C8BC7EAE39A1}"

View File

@ -1,255 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EBB8361B-49D5-43A5-8771-940DF3E308EF}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v141_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v141_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;DEV_BUILD;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;DEV_BUILD;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;SUPERCLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\qli\all.cpp" />
<ClCompile Include="..\..\..\src\qli\command.cpp" />
<ClCompile Include="..\..\..\src\qli\compile.cpp" />
<ClCompile Include="..\..\..\src\qli\dtr.cpp" />
<ClCompile Include="..\..\..\src\qli\err.cpp" />
<ClCompile Include="..\..\..\src\qli\eval.cpp" />
<ClCompile Include="..\..\..\src\qli\exe.cpp" />
<ClCompile Include="..\..\..\src\qli\expand.cpp" />
<ClCompile Include="..\..\..\src\qli\format.cpp" />
<ClCompile Include="..\..\..\src\qli\gener.cpp" />
<ClCompile Include="..\..\..\src\qli\hsh.cpp" />
<ClCompile Include="..\..\..\src\qli\lex.cpp" />
<ClCompile Include="..\..\..\src\qli\mov.cpp" />
<ClCompile Include="..\..\..\src\qli\parse.cpp" />
<ClCompile Include="..\..\..\src\qli\picstr.cpp" />
<ClCompile Include="..\..\..\src\qli\report.cpp" />
<ClCompile Include="..\..\..\gen\qli\help.cpp" />
<ClCompile Include="..\..\..\gen\qli\meta.cpp" />
<ClCompile Include="..\..\..\gen\qli\proc.cpp" />
<ClCompile Include="..\..\..\gen\qli\show.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\qli\help.epp" />
<None Include="..\..\..\src\qli\meta.epp" />
<None Include="..\..\..\src\qli\proc.epp" />
<None Include="..\..\..\src\qli\show.epp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="common.vcxproj">
<Project>{15605f44-bffd-444f-ad4c-55dc9d704465}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="yvalve.vcxproj">
<Project>{4fe03933-98cd-4879-a135-fd9430087a6b}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\qli\all_proto.h" />
<ClInclude Include="..\..\..\src\qli\blk.h" />
<ClInclude Include="..\..\..\src\qli\comma_proto.h" />
<ClInclude Include="..\..\..\src\qli\compile.h" />
<ClInclude Include="..\..\..\src\qli\compi_proto.h" />
<ClInclude Include="..\..\..\src\qli\dtr.h" />
<ClInclude Include="..\..\..\src\qli\err_proto.h" />
<ClInclude Include="..\..\..\src\qli\eval_proto.h" />
<ClInclude Include="..\..\..\src\qli\exe.h" />
<ClInclude Include="..\..\..\src\qli\exe_proto.h" />
<ClInclude Include="..\..\..\src\qli\expan_proto.h" />
<ClInclude Include="..\..\..\src\qli\format.h" />
<ClInclude Include="..\..\..\src\qli\forma_proto.h" />
<ClInclude Include="..\..\..\src\qli\gener_proto.h" />
<ClInclude Include="..\..\..\src\qli\help_proto.h" />
<ClInclude Include="..\..\..\src\qli\hsh_proto.h" />
<ClInclude Include="..\..\..\src\qli\lex_proto.h" />
<ClInclude Include="..\..\..\src\qli\meta_proto.h" />
<ClInclude Include="..\..\..\src\qli\mov_proto.h" />
<ClInclude Include="..\..\..\src\qli\parse.h" />
<ClInclude Include="..\..\..\src\qli\parse_proto.h" />
<ClInclude Include="..\..\..\src\qli\picst_proto.h" />
<ClInclude Include="..\..\..\src\qli\procddl1.h" />
<ClInclude Include="..\..\..\src\qli\procddl2.h" />
<ClInclude Include="..\..\..\src\qli\procddl3.h" />
<ClInclude Include="..\..\..\src\qli\procddl4.h" />
<ClInclude Include="..\..\..\src\qli\proc_ddl.h" />
<ClInclude Include="..\..\..\src\qli\proc_proto.h" />
<ClInclude Include="..\..\..\src\qli\qliswi.h" />
<ClInclude Include="..\..\..\src\qli\report.h" />
<ClInclude Include="..\..\..\src\qli\repor_proto.h" />
<ClInclude Include="..\..\..\src\qli\reqs.h" />
<ClInclude Include="..\..\..\src\qli\show_proto.h" />
<ClInclude Include="..\..\..\src\qli\symbols.h" />
<ClInclude Include="..\..\..\src\qli\words.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,209 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="QLI files">
<UniqueIdentifier>{da3cf9eb-a5b6-4478-87a3-3da5fa0c95a8}</UniqueIdentifier>
</Filter>
<Filter Include="Header files">
<UniqueIdentifier>{ea691fcc-ce86-44c7-b53b-40b660c82329}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
<Filter Include="Resource files">
<UniqueIdentifier>{34f2b335-6604-4188-a20b-e9916b80b05c}</UniqueIdentifier>
</Filter>
<Filter Include="QLI files\GPRE epp">
<UniqueIdentifier>{a1a82d81-9dc5-4076-8daa-a05176116840}</UniqueIdentifier>
</Filter>
<Filter Include="QLI files\GPRE cpp">
<UniqueIdentifier>{28befd96-6561-4892-8120-10fe6777523c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\qli\all.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\command.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\compile.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\dtr.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\err.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\eval.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\exe.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\expand.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\format.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\gener.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\hsh.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\lex.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\mov.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\parse.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\picstr.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\qli\report.cpp">
<Filter>QLI files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\help.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\proc.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\meta.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\qli\show.cpp">
<Filter>QLI files\GPRE cpp</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\qli\help.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\meta.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\proc.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\qli\show.epp">
<Filter>QLI files\GPRE epp</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<Filter>Resource files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\qli\words.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\all_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\blk.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\comma_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\compi_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\compile.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\dtr.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\err_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\eval_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\exe.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\exe_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\expan_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\forma_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\format.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\gener_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\help_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\hsh_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\lex_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\meta_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\mov_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\parse.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\parse_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\picst_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\proc_ddl.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\proc_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl1.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl2.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl3.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\procddl4.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\qliswi.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\repor_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\report.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\reqs.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\show_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\qli\symbols.h">
<Filter>Header files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -81,7 +81,6 @@ goto :EOF
@for %%i in (dfw, dpm, dyn_util, fun, grant, ini, met, scl, Function) do @call :PREPROCESS jrd %%i -gds_cxx
@for %%i in (codes) do @call :PREPROCESS misc %%i
@for %%i in (build_file) do @call :PREPROCESS msgs %%i
@for %%i in (help, meta, proc, show) do @call :PREPROCESS qli %%i
@for %%i in (extract, isql, show) do @call :PREPROCESS isql %%i -ocxx
@for %%i in (dba) do @call :PREPROCESS utilities/gstat %%i
@for %%i in (stats) do @call :PREPROCESS utilities %%i

View File

@ -678,7 +678,6 @@ XE_CONF_DIR(fbinclude, [C/C++ header files DIR (PREFIX/include)], FB_INCDIR, /in
XE_CONF_DIR(fbdoc, [documentation root DIR (PREFIX/doc)], FB_DOCDIR, /doc)
XE_CONF_DIR(fbsample, [examples DIR (PREFIX/examples)], FB_SAMPLEDIR, /examples)
XE_CONF_DIR(fbsample-db, [examples database DIR (PREFIX/examples/empbuild)], FB_SAMPLEDBDIR, /examples/empbuild)
XE_CONF_DIR(fbhelp, [QLI help DIR (PREFIX/help)], FB_HELPDIR, /help)
XE_CONF_DIR(fbintl, [international DIR (PREFIX/intl)], FB_INTLDIR, /intl)
XE_CONF_DIR(fbmisc, [misc DIR (PREFIX/misc)], FB_MISCDIR, /misc)
XE_CONF_DIR(fbsecure-db, [security database DIR (PREFIX)], FB_SECDBDIR)
@ -1249,7 +1248,6 @@ dnl # output
mkdir -p gen/\$fb_tgt/firebird/examples/prebuilt/plugins
mkdir -p gen/\$fb_tgt/firebird/lib
mkdir -p gen/\$fb_tgt/firebird/misc
mkdir -p gen/\$fb_tgt/firebird/help
dnl ### TEMP ### directories for generated .cpp, .o and .d by module name
for src_dir in `cd src; ls -R -1 * | grep : | tr -d : | tr "\n" " "; cd ..`; do

View File

@ -22,7 +22,6 @@ Document date: 2008-11-30
All utilities have new switch
-fetch_password
which may be abbreviated according with utility rules.
The exception is QLI, where -F should be used.
Switch has required parameter - name of file with password. I.e.:
isql -user sysdba -fet passfile server:employee

View File

@ -2070,8 +2070,6 @@ codes:</font></p>
- samples</font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">DIR_SAMPLEDB
samples database (employee.fdb)</font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">DIR_HELP
qli help (help.fdb)</font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">DIR_INTL
international libraries (fbintl)</font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">DIR_MISC

View File

@ -61,10 +61,6 @@ set(epp_master_files
auth/SecurityDatabase/LegacyManagement.epp
msgs/build_file.epp
misc/codes.epp
qli/help.epp
qli/meta.epp
qli/proc.epp
qli/show.epp
)
if (NOT CMAKE_CROSSCOMPILING)
@ -124,29 +120,6 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E copy_if_different security_.fdb security.fdb
COMMAND ${BOOT_GFIX_CMD} -write sync security.fdb
)
add_custom_command(
OUTPUT metadata.fdb
DEPENDS
boot_gbak
${CMAKE_SOURCE_DIR}/builds/misc/metadata.gbak
#
COMMAND ${CMAKE_COMMAND} -E remove metadata.fdb
COMMAND ${CMAKE_COMMAND} -E remove metadata_.fdb
COMMAND ${BOOT_GBAK_CMD} -r ${CMAKE_SOURCE_DIR}/builds/misc/metadata.gbak metadata_.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different metadata_.fdb metadata.fdb
)
add_custom_command(
OUTPUT help.fdb
DEPENDS
boot_gbak
metadata.fdb
${CMAKE_SOURCE_DIR}/builds/misc/help.gbak
#
COMMAND ${CMAKE_COMMAND} -E remove help.fdb
COMMAND ${CMAKE_COMMAND} -E remove help_.fdb
COMMAND ${BOOT_GBAK_CMD} -r ${CMAKE_SOURCE_DIR}/builds/misc/help.gbak help_.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different help_.fdb help.fdb
)
add_custom_target(databases
DEPENDS
boot_engine
@ -870,23 +843,6 @@ add_executable (isql ${isql_src} ${isql_generated_src_master} ${VER
target_link_libraries (isql common yvalve)
########################################
# EXECUTABLE qli
########################################
file(GLOB qli_src "qli/*.cpp" "qli/*.h")
set(qli_generated_src
qli/help.epp
qli/meta.epp
qli/proc.epp
qli/show.epp
)
add_epp_suffix(qli_generated_src master)
add_executable (qli ${qli_src} ${qli_generated_src_master} ${VERSION_RC})
target_link_libraries (qli common yvalve)
################################################################################
#
# subdirectories

View File

@ -1044,7 +1044,7 @@ Firebird::PathName getPrefix(unsigned int prefType, const char* name)
const char* configDir[] = {
FB_BINDIR, FB_SBINDIR, FB_CONFDIR, FB_LIBDIR, FB_INCDIR, FB_DOCDIR, "", FB_SAMPLEDIR,
FB_SAMPLEDBDIR, FB_HELPDIR, FB_INTLDIR, FB_MISCDIR, FB_SECDBDIR, FB_MSGDIR, FB_LOGDIR,
FB_SAMPLEDBDIR, "", FB_INTLDIR, FB_MISCDIR, FB_SECDBDIR, FB_MSGDIR, FB_LOGDIR,
FB_GUARDDIR, FB_PLUGDIR, FB_TZDATADIR
};

View File

@ -1,34 +0,0 @@
/* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
/* This database file is used by GPRE for metadata lookup on behalf of the .e
* files.
*/
SET SQL DIALECT 1;
CREATE DATABASE 'metadata.fdb' PAGE_SIZE 1024;
/* Domain definitions */
CREATE DOMAIN QLI$PROCEDURE_NAME AS CHAR(31);
CREATE DOMAIN QLI$PROCEDURE AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80;
/* Table: QLI$PROCEDURES, Owner: BUILDER */
CREATE TABLE QLI$PROCEDURES (QLI$PROCEDURE_NAME QLI$PROCEDURE_NAME,
QLI$PROCEDURE QLI$PROCEDURE);
/* Index definitions for all user tables */
CREATE UNIQUE INDEX QLI$PROCEDURES_IDX1 ON QLI$PROCEDURES(QLI$PROCEDURE_NAME);

View File

@ -40,9 +40,6 @@
/* guardian lock DIR (PREFIX) */
#define FB_GUARDDIR ""
/* QLI help DIR (PREFIX/help) */
#define FB_HELPDIR ""
/* C/C++ header files DIR (PREFIX/include) */
#define FB_INCDIR ""

View File

@ -46,9 +46,6 @@
/* guardian lock DIR (PREFIX) */
#define FB_GUARDDIR ""
/* QLI help DIR (PREFIX/help) */
#define FB_HELPDIR ""
/* C/C++ header files DIR (PREFIX/include) */
#define FB_INCDIR ""

View File

@ -40,9 +40,6 @@
/* guardian lock DIR (PREFIX) */
#define FB_GUARDDIR ""
/* QLI help DIR (PREFIX/help) */
#define FB_HELPDIR ""
/* C/C++ header files DIR (PREFIX/include) */
#define FB_INCDIR ""

View File

@ -40,9 +40,6 @@
/* guardian lock DIR (PREFIX) */
#define FB_GUARDDIR ""
/* QLI help DIR (PREFIX/help) */
#define FB_HELPDIR ""
/* C/C++ header files DIR (PREFIX/include) */
#define FB_INCDIR ""

View File

@ -125,9 +125,6 @@
/* guardian lock DIR (PREFIX) */
#define FB_GUARDDIR "@FB_GUARDDIR@"
/* QLI help DIR (PREFIX/help) */
#define FB_HELPDIR "@FB_HELPDIR@"
/* C/C++ header files DIR (PREFIX/include) */
#define FB_INCDIR "@FB_INCDIR@"

View File

@ -326,7 +326,6 @@
#define FB_CONFDIR ""
#define FB_DOCDIR ""
#define FB_GUARDDIR ""
#define FB_HELPDIR ""
#define FB_INCDIR ""
#define FB_INTLDIR ""
#define FB_LIBDIR ""

View File

@ -99,9 +99,6 @@
#elif defined RC_TARGET_nbackup
#define VER_FILEDESC "Physical Backup Management tool"
#elif defined RC_TARGET_qli
#define VER_FILEDESC "QLI tool"
#elif defined RC_TARGET_srp
#define VER_FILEDESC "SRP User Manager plugin"

View File

@ -2,7 +2,7 @@
set bulk_insert INSERT INTO FACILITIES (LAST_CHANGE, FACILITY, FAC_CODE, MAX_NUMBER) VALUES (?, ?, ?, ?);
--
('2021-05-11 14:10:00', 'JRD', 0, 955)
('2015-03-17 18:33:00', 'QLI', 1, 533)
--('2015-03-17 18:33:00', 'QLI', 1, 533)
('2018-03-17 12:00:00', 'GFIX', 3, 136)
('1996-11-07 13:39:40', 'GPRE', 4, 1)
('2017-02-05 20:37:00', 'DSQL', 7, 41)

View File

@ -1062,615 +1062,6 @@ Data source : @4', NULL, NULL)
('ses_reset_failed', NULL, 'Attachment.cpp', NULL, 0, 952, NULL, 'Reset of user session failed. Connection is shut down.', NULL, NULL);
('block_size', NULL, 'unix.cpp', NULL, 0, 953, NULL, 'File size is less than expected', NULL, NULL);
('tom_key_length', NULL, 'SysFunction.cpp', NULL, 0, 954, NULL, 'Invalid key length @1, need >@2', NULL, NULL);
-- QLI
(NULL, NULL, NULL, NULL, 1, 0, NULL, 'expected type', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 1, NULL, 'bad block type', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 2, NULL, 'bad block size', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 3, NULL, 'corrupt pool', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 4, NULL, 'bad pool ID', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 5, NULL, 'memory exhausted', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 6, NULL, 'set option not implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 7, NULL, 'show option not implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 8, NULL, 'show_fields: dtype not done', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 9, NULL, 'INTERNAL: @1', NULL, NULL);
(NULL, 'ERRQ_database_error', 'err.c', NULL, 1, 10, NULL, '** QLI error from database "@1" **', NULL, NULL);
(NULL, 'ERRQ_database_error', 'err.c', NULL, 1, 11, NULL, '** QLI error from database **', NULL, NULL);
(NULL, 'ERRQ_error', 'err.c', NULL, 1, 12, NULL, '** QLI error: @1 **', NULL, NULL);
(NULL, 'ERRQ_syntax', 'err.c', NULL, 1, 13, NULL, 'expected @1, encountered "@2"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 14, NULL, 'integer overflow', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 15, NULL, 'integer division by zero', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 16, NULL, 'floating overflow trap', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 17, NULL, 'floating division by zero', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 18, NULL, 'floating underflow trap', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 19, NULL, 'floating overflow fault', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 20, NULL, 'floating underflow fault', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 21, NULL, 'arithmetic exception', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 22, NULL, 'illegal instruction or address, recovering...', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 23, NULL, 'Please retry, supplying an application script file name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 24, NULL, 'Welcome to QLI
Query Language Interpreter', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 25, NULL, 'qli version @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 26, NULL, '
Statistics for database "@1"
@2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 27, NULL, 'HSH_remove failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 28, NULL, 'EVAL_boolean: not finished', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 29, NULL, 'EVAL_value: not finished', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 30, NULL, 'data type not supported for arithmetic', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 31, NULL, 'user name is supported in RSEs temporarily', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 32, NULL, 'Input value is too long', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 33, NULL, 'EXEC_execute: not implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 34, NULL, 'print_blob: expected field node', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 35, NULL, 'output pipe is not supported on VMS', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 36, NULL, 'could not create pipe', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 37, NULL, 'fdopen failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 38, NULL, 'execution terminated by signal', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 39, NULL, 'field validation error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 40, NULL, 'Request terminated by statement: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 41, NULL, 'Request terminated by statement', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 42, NULL, 'Cannot open output file "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 43, NULL, 'Could not run "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 44, NULL, 'comparison not done', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 45, NULL, 'conversion not implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 46, NULL, 'conversion not implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 47, NULL, 'MOVQ_move: conversion not done', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 48, NULL, 'BLOB conversion is not supported', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 49, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 50, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 51, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 52, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 53, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 54, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 55, NULL, 'BLOB conversion is not supported', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 56, NULL, 'Error converting string "@1" to date', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 57, NULL, 'overflow during conversion', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 58, NULL, 'gds_$put_segment failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 59, NULL, 'fseek failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 60, NULL, 'unterminated quoted string', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 61, NULL, 'could not open scratch file', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 62, NULL, 'fseek failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 63, NULL, 'unterminated quoted string', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 64, NULL, 'unexpected end of procedure in procedure @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 65, NULL, 'unexpected end of file in file @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 66, NULL, 'unexpected eof', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 67, NULL, 'cannot open command file "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 68, NULL, 'PIC_edit: class not yet implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 69, NULL, 'conversion error', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 70, NULL, 'procedure "@1" is undefined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 71, NULL, 'procedure "@1" is undefined in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 72, NULL, 'procedure "@1" is undefined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 73, NULL, 'Could not create QLI$PROCEDURE_NAME field', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 74, NULL, 'Could not create QLI$PROCEDURE field', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 75, NULL, 'Could not create QLI$PROCEDURES table', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 76, NULL, 'procedure name "@1" in use in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 77, NULL, 'database handle required', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 78, NULL, 'QLI$PROCEDURES table must be created with RDO in Rdb/VMS databases', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 79, NULL, 'procedure name over 31 characters', NULL, NULL);
(NULL, 'print_topic', 'help.e', NULL, 1, 80, NULL, ' [@1 topics matched @2]', NULL, NULL);
(NULL, 'print_topic', 'help.e', NULL, 1, 81, NULL, '
@1Sub-topics available:', NULL, NULL);
(NULL, 'print_topic', 'help.e', NULL, 1, 82, NULL, '
No help is available for @1 @2', NULL, NULL);
(NULL, 'print_topic', 'help.e', NULL, 1, 83, NULL, '
Sub-topics available for @1 are:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 84, NULL, 'Procedures can not be renamed across databases. Try COPY', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 85, NULL, 'Procedure @1 not found in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 86, NULL, 'substitute prompt string too long', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 87, NULL, 'substitute prompt string too long', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 88, NULL, 'Procedure @1 not found in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 89, NULL, 'Procedure @1 not found in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 90, NULL, 'No security classes defined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 91, NULL, ' Security class @1 is not defined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 92, NULL, ' No views defined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 93, NULL, ' No indexes defined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 94, NULL, ' No indexes defined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 95, NULL, 'No databases are currently ready', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 96, NULL, 'Procedure @1 in database "@2" (@3)', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 97, NULL, 'text, length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 98, NULL, 'varying text, length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 99, NULL, 'null terminated text, length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 100, NULL, 'short binary', NULL, 'no longer in use (1/7/94)');
(NULL, NULL, NULL, NULL, 1, 101, NULL, 'long binary', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 102, NULL, 'quad', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 103, NULL, 'short floating', NULL, 'no longer in use (1/7/94)');
(NULL, NULL, NULL, NULL, 1, 104, NULL, 'long floating', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 105, NULL, 'BLOB', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 106, NULL, ', segment length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 107, NULL, ', subtype @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 108, NULL, ', subtype BLR', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 109, NULL, ', subtype ACL', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 110, NULL, 'date', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 111, NULL, ', scale @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 112, NULL, ', subtype fixed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 113, NULL, 'Database "@1" readied as @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 114, NULL, 'Database "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 115, NULL, 'No databases are currently ready', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 116, NULL, ' Page size is @1 bytes. Current allocation is @2 pages.', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 117, NULL, 'Field @1 does not exist in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 118, NULL, 'Field @1 does not exist in any open database', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 119, NULL, ' (computed expression)', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 120, NULL, 'There are no forms defined for database @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 121, NULL, 'There are no forms defined in any open database', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 122, NULL, 'Global field @1 does not exist in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 123, NULL, 'Global field @1 does not exist in any open database', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 124, NULL, 'There are no fields defined for database @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 125, NULL, 'There are no fields defined in any open database', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 126, NULL, 'Procedure @1 not found in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 127, NULL, 'Procedure @1 not found', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 128, NULL, 'Procedures in database "@1" (@2):', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 129, NULL, 'No triggers are defined for table @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 130, NULL, 'No triggers are defined in database @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 131, NULL, 'No triggers are defined in database @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 132, NULL, 'Variables:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 133, NULL, ' QLI, version "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 134, NULL, ' Version(s) for database "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 135, NULL, 'expand_expression: not yet implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 136, NULL, 'expand_statement: not yet implemented', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 137, NULL, 'variables may not be based on BLOB fields', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 138, NULL, 'cannot perform assignment to computed field @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 139, NULL, 'no context for ERASE', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 140, NULL, 'cannot erase from a join', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 141, NULL, '@1.* cannot be used when a single element is required', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 142, NULL, '"@1" is undefined or used out of context', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 143, NULL, 'no default form name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 144, NULL, 'No database for form @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 145, NULL, 'form @1 is not defined in database "@2"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 146, NULL, 'no context for form ACCEPT statement', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 147, NULL, 'field @1 is not defined in form @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 148, NULL, 'no context for modify', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 149, NULL, 'field list required for modify', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 150, NULL, 'No items in print list', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 151, NULL, 'No items in print list', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 152, NULL, 'invalid ORDER BY ordinal', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 153, NULL, 'asterisk expressions require exactly one qualifying context', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 154, NULL, 'unrecognized context', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 155, NULL, 'field referenced in BASED ON cannot be resolved against readied databases', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 156, NULL, 'expected statement, encountered "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 157, NULL, 'Expected PROCEDURE encountered "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 158, NULL, 'period in qualified name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 159, NULL, 'no databases are ready', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 160, NULL, 'BLOB variables are not supported', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 161, NULL, 'end of statement', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 162, NULL, 'end of command', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 163, NULL, 'quoted edit string', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 164, NULL, 'variable definition clause', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 165, NULL, '@1 is not a database', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 166, NULL, '@1 is not a table in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 167, NULL, 'variable data type', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 168, NULL, 'no data type may be specified for a variable based on a field', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 169, NULL, 'object type for DEFINE', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 170, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 171, NULL, 'comma between field definitions', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 172, NULL, 'FROM', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 173, NULL, 'table or view name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 174, NULL, '[', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 175, NULL, ']', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 176, NULL, 'No statements issued yet', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 177, NULL, 'ON or TO', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 178, NULL, 'quoted edit string', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 179, NULL, 'column definition clause', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 180, NULL, 'global fields may not be based on other fields', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 181, NULL, 'field name or asterisk expression', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 182, NULL, 'FROM RSE clause', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 183, NULL, 'comma', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 184, NULL, 'quoted header segment', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 185, NULL, 'left parenthesis', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 186, NULL, 'comma or terminating right parenthesis', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 187, NULL, 'left parenthesis', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 188, NULL, 'VALUES list or SELECT clause', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 189, NULL, 'the number of values do not match the number of fields', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 190, NULL, 'value expression', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 191, NULL, 'right parenthesis', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 192, NULL, 'quoted string', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 193, NULL, 'ENTREE or END', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 194, NULL, 'quoted string', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 195, NULL, 'index state option', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 196, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 197, NULL, 'ADD, MODIFY, or DROP', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 198, NULL, 'comma between field definitions', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 199, NULL, 'identifier', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 200, NULL, 'positive number', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 201, NULL, 'FORM', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 202, NULL, 'period in qualified table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 203, NULL, '@1 is not a table in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 204, NULL, 'database file name required on READY', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 205, NULL, 'EXISTS (SELECT * <sql rse>)', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 206, NULL, 'relational operator', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 207, NULL, 'a database has not been readied', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 208, NULL, 'expected "table_name", encountered "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 209, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 210, NULL, 'PROCEDURE', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 211, NULL, 'TOP or BOTTOM', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 212, NULL, 'report writer SET option', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 213, NULL, 'report item', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 214, NULL, 'set option', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 215, NULL, 'RELATIONS or TRIGGERS', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 216, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 217, NULL, 'database name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 218, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 219, NULL, 'database name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 220, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 221, NULL, 'database name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 222, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 223, NULL, 'table name', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 224, NULL, 'FROM clause', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 225, NULL, 'AVG, MAX, MIN, SUM, or COUNT', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 226, NULL, 'COUNT (*)', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 227, NULL, 'left parenthesis', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 228, NULL, 'OF', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 229, NULL, 'database handle', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 230, NULL, 'SET', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 231, NULL, 'database block not found for removal', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 232, NULL, 'show_fields: dtype not done', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 233, NULL, 'global field @1 already exists', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 234, NULL, 'Cannot define an index in a view', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 235, NULL, 'Index @1 already exists', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 236, NULL, 'Column @1 does not occur in table @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 237, NULL, 'Table @1 already exists', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 238, NULL, 'Field @1 is in use in the following relations:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 239, NULL, 'Field @1 is in use in database "@2"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 240, NULL, 'Field @1 is not defined in database "@2"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 241, NULL, 'Index @1 is not defined in database "@2"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 242, NULL, 'metadata operation failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 243, NULL, 'no active database for operation', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 244, NULL, 'Interactive metadata updates are not available on Rdb', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 245, NULL, 'global field @1 is not defined', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 246, NULL, 'Index @1 does not exist in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 247, NULL, 'field @1 does not exist', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 248, NULL, 'no active database for operation', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 249, NULL, 'Interactive metadata updates are not available on Rdb', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 250, NULL, 'Unlicensed for database "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 251, NULL, 'Field @1 already exists in relation @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 252, NULL, 'data type cannot be changed locally', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 253, NULL, 'global field @1 does not exist', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 254, NULL, 'field @1 not found in relation @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 255, NULL, 'Data type conflict with existing global field @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 256, NULL, 'No data type specified for field @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 257, NULL, 'database info call failed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 258, NULL, 'do not understand BLR operator @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 259, NULL, 'Operation unlicensed for database "@1"', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 260, NULL, ' Security class for database @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 261, NULL, ' Database description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 262, NULL, ' Database description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 263, NULL, ' File: @1 starting at page @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 264, NULL, 'Field @1 in @2 @3 of database @4', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 265, NULL, ' Global field @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 266, NULL, ' Field description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 267, NULL, ' Datatype information:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 268, NULL, ' Field is computed from:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 269, NULL, ' Field validation:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 270, NULL, ' Security class @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 271, NULL, ' Query name: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 272, NULL, ' Query name: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 273, NULL, ' Edit string: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 274, NULL, ' Edit string: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 275, NULL, ' Query header:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 276, NULL, 'Global field @1 in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 277, NULL, ' Field description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 278, NULL, ' Datatype information:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 279, NULL, ' Field is computed from:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 280, NULL, ' Field validation:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 281, NULL, ' Query name: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 282, NULL, ' Edit string: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 283, NULL, ' Query header:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 284, NULL, ' @1 is not used in any relations in database @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 285, NULL, 'Forms in database @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 286, NULL, 'Global fields for database @1:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 287, NULL, ' Field description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 288, NULL, ' Index @1@2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 289, NULL, ' index @1 is NOT active', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 290, NULL, ' Index @1@2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 291, NULL, ' Description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 292, NULL, ' Security class @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 293, NULL, ' Stored in external file @1', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 294, NULL, 'OBSOLETE - An erase trigger is defined for @1', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 295, NULL, 'OBSOLETE - A modify trigger is defined for @1', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 296, NULL, 'OBSOLETE - A store trigger is defined for @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 297, NULL, ' Security classes for database @1', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 298, NULL, 'OBSOLETE - Triggers for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 299, NULL, 'OBSOLETE - Source for the erase trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 300, NULL, 'OBSOLETE - Erase trigger for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 301, NULL, 'OBSOLETE - Source for the modify trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 302, NULL, 'OBSOLETE - Modify trigger for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 303, NULL, 'OBSOLETE - Source for the store trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 304, NULL, 'OBSOLETE - Store trigger for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 305, NULL, 'OBSOLETE - Triggers for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 306, NULL, 'OBSOLETE - Source for the erase trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 307, NULL, 'OBSOLETE - Erase trigger for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 308, NULL, 'OBSOLETE - Source for the modify trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 309, NULL, 'OBSOLETE - Modify trigger for relation @1:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 310, NULL, 'OBSOLETE - Source for the store trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, NULL, NULL, '
This message is obsolete for version 4.3 and above. No
need to translate.
1996-Aug-06 David Schnepper', 1, 311, NULL, 'OBSOLETE - Store trigger for relation @1:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 312, NULL, '
View source for relation @1 is not available. View BLR:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 313, NULL, '
Relation @1 is a view defined as:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 314, NULL, 'Views in database @1:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 315, NULL, ' @1 comprised of :', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 316, NULL, 'Views in database @1:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 317, NULL, ' @1 comprised of:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 318, NULL, 'BLOB', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 319, NULL, ', segment length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 320, NULL, ', subtype text', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 321, NULL, ', subtype BLR', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 322, NULL, ', subtype ACL', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 323, NULL, ', subtype @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 324, NULL, 'text, length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 325, NULL, 'varying text, length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 326, NULL, 'null terminated text, length @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 327, NULL, 'short binary', NULL, 'no longer in use (1/7/94)');
(NULL, NULL, NULL, NULL, 1, 328, NULL, 'long binary', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 329, NULL, 'quadword binary', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 330, NULL, 'short floating', NULL, 'no longer in use (1/7/94)');
(NULL, NULL, NULL, NULL, 1, 331, NULL, 'long floating', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 332, NULL, 'date', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 333, NULL, ', scale @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 334, NULL, ', subtype fixed', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 335, NULL, ' Global field @1 is used in database @2 as :', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 336, NULL, ' @1 in relation @2', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 337, NULL, 'Field @1 in @2 @3 of database @4', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 338, NULL, ' Global field @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 339, NULL, ' Field description:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 340, NULL, ' Datatype information', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 341, NULL, ' Field is computed from:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 342, NULL, ' Field validation:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 343, NULL, ' Query name: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 344, NULL, ' Query name: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 345, NULL, ' Query header:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 346, NULL, ' Edit string: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 347, NULL, ' Edit string: @1', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 348, NULL, '@1 Based on field @2 of @3@4', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 349, NULL, '@1Base field description for @2:', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 350, NULL, 'END PROCEDURE', NULL, NULL);
(NULL, 'process_statement', 'dtr.c', NULL, 1, 351, NULL, 'Do you want to roll back your updates?', NULL, NULL);
(NULL, 'gen_descriptor', 'gener.c', NULL, 1, 352, NULL, 'gen_descriptor: dtype not recognized', NULL, NULL);
(NULL, 'gen_expression', 'gener.c', NULL, 1, 353, NULL, 'gen_expression: not understood', NULL, NULL);
(NULL, 'gen_statement', 'gener.c', NULL, 1, 354, NULL, 'gen_statement: not yet implemented', NULL, NULL);
(NULL, 'gen_statistical', 'gener.c', NULL, 1, 355, NULL, 'gen_statistical: not understood', NULL, NULL);
(NULL, 'compile_edit', 'compile.c', NULL, 1, 356, NULL, 'EDIT argument must be a BLOB field', NULL, NULL);
(NULL, 'compile_rse', 'compile.c', NULL, 1, 357, NULL, 'relations from multiple databases in single RSE', NULL, NULL);
(NULL, 'compile_edit', 'compile.c', NULL, 1, 358, NULL, 'cannot find database for BLOB edit', NULL, NULL);
(NULL, 'compile_expression', 'compile.c', NULL, 1, 359, NULL, 'compile_expression: not yet implemented', NULL, NULL);
(NULL, 'compile_statement', 'compile.c', NULL, 1, 360, NULL, 'not yet implemented (compile_statement)', NULL, NULL);
(NULL, 'computable', 'compile.c', NULL, 1, 361, NULL, 'computable: not yet implemented', NULL, NULL);
(NULL, 'make_descriptor', 'compile.c', NULL, 1, 362, NULL, 'make_descriptor: not yet implemented', NULL, NULL);
(NULL, 'make_reference', 'compile.c', NULL, 1, 363, NULL, 'missing message', NULL, NULL);
(NULL, 'release_message', 'compile.c', NULL, 1, 364, NULL, 'lost message', NULL, NULL);
(NULL, 'MET_show_trigger', 'meta.e', NULL, 1, 365, NULL, 'Triggers for relation @1:', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 366, NULL, ' @1 @2, Sequence @3, @4', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 367, NULL, 'Pre-store', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 368, NULL, 'Post-store', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 369, NULL, 'Pre-modify', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 370, NULL, 'Post-modify', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 371, NULL, 'Pre-erase', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 372, NULL, 'Post-erase', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 373, NULL, 'Active', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 374, NULL, 'Inactive', NULL, NULL);
(NULL, 'show_trigger_header', 'meta.e', NULL, 1, 375, NULL, ' Description:', NULL, NULL);
(NULL, 'MET_show_trigger', 'meta.e', NULL, 1, 376, NULL, ' Source for the trigger:', NULL, NULL);
(NULL, 'MET_show_trigger', 'meta.e', NULL, 1, 377, NULL, ' Source for the trigger is not available. Trigger BLR:', NULL, NULL);
(NULL, 'show_sys_trigs', 'command.c', NULL, 1, 378, NULL, 'No system triggers are defined', NULL, NULL);
(NULL, 'MET_show_system_triggers', 'meta.e', NULL, 1, 379, NULL, 'System Trigger for relation @1', NULL, NULL);
(NULL, 'MET_show_rel_detail', 'meta.e', NULL, 1, 380, NULL, ' Triggers defined for this relation:', NULL, NULL);
(NULL, 'MET_show_triggers', 'meta.e', NULL, 1, 381, NULL, 'Trigger for relation @1:', NULL, NULL);
(NULL, 'parse_report', 'parse.c', NULL, 1, 382, NULL, 'TOP or BOTTOM', NULL, NULL);
(NULL, 'parse_report', 'parse.c', NULL, 1, 383, NULL, 'sort field', NULL, NULL);
(NULL, 'parse_rse', 'parse.c', NULL, 1, 384, NULL, 'Too many WITHs', NULL, NULL);
(NULL, 'MET_show_dbb_detail', 'META.E', NULL, 1, 385, NULL, ' Shadow @1, File: @2 starting at page @3', NULL, NULL);
(NULL, 'parse_sql_create', 'parse.c', NULL, 1, 386, NULL, 'DATABASE, TABLE, or INDEX', NULL, NULL);
(NULL, 'parse_sql_database_create', 'parse.c', NULL, 1, 387, NULL, 'Database filename required in CREATE', NULL, NULL);
(NULL, 'parse_sql_dtype', 'parse.c', NULL, 1, 388, NULL, 'FLOAT', NULL, NULL);
(NULL, 'parse_sql_create', 'parse.c', NULL, 1, 389, NULL, 'INDEX', NULL, NULL);
(NULL, 'parse_sql_database_create', 'parse.c', NULL, 1, 390, NULL, 'Multiple page size specifications', NULL, NULL);
(NULL, 'parse_sql_rse', 'parse.c', NULL, 1, 391, NULL, 'GROUP BY not allowed in view definition', NULL, NULL);
(NULL, 'parse_sql_statistical', 'parse.c', NULL, 1, 392, NULL, 'Aggregates not allowed in view definition', NULL, NULL);
(NULL, 'parse_sql_field', 'parse.c', NULL, 1, 393, NULL, 'NULL', NULL, NULL);
(NULL, 'parse_sql_view_create', 'parse.c', NULL, 1, 394, NULL, 'AS', NULL, NULL);
(NULL, 'parse_sql_view_create', 'parse.c', NULL, 1, 395, NULL, 'SELECT', NULL, NULL);
(NULL, 'parse_sql_database_create', 'parse.c', NULL, 1, 396, NULL, '=', NULL, NULL);
(NULL, 'parse_sql_index_create', 'parse.c', NULL, 1, 397, NULL, 'ON', NULL, NULL);
(NULL, 'parse_sql_grant', 'parse.c', NULL, 1, 398, NULL, 'field name', NULL, NULL);
(NULL, 'parse_sql_grant', 'parse.c', NULL, 1, 399, NULL, 'table name', NULL, NULL);
(NULL, 'parse_sql_grant', 'parse.c', NULL, 1, 400, NULL, 'user name identifier', NULL, NULL);
(NULL, 'parse_sql_grant', 'parse.c', NULL, 1, 401, NULL, 'GRANT', NULL, NULL);
(NULL, 'parse_sql_grant', 'parse.c', NULL, 1, 402, NULL, 'OPTION', NULL, NULL);
(NULL, 'parse_sql_revoke', 'parse.c', NULL, 1, 403, NULL, 'FROM', NULL, NULL);
(NULL, 'parse_sql_grant', 'parse.c', NULL, 1, 404, NULL, 'TO', NULL, NULL);
(NULL, 'parse_sql_alter', 'parse.c', NULL, 1, 405, NULL, 'ADD or DROP', NULL, NULL);
(NULL, 'MET_define_sql_relation', 'meta.e', NULL, 1, 406, NULL, 'Dynamic DDL buffer exceeded', NULL, NULL);
(NULL, 'parse_sql_alter', 'parse.c', NULL, 1, 407, NULL, 'TABLE', NULL, NULL);
(NULL, 'parse_ready', 'parse.c', NULL, 1, 408, NULL, 'Database handle @1 conflicts with an established name', NULL, NULL);
(NULL, 'create_qli_procedrues', 'PROC.E', NULL, 1, 409, NULL, 'Could not create QLI$PROCEDURES index', NULL, NULL);
(NULL, NULL, 'MOV', NULL, 1, 410, NULL, 'Cannot convert from @1 to @2', NULL, NULL);
(NULL, 'MOVQ_decompose', 'MOV', NULL, 1, 411, NULL, 'Cannot convert "@1" to a numeric value', NULL, NULL);
(NULL, 'expand_function', 'EXPAND.C', NULL, 1, 412, NULL, 'function @1 not found in database @2', NULL, NULL);
(NULL, 'clone_global_fields', 'META.E', NULL, 1, 413, NULL, 'Incompatible global field @1 already exists in target database', NULL, NULL);
(NULL, 'MET_sql_alter_table', 'META.E', NULL, 1, 414, NULL, 'Relation @1 is missing or undefined', NULL, NULL);
(NULL, 'CMD_set', 'command.c', NULL, 1, 415, NULL, 'matching language string too long', NULL, NULL);
(NULL, 'show_m_funcs', 'SHOW.E', NULL, 1, 416, NULL, 'Functions in database "@1" (@2):', NULL, NULL);
(NULL, 'show_funcs', 'show.e', NULL, 1, 417, NULL, 'Functions are not supported in database @1.', NULL, NULL);
-- 418 doesn't exist
(NULL, 'show_funcs', 'show.e', NULL, 1, 419, NULL, 'There are no functions defined in any open database.', NULL, NULL);
(NULL, 'show_funcs', 'show.e', NULL, 1, 420, NULL, 'Functions are not supported in any open database.', NULL, NULL);
(NULL, 'show_m_func', 'show.e', NULL, 1, 421, NULL, ' Function description:', NULL, NULL);
(NULL, 'show_func', 'show.e', NULL, 1, 422, NULL, 'Function @1 is not defined in database @2.', NULL, NULL);
(NULL, 'show_func', 'show.e', NULL, 1, 423, NULL, 'Function @1 is not defined in any open database.', NULL, NULL);
(NULL, 'show_m_func', 'show.e', NULL, 1, 424, NULL, 'Function @1 (@2) in database "@3" (@4):', NULL, NULL);
(NULL, 'show_m_func', 'show.e', NULL, 1, 425, NULL, 'Function @1 in database "@2" (@3):', NULL, NULL);
(NULL, 'show_m_func', 'show.e', NULL, 1, 426, NULL, ' Function library is @1', NULL, NULL);
(NULL, 'show_m_func', 'show.e', NULL, 1, 427, NULL, ' Return argument is', NULL, NULL);
(NULL, 'show_m_func', 'show.e', NULL, 1, 428, NULL, ' Argument @1 is', NULL, NULL);
(NULL, 'parse_drop', 'PARSE.C', NULL, 1, 429, NULL, 'database file name required on DROP DATABASE', NULL, NULL);
(NULL, 'MET_delete_database', 'META.E', NULL, 1, 430, NULL, 'Unlicensed for database "@1"', NULL, NULL);
(NULL, 'MET_delete_database', 'META.E', NULL, 1, 431, NULL, 'Could not drop database file "@1"', NULL, NULL);
(NULL, 'MET_delete_database', 'META.E', NULL, 1, 432, NULL, 'Operation unlicensed for database "@1"', NULL, NULL);
(NULL, 'show_datatype', 'SHOW.E', NULL, 1, 433, NULL, ' array', NULL, NULL);
(NULL, 'ALL_alloc', 'ALL.c', NULL, 1, 434, NULL, 'memory pool free list is incorrect', NULL, NULL);
(NULL, 'ALL_release', 'ALL.C', NULL, 1, 435, NULL, 'block released twice', NULL, NULL);
(NULL, 'ALL_release', 'ALL.C', NULL, 1, 436, NULL, 'released block overlaps following free block', NULL, NULL);
(NULL, 'ALL_release', 'ALL.C', NULL, 1, 437, NULL, 'released block overlaps prior free block', NULL, NULL);
(NULL, 'check_for_array', 'EXPAND.C', NULL, 1, 438, NULL, 'References to array fields like @1 in relation @2 are not supported', NULL, NULL);
(NULL, 'show_filter', 'show.e', NULL, 1, 439, NULL, 'Filters are not supported in database @1.', NULL, NULL);
(NULL, 'show_filter', 'show.e', NULL, 1, 440, NULL, 'Filter @1 is not defined in database @2.', NULL, NULL);
(NULL, 'show_filter', 'show.e', NULL, 1, 441, NULL, 'Filter @1 is not defined in any open database.', NULL, NULL);
(NULL, 'show_filter', 'show.e', NULL, 1, 442, NULL, 'Filters are not supported in any open database.', NULL, NULL);
(NULL, 'show_filters', 'show.e', NULL, 1, 443, NULL, 'There are no filters defined in any open database.', NULL, NULL);
(NULL, 'show_m_filter', 'show.e', NULL, 1, 444, NULL, 'Filter @1 in database "@2" (@3):', NULL, NULL);
(NULL, 'show_m_filter', 'show.e', NULL, 1, 445, NULL, ' Filter library is @1', NULL, NULL);
(NULL, 'show_m_filter', 'show.e', NULL, 1, 446, NULL, ' Input sub-type is @1', NULL, NULL);
(NULL, 'show_m_filter', 'show.e', NULL, 1, 447, NULL, ' Output sub-type is @1', NULL, NULL);
(NULL, 'show_m_filter', 'show.e', NULL, 1, 448, NULL, ' Filter description:', NULL, NULL);
(NULL, 'show_m_filters', 'show.e', NULL, 1, 449, NULL, 'Filters in database @1 (@2):', NULL, NULL);
(NULL, 'show_m_indices', 'SHOW.E', NULL, 1, 450, NULL, ' Index @1@2@3@4', NULL, NULL);
(NULL, 'expand_rse', 'EXPAND.C', NULL, 1, 451, NULL, 'simple field reference not allowed in global aggregates', NULL, NULL);
(NULL, 'expand_values', 'EXPAND.C', NULL, 1, 452, NULL, 'prompting not allowed in select field list', NULL, NULL);
(NULL, 'EXEC_open_output', 'exe.c', NULL, 1, 453, NULL, 'output pipe is not supported on MPE/XL', NULL, NULL);
(NULL, 'expand_expression', 'expand.c', NULL, 1, 454, NULL, 'could not resolve context for aggregate expression', NULL, NULL);
(NULL, 'clone_fields', 'META.E', NULL, 1, 455, NULL, 'source relation @1 does not exist', NULL, NULL);
(NULL, 'show_trigger_messages', 'show.e', NULL, 1, 456, NULL, 'Messages associated with @1:', NULL, NULL);
(NULL, 'show_trigger_messages', 'show.e', NULL, 1, 457, NULL, ' message @1: @2', NULL, NULL);
(NULL, 'ERRQ_database_error', 'err.c', NULL, 1, 458, NULL, 'Connection to database @1 lost.
Please FINISH the database!', NULL, NULL);
(NULL, 'FORM_lookup_form', 'form', NULL, 1, 459, NULL, 'Unable to create form window', NULL, NULL);
COMMIT WORK;
(NULL, 'process_statement', 'DTR', NULL, 1, 460, NULL, 'Do you want to rollback updates for @1?', NULL, NULL);
(NULL, 'show_funcs', 'show.e', NULL, 1, 461, NULL, 'functions are not supported in database @1', NULL, NULL);
(NULL, 'show_funcs', 'show.e', NULL, 1, 462, NULL, 'no functions are defined in database @1', NULL, NULL);
(NULL, 'show_filts', 'show.e', NULL, 1, 463, NULL, 'filters are not supported in database @1', NULL, NULL);
(NULL, 'show_filts', 'show.e', NULL, 1, 464, NULL, 'no filters are defined for database @1', NULL, NULL);
(NULL, 'CMD_transaction', 'command.c', NULL, 1, 465, NULL, 'Error during two phase commit on database @1.
Roll back all databases or commit databases individually', NULL, NULL);
(NULL, 'expand_expression', 'expand.c', NULL, 1, 466, NULL, 'Only fields may be subscripted', NULL, NULL);
(NULL, 'expand_field', 'expand.c', NULL, 1, 467, NULL, '"@1" is not a field and so may not be subscripted', NULL, NULL);
(NULL, 'MET_modify_field', 'meta.e', NULL, 1, 468, NULL, 'Data type of field @1 may not be changed to or from BLOB', NULL, NULL);
(NULL, 'main', 'dtr.c', NULL, 1, 469, NULL, 'qli: ignoring unknown switch -@1', NULL, 'obsolete, see 529');
(NULL, 'LEX_token', 'LEX', NULL, 1, 470, NULL, 'literal string <MAXSYMLEN> characters or longer', NULL, NULL);
(NULL, 'show_var', 'show.e', NULL, 1, 471, NULL, 'Variable @1', NULL, NULL);
(NULL, 'show_var', 'show.e', NULL, 1, 472, NULL, ' Query name: @1', NULL, NULL);
(NULL, 'show_var', 'show.e', NULL, 1, 473, NULL, ' Edit string: @1', NULL, NULL);
(NULL, 'show_var', 'show.e', NULL, 1, 474, NULL, 'Variable @1 has not been declared', NULL, NULL);
(NULL, 'show_var', 'show.e', NULL, 1, 475, NULL, ' Datatype information:', NULL, NULL);
(NULL, 'LEX_get_line', 'lex.c', NULL, 1, 476, NULL, 'input line too long', NULL, NULL);
(NULL, 'get_line', 'lex.c', NULL, 1, 477, NULL, 'input line too long', NULL, NULL);
(NULL, 'parse_print_list', 'parse.c', NULL, 1, 478, NULL, 'number > 0', NULL, NULL);
(NULL, 'array_dimensions', 'SHOW.E', NULL, 1, 479, NULL, ' (@1)', NULL, NULL);
(NULL, 'format_value', 'format.c', NULL, 1, 480, NULL, 'cannot format unsubscripted array @1', NULL, NULL);
(NULL, 'extend_pool', 'ALL.C', NULL, 1, 481, NULL, 'unsuccessful attempt to extend pool beyond 64KB', NULL, NULL);
(NULL, 'FMT_format', 'FORMAT.C', NULL, 1, 482, NULL, 'field width (@1) * header segments (@2) greater than 60,000 characters', NULL, NULL);
(NULL, 'define_relation', 'META.E', NULL, 1, 483, NULL, 'Relation @1 does not exist', NULL, NULL);
(NULL, NULL, NULL, NULL, 1, 484, NULL, 'FORMs not supported', NULL, NULL);
(NULL, 'show_indices_detail', 'show.e', NULL, 1, 485, NULL, ' Expression index BLR:', NULL, NULL);
(NULL, 'parse_statistical', 'parse.c', NULL, 1, 487, NULL, 'Invalid argument for UDF', NULL, NULL);
(NULL, 'parse_relational', 'parse.c', NULL, 1, 488, NULL, 'SINGULAR (SELECT * <sql rse>)', NULL, NULL);
(NULL, 'parse_join_type', 'parse.c', NULL, 1, 489, NULL, 'JOIN', NULL, NULL);
(NULL, 'show_field_detail', 'show.e', NULL, 1, 495, NULL, 'Field @1 in view @2 of database @3', NULL, NULL);
(NULL, 'show_field_detail', 'show.e', NULL, 1, 496, NULL, 'Field @1 in relation @2 of database @3', NULL, NULL);
(NULL, 'yes_no', 'dtr.c', NULL, 1, 497, NULL, 'YES', NULL, NULL);
(NULL, 'yes_no', 'dtr.c', NULL, 1, 498, NULL, 'NO', NULL, NULL);
(NULL, 'EVAL_value', 'eval.c', NULL, 1, 499, NULL, 'Re-enter', NULL, NULL);
(NULL, 'EVAL_value', 'eval.c', NULL, 1, 500, NULL, 'Enter', NULL, NULL);
(NULL, 'global', 'format.c', NULL, 1, 501, NULL, 'bad kanji found while formatting output', NULL, NULL);
(NULL, 'print_more', 'help.e', 'This message should be followed by 1 blank space: "Subtopic? "', 1, 502, NULL, 'Subtopic? ', NULL, NULL);
(NULL, 'print_topic', 'help.e', 'There should be 1 blank space after the colon: " ... stop: "', 1, 503, NULL, '\ntype <cr> for next topic or <EOF> to stop: ', NULL, NULL);
(NULL, 'mover_error', 'mov.c', NULL, 1, 504, NULL, 'unknown data type @1', NULL, NULL);
(NULL, 'process_statement', 'dtr.c', 'This messages should be preceded by 4 blank spaces: " reads ..."', 1, 505, NULL, ' reads = !r writes = !w fetches = !f marks = !m', NULL, NULL);
(NULL, 'process_statement', 'dtr.c', 'This message should be preceded by 4 blank spaces: " elapsed ... "', 1, 506, NULL, ' elapsed = !e cpu = !u system = !s mem = !x buffers = !b', NULL, NULL);
(NULL, 'view_info', 'show.e', NULL, 1, 507, NULL, '@1 Based on field @2 of relation @3', NULL, NULL);
(NULL, 'view_info', 'show.e', NULL, 1, 508, NULL, '@1 Based on field @2 of view @3', NULL, NULL);
(NULL, 'parse_sql_dtype', 'parse.cpp', NULL, 1, 509, NULL, 'PRECISION', NULL, NULL);
(NULL, 'parse_sql_dtype', 'parse.cpp', NULL, 1, 510, NULL, 'Field scale exceeds allowed range', NULL, NULL);
(NULL, 'parse_sql_dtype', 'parse.cpp', NULL, 1, 511, NULL, 'Field length exceeds allowed range', NULL, NULL);
(NULL, 'parse_sql_dtype', 'parse.cpp', NULL, 1, 512, NULL, 'Field length should be greater than zero', NULL, NULL);
-- Do not change the arguments of the previous QLI messages.
-- Write the new QLI messages here.
(NULL, 'usage', 'dtr.cpp', NULL, 1, 513, NULL, 'Usage: qli [options] ["<command>"]', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 514, NULL, ' <command> may be a single qli command or a series of qli commands\n separated by semicolons', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 515, NULL, 'Valid options are:', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 516, NULL, ' -a(pp_script) application script <name>', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 517, NULL, ' -b(uffers) set page buffers <n>', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 518, NULL, ' -f(etch_password) fetch password from file', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 519, NULL, ' -i(nit_script) startup script <name>', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 520, NULL, ' -n(obanner) do not show the welcome message', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 521, NULL, ' -p(assword) user''s password', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 522, NULL, ' -tra(ce) show internal parser''s tokens', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 523, NULL, ' -tru(sted_auth) use trusted authentication', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 524, NULL, ' -u(ser) user name', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 525, NULL, ' -v(erify) echo input', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 526, NULL, ' -z show program version', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 527, NULL, ' Options can be abbreviated to the unparenthesized characters', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 528, NULL, 'Start qli without [command] to enter interactive mode', NULL, NULL)
(NULL, 'main', 'dtr.cpp', NULL, 1, 529, NULL, 'qli: ignoring unknown switch @1', NULL, NULL)
(NULL, 'install', 'meta.epp', NULL, 1, 530, NULL, 'Warning: cannot issue DDL statements against database "@1"', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 531, NULL, ' -nod(btriggers) do not run database triggers', NULL, NULL)
(NULL, 'usage', 'dtr.cpp', NULL, 1, 532, NULL, ' -e(xit) exit after end of script instead going to command prompt', NULL, NULL)
-- GFIX
('gfix_db_name', 'ALICE_gfix', 'alice.c', NULL, 3, 1, NULL, 'data base file name (@1) already given', NULL, NULL);
('gfix_invalid_sw', 'ALICE_gfix', 'alice.c', NULL, 3, 2, NULL, 'invalid switch @1', NULL, NULL);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,512 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: all.cpp
* DESCRIPTION: Internal block allocator
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
/***************************************************
THIS MODULE HAS SEVERAL KISSING COUSINS; IF YOU
SHOULD CHANGE ONE OF THE MODULES IN THE FOLLOWING
LIST, PLEASE BE SURE TO CHECK THE OTHERS FOR
SIMILAR CHANGES:
/qli/all.cpp
/gpre/msc.cpp
- THANK YOU
***************************************************/
#include "firebird.h"
#include <string.h>
#include "../qli/dtr.h"
#include "../qli/parse.h"
#include "../qli/compile.h"
#include "../qli/exe.h"
#include "../qli/report.h"
#include "../qli/format.h"
#include "../qli/all_proto.h"
#include "../qli/err_proto.h"
#include "../qli/mov_proto.h"
#include "../yvalve/gds_proto.h"
#define BLKDEF(type, root, tail) { sizeof(root), tail },
static const struct
{
SSHORT typ_root_length;
SSHORT typ_tail_length;
} block_sizes[] =
{
{0, 0},
#include "../qli/blk.h"
};
#undef BLKDEF
static void extend_pool(qli_plb*, USHORT);
static qli_vec* global_pools;
const int MIN_ALLOCATION = 1024;
BLK ALLQ_alloc( qli_plb* pool, UCHAR type, int count)
{
/**************************************
*
* A L L Q _ a l l o c
*
**************************************
*
* Functional description
* Allocate a block from a given pool and initialize the block.
* This is the primary block allocation routine.
*
**************************************/
if (type <= (SCHAR) type_MIN || type >= (SCHAR) type_MAX)
ERRQ_bugcheck(1); // Msg1 bad block type
// Compute block length
FB_SIZE_T size = block_sizes[type].typ_root_length;
SLONG tail = block_sizes[type].typ_tail_length;
if (tail)
size += count * tail;
size = FB_ALIGN(size, FB_ALIGNMENT);
if (size <= 4 || size > 65535)
ERRQ_bugcheck(2); // Msg2 bad block size
// Find best fit. Best fit is defined to be the free block of SHORTest
// tail. If there isn't a fit, extend the pool and try, try again.
qli_frb* free;
qli_frb** best;
FB_SIZE_T best_tail;
while (true)
{
best = NULL;
best_tail = 32767;
for (qli_frb** ptr = &pool->plb_free; (free = *ptr); ptr = &free->frb_next)
{
if (free->frb_next && (SCHAR *) free >= (SCHAR *) free->frb_next)
ERRQ_bugcheck(434); // memory pool free list is incorrect
else if ((tail = free->frb_header.blk_length - size) >= 0 &&
tail < static_cast<SLONG>(best_tail))
{
best = ptr;
best_tail = tail;
if (tail == 0)
break;
}
}
if (best)
break;
extend_pool(pool, size);
}
// We've got our free block. If there's enough left of the free block
// after taking out our block, chop out out block. If not, allocate
// the entire free block as our block (a little extra won't hurt).
free = *best;
qli_frb* block;
if (best_tail > sizeof(qli_frb))
{
USHORT l = free->frb_header.blk_length - size;
block = (qli_frb*) ((SCHAR *) free + l);
free->frb_header.blk_length -= size;
}
else
{
*best = free->frb_next;
size += best_tail;
block = free;
}
block->frb_header.blk_type = type;
block->frb_header.blk_pool_id = pool->plb_pool_id;
block->frb_header.blk_length = size;
if (size -= sizeof(blk))
memset((SCHAR *) block + sizeof(blk), 0, size);
return (BLK) block;
}
BLK ALLQ_extend(BLK* pointer, int size)
{
/**************************************
*
* A L L Q _ e x t e n d
*
**************************************
*
* Functional description
* Extend a repeating block, copying the constant part.
*
**************************************/
BLK block = *pointer;
BLK new_blk = (BLK) ALLQ_alloc((qli_plb*) global_pools->vec_object[block->blk_pool_id],
block->blk_type, size);
const int length = MIN(block->blk_length, new_blk->blk_length) - sizeof(blk);
memcpy((SCHAR*) new_blk + sizeof(blk), (SCHAR*) block + sizeof(blk), length);
ALLQ_release((qli_frb*) block);
if (new_blk->blk_type == (SCHAR) type_vec)
((qli_vec*) new_blk)->vec_count = size;
else if (new_blk->blk_type == (SCHAR) type_vcl)
((qli_vcl*) new_blk)->vcl_count = size;
*pointer = new_blk;
return new_blk;
}
void ALLQ_fini()
{
/**************************************
*
* A L L Q _ f i n i
*
**************************************
*
* Functional description
* Get rid of everything.
*
**************************************/
qli_plb** vector = (qli_plb**) global_pools->vec_object + global_pools->vec_count;
qli_plb** until = (qli_plb**) global_pools->vec_object;
while (--vector >= until)
{
qli_plb* pool = *vector;
if (pool)
{
qli_hnk* hunk;
for (qli_hnk* hunks = pool->plb_hunks; hunk = hunks;)
{
hunks = hunk->hnk_next;
ALLQ_free(hunk->hnk_address);
}
}
}
}
void ALLQ_free(void* memory)
{
/**************************************
*
* A L L Q _ f r e e
*
**************************************
*
* Functional description
* Give space back to system.
*
**************************************/
gds__free(memory);
}
void ALLQ_init()
{
/**************************************
*
* A L L Q _ i n i t
*
**************************************
*
* Functional description
* Initialize the pool system.
*
**************************************/
qli_vec temp_vector[2];
memset(temp_vector, 0, sizeof(temp_vector));
global_pools = temp_vector;
global_pools->vec_count = 1;
global_pools->vec_object[0] = NULL;
qli_plb* const pool = ALLQ_pool();
QLI_default_pool = QLI_permanent_pool = pool;
global_pools = (qli_vec*) ALLQ_alloc(pool, type_vec, 10);
global_pools->vec_count = 10;
global_pools->vec_object[0] = (BLK) pool;
}
SCHAR *ALLQ_malloc(SLONG size)
{
/**************************************
*
* A L L Q _ m a l l o c
*
**************************************
*
* Functional description
* Get memory from system.
*
**************************************/
SCHAR *memory = (SCHAR*) gds__alloc(size);
if (memory)
{
#ifdef DEBUG_GDS_ALLOC
gds_alloc_flag_unfreed((void *) memory); // Don't care about QLI leaks
#endif
return memory;
}
IBERROR(5); // Msg5 "memory gonzo"
return 0;
}
qli_plb* ALLQ_pool()
{
/**************************************
*
* A L L Q _ p o o l
*
**************************************
*
* Functional description
* Allocate a new pool. This is done by creating a tempory
* pool block on the stack, then allocating a real pool block.
* In SHORT, by mirrors.
*
**************************************/
USHORT pool_id;
// Start by assigning a pool id
for (pool_id = 0; pool_id < global_pools->vec_count; pool_id++)
{
if (!(global_pools->vec_object[pool_id]))
break;
}
if (pool_id >= global_pools->vec_count)
ALLQ_extend((BLK*) &global_pools, pool_id + 10);
qli_plb temp_pool;
global_pools->vec_object[pool_id] = (BLK) &temp_pool;
temp_pool.plb_free = NULL;
temp_pool.plb_hunks = NULL;
temp_pool.plb_pool_id = pool_id;
if (pool_id == 0)
QLI_permanent_pool = &temp_pool;
qli_plb* const pool = (qli_plb*) ALLQ_alloc(&temp_pool, type_plb, 0);
pool->plb_pool_id = pool_id;
pool->plb_free = temp_pool.plb_free;
pool->plb_hunks = temp_pool.plb_hunks;
global_pools->vec_object[pool_id] = (BLK) pool;
if (pool_id == 0)
QLI_permanent_pool = pool;
return pool;
}
void ALLQ_push( BLK object, qli_lls** stack)
{
/**************************************
*
* A L L Q _ p u s h
*
**************************************
*
* Functional description
* Push an object on a qli_lls stack.
*
**************************************/
qli_plb* pool = QLI_default_pool;
qli_lls* node = pool->plb_lls;
if (node)
pool->plb_lls = node->lls_next;
else
node = (qli_lls*) ALLQ_alloc(pool, type_lls, 0);
node->lls_object = object;
node->lls_next = *stack;
*stack = node;
}
BLK ALLQ_pop(qli_lls** stack)
{
/**************************************
*
* A L L Q _ p o p
*
**************************************
*
* Functional description
* Pop an object off a linked list stack. Save the node for
* further use.
*
**************************************/
qli_lls* node = *stack;
qli_plb* pool = (qli_plb*) global_pools->vec_object[node->lls_header.blk_pool_id];
*stack = node->lls_next;
node->lls_next = pool->plb_lls;
pool->plb_lls = node;
return node->lls_object;
}
void ALLQ_release( qli_frb* block)
{
/**************************************
*
* A L L Q _ r e l e a s e
*
**************************************
*
* Functional description
* Release a block to its pool. If it is contiguous to
* another free block, combine them. Otherwise link it
* into the free block linked list (kept in ascending order
* of addresses).
*
**************************************/
block->frb_header.blk_type = (SCHAR) type_frb;
UCHAR pool_id = block->frb_header.blk_pool_id;
qli_plb* pool;
if (pool_id >= global_pools->vec_count || !(pool = (qli_plb*) global_pools->vec_object[pool_id]))
{
ERRQ_bugcheck(4);
// Msg4 bad pool id
}
qli_frb* prior = NULL;
qli_frb* free;
qli_frb** ptr;
for (ptr = &pool->plb_free; free = *ptr; prior = free, ptr = &free->frb_next)
{
if ((SCHAR *) block <= (SCHAR *) free)
break;
}
if ((SCHAR *) block == (SCHAR *) free)
ERRQ_bugcheck(435); // block released twice
// Merge block into list first, then try to combine blocks
block->frb_next = free;
*ptr = block;
// Try to merge the free block with the next one down.
if (free)
{
if ((SCHAR *) block + block->frb_header.blk_length == (SCHAR *) free)
{
block->frb_header.blk_length += free->frb_header.blk_length;
block->frb_next = free->frb_next;
}
else if ((SCHAR *) block + block->frb_header.blk_length > (SCHAR *) free)
ERRQ_bugcheck(436); // released block overlaps following free block
}
// Try and merge the block with the prior free block
if (prior)
{
if ((SCHAR *) prior + prior->frb_header.blk_length == (SCHAR *) block)
{
prior->frb_header.blk_length += block->frb_header.blk_length;
prior->frb_next = block->frb_next;
}
else if ((SCHAR *) prior + prior->frb_header.blk_length > (SCHAR *) block)
ERRQ_bugcheck(437); // released block overlaps prior free block
}
}
void ALLQ_rlpool( qli_plb* pool)
{
/**************************************
*
* A L L Q _ r l p o o l
*
**************************************
*
* Functional description
* Release a storage pool. This involves nothing more than returning
* hunks to the free hunk list.
*
**************************************/
global_pools->vec_object[pool->plb_pool_id] = NULL;
qli_hnk* hunk;
for (qli_hnk* hunks = pool->plb_hunks; hunk = hunks;)
{
hunks = hunk->hnk_next;
gds__free(hunk->hnk_address);
}
}
static void extend_pool( qli_plb* pool, USHORT count)
{
/**************************************
*
* e x t e n d _ p o o l
*
**************************************
*
* Functional description
* Extend a pool by at least enough to accomodate a block
* of given size.
*
**************************************/
const SLONG size = (count + sizeof(qli_hnk) + MIN_ALLOCATION - 1) & ~(MIN_ALLOCATION - 1);
if ((USHORT) size < count)
IBERROR(481); // msg 481 unsuccessful attempt to extend pool beyond 64KB
BLK block = (BLK) ALLQ_malloc(size);
block->blk_length = size;
block->blk_type = (SCHAR) type_frb;
block->blk_pool_id = pool->plb_pool_id;
ALLQ_release((qli_frb*) block);
qli_hnk* const hunk = (qli_hnk*) ALLQ_alloc(pool, type_hnk, 0);
hunk->hnk_address = block;
hunk->hnk_length = size;
hunk->hnk_next = pool->plb_hunks;
pool->plb_hunks = hunk;
}

View File

@ -1,40 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: all_proto.h
* DESCRIPTION: Prototype header file for all.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_ALL_PROTO_H
#define QLI_ALL_PROTO_H
blk* ALLQ_alloc(qli_plb*, UCHAR, int);
blk* ALLQ_extend(blk**, int);
void ALLQ_fini();
void ALLQ_free(void*);
void ALLQ_init();
SCHAR* ALLQ_malloc(SLONG);
qli_plb* ALLQ_pool();
void ALLQ_push(blk*, qli_lls**);
blk* ALLQ_pop(qli_lls**);
void ALLQ_release(qli_frb*);
void ALLQ_rlpool(qli_plb*);
#endif // QLI_ALL_PROTO_H

View File

@ -1,55 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: blk.h
* DESCRIPTION: Block type definitions
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
BLKDEF (type_frb, qli_frb, 0)
BLKDEF (type_hnk, qli_hnk, 0)
BLKDEF (type_plb, qli_plb, 0)
BLKDEF (type_vec, qli_vec, sizeof (((qli_vec*) NULL)->vec_object[0]))
BLKDEF (type_dbb, qli_dbb, 1)
BLKDEF (type_rel, qli_rel, 0)
BLKDEF (type_fld, qli_fld, 1)
BLKDEF (type_vcl, qli_vcl, sizeof (((qli_vcl*) NULL)->vcl_long[0]))
BLKDEF (type_req, qli_req, 0) // Request block
BLKDEF (type_nod, qli_nod, sizeof(qli_nod*)) // sizeof (((qli_nod*) NULL)->nod_arg[0]))
BLKDEF (type_syn, qli_nod, sizeof (((qli_syntax*) NULL)->syn_arg[0]))
BLKDEF (type_lls, qli_lls, 0) // linked list stack
BLKDEF (type_str, qli_str, 1) // random string block
BLKDEF (type_tok, qli_tok, 1) // token block
BLKDEF (type_sym, qli_symbol, 1) // symbol block
BLKDEF (type_msg, qli_msg, 0) // Message block
BLKDEF (type_nam, qli_name, 1) // Name node
BLKDEF (type_ctx, qli_ctx, 0) // Context block
BLKDEF (type_con, qli_const, 1) // Constant block
BLKDEF (type_itm, qli_print_item, 0) // Print item
BLKDEF (type_par, qli_par, 0) // Parameter block
BLKDEF (type_line, qli_line, 1) // Input line block
BLKDEF (type_brk, qli_brk, 0)
BLKDEF (type_rpt, qli_rpt, 0)
BLKDEF (type_pic, pics, 0)
BLKDEF (type_prt, qli_prt, 0)
BLKDEF (type_map, qli_map, 0)
BLKDEF (type_qpr, qli_proc, 0)
BLKDEF (type_qfn, qli_func, 0)
BLKDEF (type_qfl, qli_filter, 0)
BLKDEF (type_fun, qli_fun, 0) //, sizeof(dsc)) // sizeof (((FUN) NULL)->fun_arg[0]))
BLKDEF (type_rlb, qli_rlb, 0) // Request language block

View File

@ -1,40 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: comma_proto.h
* DESCRIPTION: Prototype header file for command.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_COMMA_PROTO_H
#define QLI_COMMA_PROTO_H
bool CMD_check_ready();
void CMD_copy_procedure(qli_syntax*);
void CMD_define_procedure(qli_syntax*);
void CMD_delete_proc(qli_syntax*);
void CMD_edit_proc(qli_syntax*);
void CMD_extract(qli_syntax*);
void CMD_finish(qli_syntax*);
void CMD_rename_proc(qli_syntax*);
void CMD_set(qli_syntax*);
void CMD_shell(qli_syntax*);
void CMD_transaction(qli_syntax*);
#endif // QLI_COMMA_PROTO_H

View File

@ -1,568 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: command.cpp
* DESCRIPTION: Interprete commands
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#include "firebird.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ibase.h"
#include "../qli/dtr.h"
#include "../qli/parse.h"
#include "../qli/compile.h"
#include "../qli/exe.h"
#include "../qli/all_proto.h"
#include "../qli/err_proto.h"
#include "../qli/exe_proto.h"
#include "../qli/meta_proto.h"
#include "../qli/proc_proto.h"
#include "../yvalve/gds_proto.h"
#include "../common/utils_proto.h"
using MsgFormat::SafeArg;
static void dump_procedure(qli_dbb*, FILE*, const TEXT*, USHORT, FB_API_HANDLE);
static void extract_procedure(void*, const TEXT*, USHORT, qli_dbb*, ISC_QUAD&);
#ifdef NOT_USED_OR_REPLACED
static SCHAR db_items[] = { gds_info_page_size, gds_info_allocation, gds_info_end };
#endif
bool CMD_check_ready()
{
/**************************************
*
* C M D _ c h e c k _ r e a d y
*
**************************************
*
* Functional description
* Make sure at least one database is ready. If not, give a
* message.
*
**************************************/
if (QLI_databases)
return false;
ERRQ_msg_put(95); // Msg95 No databases are currently ready
return true;
}
void CMD_copy_procedure( qli_syntax* node)
{
/**************************************
*
* C M D _ c o p y _ p r o c e d u r e
*
**************************************
*
* Functional description
* Copy one procedure to another, possibly
* across databases
*
**************************************/
qli_proc* old_proc = (qli_proc*) node->syn_arg[0];
qli_proc* new_proc = (qli_proc*) node->syn_arg[1];
PRO_copy_procedure(old_proc->qpr_database, old_proc->qpr_name->nam_string,
new_proc->qpr_database, new_proc->qpr_name->nam_string);
}
void CMD_define_procedure( qli_syntax* node)
{
/**************************************
*
* C M D _ d e f i n e _ p r o c e d u r e
*
**************************************
*
* Functional description
* Define a procedure in the named database
* or in the most recently readied database.
*
**************************************/
qli_proc* proc = (qli_proc*) node->syn_arg[0];
if (!(proc->qpr_database))
proc->qpr_database = QLI_databases;
PRO_create(proc->qpr_database, proc->qpr_name->nam_string);
}
void CMD_delete_proc( qli_syntax* node)
{
/**************************************
*
* C M D _ d e l e t e _ p r o c
*
**************************************
*
* Functional description
* Delete a procedure in the named database
* or in the most recently readied database.
*
**************************************/
qli_proc* proc = (qli_proc*) node->syn_arg[0];
if (!proc->qpr_database)
proc->qpr_database = QLI_databases;
if (PRO_delete_procedure(proc->qpr_database, proc->qpr_name->nam_string))
return;
ERRQ_msg_put(88, SafeArg() << proc->qpr_name->nam_string << // Msg88 Procedure %s not found in database %s
proc->qpr_database->dbb_symbol->sym_string);
}
void CMD_edit_proc( qli_syntax* node)
{
/**************************************
*
* C M D _ e d i t _ p r o c
*
**************************************
*
* Functional description
* Edit a procedure in the specified database.
*
**************************************/
qli_proc* proc = (qli_proc*) node->syn_arg[0];
if (!proc->qpr_database)
proc->qpr_database = QLI_databases;
PRO_edit_procedure(proc->qpr_database, proc->qpr_name->nam_string);
}
void CMD_extract( qli_syntax* node)
{
/**************************************
*
* C M D _ e x t r a c t
*
**************************************
*
* Functional description
* Extract a series of procedures.
*
**************************************/
FILE* file = (FILE*) EXEC_open_output((qli_nod*) node->syn_arg[1]);
qli_syntax* list = node->syn_arg[0];
if (list)
{
qli_syntax** ptr = list->syn_arg;
for (const qli_syntax* const* const end = ptr + list->syn_count; ptr < end; ptr++)
{
qli_proc* proc = (qli_proc*) *ptr;
qli_dbb* database = proc->qpr_database;
if (!database)
database = QLI_databases;
const qli_name* name = proc->qpr_name;
FB_API_HANDLE blob = PRO_fetch_procedure(database, name->nam_string);
if (!blob)
{
ERRQ_msg_put(89, SafeArg() << name->nam_string << database->dbb_symbol->sym_string);
// Msg89 Procedure %s not found in database %s
continue;
}
dump_procedure(database, file, name->nam_string, name->nam_length, blob);
}
}
else
{
CMD_check_ready();
for (qli_dbb* database = QLI_databases; database; database = database->dbb_next)
{
PRO_scan(database, extract_procedure, file);
}
}
#ifdef WIN_NT
if (((qli_nod*) node->syn_arg[1])->nod_arg[e_out_pipe])
_pclose(file);
else
#endif
fclose(file);
}
void CMD_finish( qli_syntax* node)
{
/**************************************
*
* C M D _ f i n i s h
*
**************************************
*
* Functional description
* Perform FINISH. Either finish listed databases or everything.
*
**************************************/
if (node->syn_count == 0)
{
while (QLI_databases)
MET_finish(QLI_databases);
return;
}
for (USHORT i = 0; i < node->syn_count; i++)
MET_finish((qli_dbb*) node->syn_arg[i]);
}
void CMD_rename_proc( qli_syntax* node)
{
/**************************************
*
* C M D _ r e n a m e _ p r o c
*
**************************************
*
* Functional description
* Rename a procedure in the named database,
* or the most recently readied database.
*
**************************************/
qli_proc* old_proc = (qli_proc*) node->syn_arg[0];
qli_proc* new_proc = (qli_proc*) node->syn_arg[1];
qli_dbb* database = old_proc->qpr_database;
if (!database)
database = QLI_databases;
if (new_proc->qpr_database && (new_proc->qpr_database != database))
IBERROR(84); // Msg84 Procedures can not be renamed across databases. Try COPY
const qli_name* old_name = old_proc->qpr_name;
const qli_name* new_name = new_proc->qpr_name;
if (PRO_rename_procedure(database, old_name->nam_string, new_name->nam_string))
{
return;
}
ERRQ_error(85, SafeArg() << old_name->nam_string << database->dbb_symbol->sym_string);
// Msg85 Procedure %s not found in database %s
}
void CMD_set( qli_syntax* node)
{
/**************************************
*
* C M D _ s e t
*
**************************************
*
* Functional description
* Set various options.
*
**************************************/
USHORT length;
const qli_const* string;
const qli_syntax* const* ptr = node->syn_arg;
for (USHORT i = 0; i < node->syn_count; i++)
{
const USHORT foo = (USHORT)(IPTR) *ptr++;
const enum set_t sw = (enum set_t) foo;
const qli_syntax* value = *ptr++;
switch (sw)
{
case set_blr:
QLI_blr = (bool)(IPTR) value;
break;
case set_statistics:
QLI_statistics = (bool)(IPTR) value;
break;
case set_columns:
QLI_name_columns = QLI_columns = (USHORT)(IPTR) value;
break;
case set_lines:
QLI_lines = (USHORT)(IPTR) value;
break;
case set_semi:
QLI_semi = (bool)(IPTR) value;
break;
case set_echo:
QLI_echo = (bool)(IPTR) value;
break;
//case set_form:
// IBERROR(484); // FORMs not supported
// break;
case set_password:
string = (qli_const*) value;
length = MIN(string->con_desc.dsc_length + 1u, sizeof(QLI_default_password));
fb_utils::copy_terminate(QLI_default_password, (char*) string->con_data, length);
break;
case set_prompt:
string = (qli_const*) value;
if (string->con_desc.dsc_length >= sizeof(QLI_prompt_string))
ERRQ_error(86); // Msg86 substitute prompt string too long
fb_utils::copy_terminate(QLI_prompt_string, (char*) string->con_data, string->con_desc.dsc_length + 1);
break;
case set_continuation:
string = (qli_const*) value;
if (string->con_desc.dsc_length >= sizeof(QLI_cont_string))
ERRQ_error(87); // Msg87 substitute prompt string too long
fb_utils::copy_terminate(QLI_cont_string, (char*) string->con_data, string->con_desc.dsc_length + 1);
break;
case set_matching_language:
if (QLI_matching_language)
ALLQ_release((qli_frb*) QLI_matching_language);
string = (qli_const*) value;
if (!string)
QLI_matching_language = NULL;
else
{
const USHORT len = string->con_desc.dsc_length;
QLI_matching_language = (qli_const*) ALLOCPV(type_con, len);
fb_utils::copy_terminate((char*) QLI_matching_language->con_data,
(char*) string->con_data, len + 1);
dsc& lang = QLI_matching_language->con_desc;
lang.dsc_dtype = dtype_text;
lang.dsc_address = QLI_matching_language->con_data;
lang.dsc_length = len;
}
break;
case set_user:
string = (qli_const*) value;
length = MIN(string->con_desc.dsc_length + 1u, sizeof(QLI_default_user));
fb_utils::copy_terminate(QLI_default_user, (char*) string->con_data, length);
break;
break;
case set_count:
QLI_count = (USHORT)(IPTR) value;
break;
case set_charset:
{
if (!value)
{
QLI_charset[0] = 0;
break;
}
const TEXT* name = ((qli_name*) value)->nam_string;
fb_utils::copy_terminate(QLI_charset, name, sizeof(QLI_charset));
break;
}
#ifdef DEV_BUILD
case set_explain:
QLI_explain = (bool)(IPTR) value;
break;
case set_hex_output:
QLI_hex_output = (bool)(IPTR) value;
break;
#endif
default:
ERRQ_bugcheck(6); // Msg6 set option not implemented
}
}
}
void CMD_shell( qli_syntax* node)
{
/**************************************
*
* C M D _ s h e l l
*
**************************************
*
* Functional description
* Invoke operating system shell.
*
**************************************/
TEXT buffer[256];
// Copy command, inserting extra blank at end.
TEXT* p = buffer;
const qli_const* constant = (qli_const*) node->syn_arg[0];
if (constant)
{
const USHORT l = constant->con_desc.dsc_length;
if (l)
memcpy(p, constant->con_data, l);
p += l;
*p++ = ' ';
*p = 0;
}
else
{
#ifndef WIN_NT
strcpy(buffer, "$SHELL");
#else
strcpy(buffer, "%ComSpec%");
#endif
}
FB_UNUSED(system(buffer));
}
void CMD_transaction( qli_syntax* node)
{
/**************************************
*
* C M D _ t r a n s a c t i o n
*
**************************************
*
* Functional description
* Perform COMMIT, ROLLBACK or PREPARE
* on listed databases or everything.
*
**************************************/
// If there aren't any open databases then obviously
// there isn't anything to commit.
if (node->syn_count == 0 && !QLI_databases)
return;
if (node->syn_type == nod_commit)
{
if ((node->syn_count > 1) || (node->syn_count == 0 && QLI_databases->dbb_next))
{
node->syn_type = nod_prepare;
CMD_transaction(node);
node->syn_type = nod_commit;
}
else if (node->syn_count == 1)
{
qli_dbb* tmp_db = (qli_dbb*) node->syn_arg[0];
tmp_db->dbb_flags |= DBB_prepared;
}
else
QLI_databases->dbb_flags |= DBB_prepared;
}
if (node->syn_count == 0)
{
for (qli_dbb* db_iter = QLI_databases; db_iter; db_iter = db_iter->dbb_next)
{
if ((node->syn_type == nod_commit) && !(db_iter->dbb_flags & DBB_prepared))
{
ERRQ_msg_put(465, db_iter->dbb_symbol->sym_string);
}
else if (node->syn_type == nod_prepare)
db_iter->dbb_flags |= DBB_prepared;
if (db_iter->dbb_transaction)
MET_transaction(node->syn_type, db_iter);
if (db_iter->dbb_meta_trans)
MET_meta_commit(db_iter);
if (db_iter->dbb_proc_trans)
PRO_commit(db_iter);
}
return;
}
qli_syntax** ptr = node->syn_arg;
for (const qli_syntax* const* const end = ptr + node->syn_count; ptr < end; ptr++)
{
qli_dbb* database = (qli_dbb*) *ptr;
if ((node->syn_type == nod_commit) && !(database->dbb_flags & DBB_prepared))
{
ERRQ_msg_put(465, database->dbb_symbol->sym_string);
}
else if (node->syn_type == nod_prepare)
database->dbb_flags |= DBB_prepared;
if (database->dbb_transaction)
MET_transaction(node->syn_type, database);
}
}
static void dump_procedure(qli_dbb* database,
FILE* file,
const TEXT* name, USHORT length, FB_API_HANDLE blob)
{
/**************************************
*
* d u m p _ p r o c e d u r e
*
**************************************
*
* Functional description
* Extract a procedure from a database.
*
**************************************/
TEXT buffer[256];
fprintf(file, "DELETE PROCEDURE %.*s;\n", length, name);
fprintf(file, "DEFINE PROCEDURE %.*s\n", length, name);
while (PRO_get_line(blob, buffer, sizeof(buffer)))
fputs(buffer, file);
PRO_close(database, blob);
fprintf(file, "END_PROCEDURE\n\n");
}
static void extract_procedure(void* file,
const TEXT* name,
USHORT length, qli_dbb* database, ISC_QUAD& blob_id)
{
/**************************************
*
* e x t r a c t _ p r o c e d u r e
*
**************************************
*
* Functional description
* Extract a procedure from a database.
*
**************************************/
FB_API_HANDLE blob = PRO_open_blob(database, blob_id);
dump_procedure(database, static_cast<FILE*>(file), name, length, blob);
}

View File

@ -1,32 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: compi_proto.h
* DESCRIPTION: Prototype header file for compile.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_COMPI_PROTO_H
#define QLI_COMPI_PROTO_H
qli_nod* CMPQ_compile(qli_nod*);
void CMP_alloc_temp(qli_nod*);
bool CMP_node_match(const qli_nod*, const qli_nod*);
#endif // QLI_COMPI_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,255 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: compile.h
* DESCRIPTION: Parser/compiler definitions
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_COMPILE_H
#define QLI_COMPILE_H
// Name nodes -- used to hold names between parse and compilation
struct qli_name
{
blk nam_header;
qli_symbol* nam_symbol; // Symbol pointer, if any
USHORT nam_length; // Length of name
TEXT nam_string[1]; // Actual name string
};
// Qualified procedure node -- used to hold qualified procedure names
struct qli_proc
{
blk qpr_header;
qli_dbb* qpr_database; // database block
const qli_name* qpr_name; // name block
};
// Qualified function node -- used to hold qualified function names
struct qli_func
{
blk qfn_header;
qli_dbb* qfn_database; // database block
const qli_name* qfn_name; // name block
};
// Qualified filter node -- used to hold qualified filter names
struct qli_filter
{
blk qfl_header;
qli_dbb* qfl_database; // database block
const qli_name* qfl_name; // name block
};
// SHOW options
enum show_t {
show_all,
show_relation,
show_relations,
show_system_relations,
show_database,
show_databases,
show_procedure,
show_procedures,
show_version,
show_variable,
show_variables,
show_indices,
//show_qualified_procedure,
show_field,
show_filter,
show_filters,
show_global_field,
show_global_fields,
show_trigger,
show_triggers,
show_security_class,
show_security_classes,
//show_forms,
show_function,
show_functions,
show_views,
show_system_triggers,
show_matching_language,
show_db_indices,
show_db_fields
};
enum set_t {
set_blr,
set_statistics,
//set_epilog, // Unused
set_columns,
set_lines,
set_semi,
set_echo,
//set_form,
set_matching_language,
set_prompt,
set_continuation,
set_user,
set_password,
//set_euc_justify, // JPN specific option
set_count,
set_charset
#ifdef DEV_BUILD
, set_hex_output,
set_explain
#endif
};
// Position assignments for syntax tree nodes
const int s_rel_relation = 0; // Actual relation block
const int s_rel_context = 1; // Symbol block for context, if any
const int s_rel_count = 2;
const int s_prt_list = 0; // Print list
const int s_prt_rse = 1; // Rse, if any
const int s_prt_output = 2; // Output file, if any
const int s_prt_distinct = 3; // Simple flag indicating distinct
const int s_prt_order = 4; // SQL order clause
const int s_prt_form = 5;
const int s_prt_count = 6;
const int s_rse_first = 0; // FIRST clause, if any
const int s_rse_boolean = 1; // Boolean clause, if any
const int s_rse_sort = 2; // Sort clause, if any
const int s_rse_reduced = 3; // Reduced clause, if any
const int s_rse_group_by = 4;
const int s_rse_having = 5;
const int s_rse_outer = 6; // Outer context value (implicit ANY)
const int s_rse_inner = 7; // Inner context value
const int s_rse_op = 8; // Comparison operator
const int s_rse_join_type = 9; // Join type
const int s_rse_all_flag = 10; // Explicit "ALL" flag
const int s_rse_list = 11;
const int s_rse_count = 12;
const int s_for_rse = 0;
const int s_for_statement = 1;
const int s_for_count = 2;
const int s_itm_value = 0; // Value of print item
const int s_itm_edit_string = 1; // Edit string, if any
const int s_itm_header = 2; // Query header, if any
const int s_itm_count = 3;
const int s_sto_relation = 0;
const int s_sto_statement = 1;
const int s_sto_rse = 2;
const int s_sto_fields = 3;
const int s_sto_values = 4;
const int s_sto_form = 5;
const int s_sto_count = 6;
const int s_asn_from = 0;
const int s_asn_to = 1;
const int s_asn_count = 2;
const int s_mod_list = 0; // Field list
const int s_mod_statement = 1; // Sub-statement
const int s_mod_rse = 2; // Record selection expression
const int s_mod_form = 3;
const int s_mod_count = 4;
const int s_era_rse = 0;
const int s_era_count = 1;
const int s_rpt_value = 0;
const int s_rpt_statement = 1;
const int s_rpt_count = 2;
const int s_if_boolean = 0;
const int s_if_true = 1;
const int s_if_false = 2;
const int s_if_count = 3;
const int s_stt_rse = 0;
const int s_stt_value = 1;
const int s_stt_default = 2;
const int s_stt_distinct = 3;
const int s_stt_count = 4;
const int s_out_file = 0;
const int s_out_pipe = 1;
const int s_out_count = 2;
const int s_fmt_value = 0;
const int s_fmt_edit = 1;
const int s_fmt_count = 2;
const int s_dfi_name = 0;
const int s_dfi_relation = 1; // Define index
const int s_dfi_fields = 2;
const int s_dfi_count = 3;
const int s_mfi_name = 0; // Modify an index
const int s_mfi_database = 1;
const int s_mfi_count = 2;
const int s_ffr_form = 0;
const int s_ffr_statement = 1;
const int s_ffr_count = 2;
const int s_frm_form = 0;
const int s_frm_context = 1;
const int s_frm_database = 2;
const int s_frm_count = 3;
const int s_men_string = 0;
const int s_men_labels = 1;
const int s_men_statements = 2;
const int s_men_count = 3;
const int s_fun_args = 0;
const int s_fun_function = 1;
const int s_fun_count = 2;
const int s_idx_field = 0; // array subscript
const int s_idx_subs = 1;
const int s_idx_count = 2;
const int s_crv_name = 0;
const int s_crv_rse = 1;
const int s_crv_count = 2;
const int s_grant_fields = 0;
const int s_grant_relation = 1;
const int s_grant_users = 2;
const int s_grant_privileges = 3;
const int s_grant_count = 4;
// some flags for index definitions
const USHORT s_dfi_flag_unique = 1;
const USHORT s_dfi_flag_inactive = 2;
const USHORT s_dfi_flag_activity = 4;
const USHORT s_dfi_flag_selectivity = 8;
const USHORT s_dfi_flag_descending = 16;
const USHORT s_dfi_flag_order = 32;
const USHORT s_dfi_flag_statistics = 64;
#endif // QLI_COMPILE_H

View File

@ -1,749 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: dtr.cpp
* DESCRIPTION: Top level driving module
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*
* 2002.10.30 Sean Leyne - Removed support for obsolete "PC_PLATFORM" define
*
*/
#include "firebird.h"
#define QLI_MAIN
#include <stdio.h>
#include <setjmp.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include "../qli/dtr.h"
#include "../qli/parse.h"
#include "../qli/compile.h"
#include "../yvalve/perf.h"
#include "../jrd/license.h"
#include "ibase.h"
#include "../qli/exe.h"
#include "../qli/all_proto.h"
#include "../qli/compi_proto.h"
#include "../qli/err_proto.h"
#include "../qli/exe_proto.h"
#include "../qli/expan_proto.h"
#include "../qli/gener_proto.h"
#include "../qli/help_proto.h"
#include "../qli/lex_proto.h"
#include "../qli/meta_proto.h"
#include "../qli/parse_proto.h"
#include "../yvalve/gds_proto.h"
#include "../yvalve/perf_proto.h"
#include "fb_exception.h"
#include "../common/utils_proto.h"
#include "../jrd/align.h"
#include "../common/classes/Switches.h"
#include "../qli/qliswi.h"
#ifdef HAVE_LOCALE_H
#include <locale.h>
#endif
using MsgFormat::SafeArg;
const char* const STARTUP_FILE = "HOME"; // Assume it's Unix
extern TEXT* QLI_prompt;
static int async_quit(const int, const int, void*);
static void enable_signals();
static bool process_statement(bool);
static void CLIB_ROUTINE signal_arith_excp(USHORT, USHORT, USHORT);
static void usage(const Switches& switches);
static bool yes_no(USHORT, const TEXT*);
// the old name new_handler comflicts with std::new_handler for the "new" operator
typedef void (*new_signal_handler)(int);
struct answer_t
{
TEXT answer[30];
bool value;
};
static bool yes_no_loaded = false;
static answer_t answer_table[] =
{
{ "NO", false }, // NO
{ "YES", true }, // YES
{ "", false }
};
static void atexit_fb_shutdown()
{
fb_shutdown(0, fb_shutrsn_app_stopped);
}
int CLIB_ROUTINE main(int argc, char** argv)
{
/**************************************
*
* m a i n
*
**************************************
*
* Functional description
* Top level routine.
*
**************************************/
// Look at options, if any
Firebird::PathName startup_file = STARTUP_FILE;
#ifdef UNIX
// If a Unix system, get home directory from environment
SCHAR home_directory[MAXPATHLEN];
if (!fb_utils::readenv("HOME", startup_file))
startup_file = ".qli_startup";
else
startup_file.append("/.qli_startup");
#endif
#ifdef HAVE_LOCALE_H
// Pick up the system locale to allow SYSTEM<->UTF8 conversions
setlocale(LC_CTYPE, "");
#endif
atexit(&atexit_fb_shutdown);
const TEXT* application_file = NULL;
ALLQ_init();
LEX_init();
bool version_flag = false;
bool banner_flag = true;
sw_buffers = 0;
strcpy(QLI_prompt_string, "QLI> ");
strcpy(QLI_cont_string, "CON> ");
// Let's define the default number of columns on a machine by machine basis
QLI_columns = 80;
#ifdef TRUSTED_AUTH
QLI_trusted = false;
#endif
QLI_nodb_triggers = false;
QLI_lines = 60;
QLI_name_columns = 0;
QLI_prompt = QLI_prompt_string;
QLI_matching_language = 0;
QLI_default_user[0] = 0;
QLI_default_password[0] = 0;
QLI_charset[0] = 0;
QLI_quit_flag = false;
bool help_flag = false;
#ifdef DEV_BUILD
QLI_hex_output = false;
#endif
SLONG debug_value; // aparently unneeded, see usage below.
const Switches switches(qli_in_sw_table, FB_NELEM(qli_in_sw_table), false, true);
const TEXT* const* const arg_end = argv + argc;
argv++;
while (argv < arg_end)
{
const TEXT* const p = *argv++;
if (*p != '-')
{
banner_flag = false;
LEX_pop_line();
LEX_push_string(p);
continue;
}
if (!p[1])
continue;
const Switches::in_sw_tab_t* option = switches.findSwitch(p);
const int in_sw = option ? option->in_sw : IN_SW_QLI_0;
switch (in_sw)
{
case IN_SW_QLI_APP_SCRIPT:
if (argv >= arg_end)
{
ERRQ_msg_put(23); // Msg23 Please retry, supplying an application script file name
exit(FINI_ERROR);
}
application_file = *argv++;
break;
case IN_SW_QLI_BUFFERS:
if (argv < arg_end && **argv != '-')
sw_buffers = atoi(*argv++);
break;
case IN_SW_QLI_EXIT:
QLI_quit_flag = true;
break;
case IN_SW_QLI_FETCH_PASSWORD:
{
if (argv >= arg_end || **argv == '-')
break;
const char* pwd = NULL;
if (fb_utils::fetchPassword(*argv++, pwd) != fb_utils::FETCH_PASS_OK)
break;
fb_utils::copy_terminate(QLI_default_password, pwd, sizeof(QLI_default_password));
}
break;
case IN_SW_QLI_INITIAL_SCRIPT:
if (argv >= arg_end || **argv == '-')
startup_file = "";
else
startup_file = *argv++;
break;
#ifdef TRUSTED_AUTH
case IN_SW_QLI_TRUSTED_AUTH:
QLI_trusted = true;
break;
#endif
case IN_SW_QLI_NOBANNER:
banner_flag = false;
break;
case IN_SW_QLI_NODBTRIGGERS:
QLI_nodb_triggers = true;
break;
case IN_SW_QLI_PASSWORD:
if (argv >= arg_end || **argv == '-')
break;
fb_utils::copy_terminate(QLI_default_password, fb_utils::get_passwd(*argv++),
sizeof(QLI_default_password));
break;
case IN_SW_QLI_TRACE:
sw_trace = true;
break;
case IN_SW_QLI_USER:
if (argv >= arg_end || **argv == '-')
break;
fb_utils::copy_terminate(QLI_default_user, *argv++, sizeof(QLI_default_user));
break;
case IN_SW_QLI_VERIFY:
sw_verify = true;
break;
case IN_SW_QLI_X:
debug_value = 1;
isc_set_debug(debug_value);
break;
// This switch's name is arbitrary; since it is an internal
// mechanism it can be changed at will
case IN_SW_QLI_Y:
QLI_trace = true;
break;
case IN_SW_QLI_Z:
version_flag = true;
break;
case IN_SW_QLI_HELP:
help_flag = true;
break;
default:
ERRQ_msg_put(529, SafeArg() << p);
// Msg469 qli: ignoring unknown switch %c
break;
}
}
enable_signals();
if (help_flag)
{
usage(switches);
HELP_fini();
MET_shutdown();
LEX_fini();
ALLQ_fini();
return FINI_OK;
}
if (banner_flag)
ERRQ_msg_put(24); // Msg24 Welcome to QLI Query Language Interpreter
if (version_flag)
ERRQ_msg_put(25, SafeArg() << FB_VERSION); // Msg25 qli version %s
if (application_file)
LEX_push_file(application_file, true);
else
QLI_quit_flag = false; // Silently ignore -E switch when no script is given
if (startup_file.length())
LEX_push_file(startup_file.c_str(), false);
#if defined(_MSC_VER) && _MSC_VER >= 1400 && _MSC_VER < 1900
_set_output_format(_TWO_DIGIT_EXPONENT);
#endif
for (bool got_started = false; !got_started;)
{
got_started = true;
try {
PAR_token();
}
catch (const Firebird::Exception&)
{
// try again
got_started = false;
ERRQ_pending();
}
}
QLI_error = NULL;
// Loop until end of file or forced exit
bool flush_flag = false;
while (QLI_line)
{
qli_plb* temp = QLI_default_pool = ALLQ_pool();
flush_flag = process_statement(flush_flag);
ERRQ_pending();
ALLQ_rlpool(temp);
}
HELP_fini();
MET_shutdown();
LEX_fini();
ALLQ_fini();
#ifdef DEBUG_GDS_ALLOC
// Report any memory leaks noticed.
// We don't particularly care about QLI specific memory leaks, so all
// QLI allocations have been marked as "don't report". However, much
// of the test-base uses QLI so having a report when QLI finishes
// could find leaks within the engine.
gds_alloc_report(0 ALLOC_ARGS);
#endif
return (FINI_OK);
}
#ifdef DEV_BUILD
void QLI_validate_desc(const dsc* d)
{
fb_assert(d->dsc_dtype > dtype_unknown);
fb_assert(d->dsc_dtype < DTYPE_TYPE_MAX);
ULONG addr = (ULONG) (U_IPTR) (d->dsc_address); // safely ignore higher bits even if present
USHORT ta = type_alignments[d->dsc_dtype];
if (ta > 1)
fb_assert((addr & (ta - 1)) == 0);
}
#endif
static int async_quit(const int reason, const int, void*)
{
/**************************************
*
* a s y n c _ q u i t
*
**************************************
*
* Functional description
* Stop whatever we happened to be doing.
*
**************************************/
if (reason == fb_shutrsn_signal)
{
EXEC_abort();
return FB_FAILURE;
}
return FB_SUCCESS;
}
static void enable_signals()
{
/**************************************
*
* e n a b l e _ s i g n a l s
*
**************************************
*
* Functional description
* Enable signals.
*
**************************************/
#ifdef SIGQUIT
signal(SIGQUIT, SIG_IGN);
#endif
fb_shutdown_callback(0, async_quit, fb_shut_confirmation, 0);
#ifdef SIGPIPE
signal(SIGPIPE, SIG_IGN);
#endif
signal(SIGFPE, (new_signal_handler) signal_arith_excp);
}
static bool process_statement(bool flush_flag)
{
/**************************************
*
* p r o c e s s _ s t a t e m e n t
*
**************************************
*
* Functional description
* Parse, compile, and execute a single statement. If an input flush
* is required, return true (or status), otherwise return false.
*
**************************************/
// Clear database active flags in preparation for a new statement
QLI_abort = false;
for (qli_dbb* dbb = QLI_databases; dbb; dbb = dbb->dbb_next)
dbb->dbb_flags &= ~DBB_active;
// If the last statement wrote out anything to the terminal, skip a line
if (QLI_skip_line)
{
printf("\n");
QLI_skip_line = false;
}
// Enable signal handling for the next statement. Each signal will
// be caught at least once, then reset to allow the user to really
// kill the process
enable_signals();
// Enable error unwinding and enable the unwinding environment
try {
// Set up the appropriate prompt and get the first significant token. If
// we don't get one, we're at end of file
QLI_prompt = QLI_prompt_string;
// This needs to be done after setting QLI_prompt to prevent
// and infinite loop in LEX/next_line.
// If there was a prior syntax error, flush the token stream
if (flush_flag)
LEX_flush();
while (QLI_token->tok_keyword == KW_SEMI)
LEX_token();
PAR_real();
if (!QLI_line)
return false;
EXEC_poll_abort();
// Mark the current token as starting the statement. This is allows
// the EDIT command to find the last statement
LEX_mark_statement();
// Change the prompt string to the continuation prompt, and parse
// the next statement
QLI_prompt = QLI_cont_string;
qli_syntax* syntax_tree = PARQ_parse();
if (!syntax_tree)
return false;
EXEC_poll_abort();
// If the statement was EXIT, force end of file on command input
if (syntax_tree->syn_type == nod_exit)
{
QLI_line = NULL;
return false;
}
// If the statement was quit, ask the user if he want to rollback
if (syntax_tree->syn_type == nod_quit)
{
QLI_line = NULL;
for (qli_dbb* dbb = QLI_databases; dbb; dbb = dbb->dbb_next)
{
if ((dbb->dbb_transaction) && (dbb->dbb_flags & DBB_updates))
{
// Msg460 Do you want to rollback updates for <dbb>?
if (yes_no(460, dbb->dbb_symbol->sym_string))
MET_transaction(nod_rollback, dbb);
else
MET_transaction(nod_commit, dbb);
}
}
return false;
}
// Expand the statement. It will return NULL if the statement was
// a command. An error will be unwound
qli_nod* expanded_tree = EXP_expand(syntax_tree);
if (!expanded_tree)
return false;
// Compile the statement
qli_nod* execution_tree = CMPQ_compile(expanded_tree);
if (!execution_tree)
return false;
// Generate any BLR needed to support the request
if (!GEN_generate(execution_tree))
return false;
if (QLI_statistics)
{
for (qli_dbb* dbb = QLI_databases; dbb; dbb = dbb->dbb_next)
{
if (dbb->dbb_flags & DBB_active)
{
if (!dbb->dbb_statistics)
{
dbb->dbb_statistics = (int*) gds__alloc((SLONG) sizeof(PERF64));
#ifdef DEBUG_GDS_ALLOC
// We don't care about QLI specific memory leaks for V4.0
gds_alloc_flag_unfreed((void *) dbb->dbb_statistics); // QLI: don't care
#endif
}
perf64_get_info(&dbb->dbb_handle, (perf64*) dbb->dbb_statistics);
}
}
}
// Execute the request, for better or worse
EXEC_top(execution_tree);
if (QLI_statistics)
{
PERF64 statistics;
TEXT buffer[512], report[256];
for (qli_dbb* dbb = QLI_databases; dbb; dbb = dbb->dbb_next)
{
report[0] = 0;
if (dbb->dbb_flags & DBB_active)
{
ERRQ_msg_get(505, report, sizeof(report));
// Msg505 " reads = !r writes = !w fetches = !f marks = !m\n"
FB_SIZE_T used_len = fb_strlen(report);
ERRQ_msg_get(506, report + used_len, sizeof(report) - used_len);
// Msg506 " elapsed = !e cpu = !u system = !s mem = !x, buffers = !b"
perf64_get_info(&dbb->dbb_handle, &statistics);
perf64_format((perf64*) dbb->dbb_statistics, &statistics, report, buffer, 0);
ERRQ_msg_put(26, SafeArg() << dbb->dbb_filename << buffer);
// Msg26 Statistics for database %s %s
QLI_skip_line = true;
}
}
}
// Release resources associated with the request
GEN_release();
return false;
} // try
catch (const Firebird::Exception&)
{
GEN_release();
return true;
}
}
static void CLIB_ROUTINE signal_arith_excp(USHORT /*sig*/, USHORT code, USHORT /*scp*/)
{
/**************************************
*
* s i g n a l _ a r i t h _ e x c p
*
**************************************
*
* Functional description
* Catch arithmetic exception.
*
**************************************/
USHORT msg_number;
#if defined(FPE_INOVF_TRAP) || defined(FPE_INTDIV_TRAP) || \
defined(FPE_FLTOVF_TRAP) || defined(FPE_FLTDIV_TRAP) || \
defined(FPE_FLTUND_TRAP) || defined(FPE_FLTOVF_FAULT) || \
defined(FPE_FLTUND_FAULT)
switch (code)
{
#ifdef FPE_INOVF_TRAP
case FPE_INTOVF_TRAP:
msg_number = 14; // Msg14 integer overflow
break;
#endif
#ifdef FPE_INTDIV_TRAP
case FPE_INTDIV_TRAP:
msg_number = 15; // Msg15 integer division by zero
break;
#endif
#ifdef FPE_FLTOVF_TRAP
case FPE_FLTOVF_TRAP:
msg_number = 16; // Msg16 floating overflow trap
break;
#endif
#ifdef FPE_FLTDIV_TRAP
case FPE_FLTDIV_TRAP:
msg_number = 17; // Msg17 floating division by zero
break;
#endif
#ifdef FPE_FLTUND_TRAP
case FPE_FLTUND_TRAP:
msg_number = 18; // Msg18 floating underflow trap
break;
#endif
#ifdef FPE_FLTOVF_FAULT
case FPE_FLTOVF_FAULT:
msg_number = 19; // Msg19 floating overflow fault
break;
#endif
#ifdef FPE_FLTUND_FAULT
case FPE_FLTUND_FAULT:
msg_number = 20; // Msg20 floating underflow fault
break;
#endif
default:
msg_number = 21; // Msg21 arithmetic exception
}
#else
msg_number = 21;
#endif
signal(SIGFPE, (new_signal_handler) signal_arith_excp);
IBERROR(msg_number);
}
static void usage(const Switches& switches)
{
/**************************************
*
* u s a g e
*
**************************************
*
* Functional description
* Print help about command-line arguments.
*
**************************************/
ERRQ_msg_put(513);
ERRQ_msg_put(514);
ERRQ_msg_put(515);
for (const Switches::in_sw_tab_t* p = switches.getTable(); p->in_sw; ++p)
{
if (p->in_sw_msg)
ERRQ_msg_put(p->in_sw_msg);
}
ERRQ_msg_put(527);
ERRQ_msg_put(528);
}
static bool yes_no(USHORT number, const TEXT* arg1)
{
/**************************************
*
* y e s _ n o
*
**************************************
*
* Functional description
* Put out a prompt that expects a yes/no
* answer, and keep trying until we get an
* acceptable answer (e.g. y, Yes, N, etc.)
*
**************************************/
TEXT prompt[256];
ERRQ_msg_format(number, sizeof(prompt), prompt, SafeArg() << arg1);
if (!yes_no_loaded)
{
yes_no_loaded = true;
// Msg498 NO
if (!ERRQ_msg_get(498, answer_table[0].answer, sizeof(answer_table[0].answer)))
strcpy(answer_table[0].answer, "NO"); // default if msg_get fails
// Msg497 YES
if (!ERRQ_msg_get(497, answer_table[1].answer, sizeof(answer_table[1].answer)))
strcpy(answer_table[1].answer, "YES");
}
TEXT buffer[256];
while (true)
{
buffer[0] = 0;
if (!LEX_get_line(prompt, buffer, sizeof(buffer)))
return true;
for (const answer_t* response = answer_table; *response->answer != '\0'; response++)
{
const TEXT* p = buffer;
while (*p == ' ')
p++;
if (*p == EOF)
return true;
for (const TEXT* q = response->answer; *p && UPPER(*p) == *q++; p++)
;
if (!*p || *p == '\n')
return response->value;
}
}
}

View File

@ -1,558 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: dtr.h
* DESCRIPTION: General definitions, etc.
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_DTR_H
#define QLI_DTR_H
#include "../common/dsc.h"
#include "../jrd/constants.h"
const USHORT QLI_MSG_FAC = 1;
#define IBERROR(number) ERRQ_error (number)
#define ALLOCD(type) ALLQ_alloc (QLI_default_pool, type, 0)
#define ALLOCDV(type, repeat) ALLQ_alloc (QLI_default_pool, type, repeat)
#define ALLOCP(type) ALLQ_alloc (QLI_permanent_pool, type, 0)
#define ALLOCPV(type, repeat) ALLQ_alloc (QLI_permanent_pool, type, repeat)
#define BLKDEF(type, root, tail) type,
enum blk_t
{
type_MIN = 0,
#include "../qli/blk.h"
type_MAX
};
#undef BLKDEF
// Block types
#ifndef INCLUDE_FB_BLK
#include "../include/old_fb_blk.h"
#endif
enum nod_t {
// Commands, not executed.
nod_nothing = 0,
nod_ready = 1,
nod_finish,
nod_commit,
nod_rollback,
nod_prepare,
nod_start_trans,
nod_show,
nod_exit,
nod_quit,
//nod_create,
nod_define,
nod_delete_proc,
nod_rename_proc,
nod_edit_proc,
nod_copy_proc,
nod_extract,
nod_set,
nod_help,
nod_shell,
nod_def_database,
nod_del_database,
nod_def_relation,
nod_mod_relation,
nod_del_relation,
nod_def_field,
nod_mod_field,
nod_del_field,
nod_def_index,
nod_del_index,
nod_mod_index,
// SQL statements, mapped into GDML statements
//nod_select,
//nod_insert,
//nod_delete,
//nod_fetch,
//nod_close,
//nod_open,
nod_for,
nod_restructure,
nod_print,
nod_list_fields,
nod_list,
nod_store,
nod_modify,
nod_erase,
nod_assign,
nod_report,
nod_report_loop,
nod_repeat,
nod_if,
nod_output,
nod_declare,
nod_variable,
nod_abort,
//nod_label,
//nod_leave,
//nod_sync,
nod_commit_retaining,
nod_relation,
//nod_name,
nod_rse,
//nod_union,
//nod_aggregate,
nod_print_item,
nod_star, // Bunch of items
nod_column,
nod_tab,
nod_skip,
nod_space,
nod_new_page,
nod_report_header,
nod_column_header,
nod_eql,
nod_neq,
nod_gtr,
nod_geq,
nod_leq,
nod_lss,
nod_between,
nod_containing,
nod_matches,
nod_like,
nod_starts,
nod_missing,
nod_and,
nod_or,
nod_any,
nod_not,
nod_unique,
nod_reference,
nod_field,
nod_prompt,
//nod_prompt2,
nod_edit_blob,
nod_parameter, // only tested, but not set
nod_constant,
nod_position,
nod_map,
nod_add,
nod_subtract,
nod_multiply,
nod_divide,
nod_negate,
nod_concatenate,
nod_substr,
nod_null,
nod_user_name,
nod_format,
nod_choice, // only tested but not set
nod_function,
nod_average,
nod_max,
nod_min,
nod_total,
nod_count,
nod_agg_average,
nod_agg_max,
nod_agg_min,
nod_agg_total,
nod_agg_count,
nod_rpt_average,
nod_rpt_max,
nod_rpt_min,
nod_rpt_total,
nod_rpt_count,
nod_running_count,
nod_running_total,
nod_from,
nod_via, // only tested but not set
nod_upcase, // New blr for v3
nod_lowcase,
nod_sleuth,
nod_index,
nod_join_inner,
nod_join_left,
nod_join_right,
nod_join_full, // only set but not tested
//nod_sql_create, // SQL metadata
nod_sql_database,
//nod_sql_dr_index,
nod_sql_al_table,
nod_sql_cr_table,
//nod_sql_dr_table,
nod_sql_cr_view,
//nod_sql_dr_view,
nod_sql_grant,
nod_sql_revoke
};
struct qli_vec
{
blk vec_header;
ULONG vec_count;
blk* vec_object[1];
};
struct qli_vcl
{
blk vcl_header;
ULONG vcl_count;
SLONG vcl_long[1];
};
// Constant block
struct qli_const
{
blk con_header;
dsc con_desc;
UCHAR con_data[1];
};
// Symbol types
enum sym_t
{
SYM_keyword,
SYM_context, // set but never tested
SYM_database,
SYM_relation,
SYM_field, // set but never tested
//SYM_stream,
//SYM_cursor,
//SYM_form,
SYM_function
};
struct qli_symbol
{
blk sym_header;
const TEXT* sym_string; // address of asciz string
USHORT sym_length; // length of string (exc. term.)
sym_t sym_type; // symbol type
USHORT sym_keyword; // keyword number, if keyword
blk* sym_object; // general pointer to object
qli_symbol* sym_collision; // collision pointer
qli_symbol* sym_homonym; // homonym pointer
TEXT sym_name[2]; // space for name, if necessary
};
// Syntax nodes (moved from compile.h because of cross-references)
struct qli_syntax
{
blk syn_header;
nod_t syn_type; // Type of node
USHORT syn_flags;
USHORT syn_count; // Number of arguments
qli_syntax* syn_arg[1];
};
// Database block
struct qli_dbb
{
blk dbb_header;
qli_dbb* dbb_next; // Next database in system
struct qli_rel* dbb_relations; // Linked list of relations
struct qli_fun* dbb_functions; // Known functions in database
FB_API_HANDLE dbb_handle; // database handle
FB_API_HANDLE dbb_transaction; // transaction handle
FB_API_HANDLE dbb_proc_trans; // procedure transaction
FB_API_HANDLE dbb_meta_trans; // metadata update transaction
FB_API_HANDLE dbb_field_request; // "get fields" request handle
qli_symbol* dbb_symbol; // Database variable
qli_const* dbb_user; // user name
qli_const* dbb_password; // password
USHORT dbb_filename_length; // Length of filename
FB_API_HANDLE dbb_lookup_blob; // Request to look up blob
FB_API_HANDLE dbb_store_blob; // Request to store blob
FB_API_HANDLE dbb_edit_blob;
FB_API_HANDLE dbb_edit_store;
FB_API_HANDLE dbb_scan_blobs;
//FB_API_HANDLE dbb_delete_blob; // Unused
USHORT dbb_flags;
//USHORT dbb_type; // Friend or foe?
USHORT dbb_pagesize; // For SQL metadata
ULONG dbb_capabilities; // Special characteristics to look out for
int* dbb_statistics; // Statistics memory
FB_API_HANDLE dbb_requests [96]; // Misc meta-data requests
TEXT dbb_filename [2]; // Filename of database
};
// Bits in dbb_flags
const USHORT DBB_procedures = 1; // Procedures relation found
const USHORT DBB_active = 2; // Database is active in request
const USHORT DBB_updates = 8; // Updates in current transaction
const USHORT DBB_prepared = 32; // User transaction has been prepared
// Bits in dbb_capabilities
const ULONG DBB_cap_extern_file = 1; // supports the concept of external files
const ULONG DBB_cap_files = 2; // uses the Firebird concept of multi-file
const ULONG DBB_cap_security = 4; // Firebird style security classes
// const ULONG DBB_cap_triggers = 8; -- OBSOLETE: triggers (old style)
const ULONG DBB_cap_idx_inactive = 16; // Firebird index inactive flag
const ULONG DBB_cap_multi_trans = 32; // Database supports multiple transactions
const ULONG DBB_cap_single_trans = 64; // Database supports only a single transaction
//const ULONG DBB_cap_dudley = 128; // We're authorized for meta-data updates. Unused
const ULONG DBB_cap_functions = 256; // The DBMS knows about function
const ULONG DBB_cap_new_triggers = 512; // triggers (new V3 style)
const ULONG DBB_cap_shadowing = 1024; // Database supports shadowing
const ULONG DBB_cap_types = 2048; // Database has RDB$TYPES relation
const ULONG DBB_cap_dimensions = 4096; // Database supports arrays -- What a database!
//const ULONG DBB_cap_external_type = 8192; // Database supports external datatypes. Unused
const ULONG DBB_cap_rfr_sys_flag = 16384; // Database hasn't forgotten about the system flag
const ULONG DBB_cap_filters = 32768; // Database supports filters
const ULONG DBB_cap_index_type = 65536; // Database has descending indices
const ULONG DBB_cap_nodyn = 131072; // Database (really, engine) does not support DYN
// Relation block
struct qli_rel
{
blk rel_header;
qli_rel* rel_next; // Next relation in database
qli_dbb* rel_database; // Parent database
qli_symbol* rel_symbol; // Hash symbol for relation
struct qli_fld* rel_fields; // Field block
USHORT rel_id; // Relation id
USHORT rel_flags; // Misc flags
USHORT rel_system_flag; // System flag
USHORT rel_max_field_pos; // highest used field position
};
// rel_flags
const USHORT REL_fields = 1; // Fields have been fetched
const USHORT REL_system = 2; // Relation is system relation
const USHORT REL_view = 4; // Relation is a view
// Field block
struct qli_fld
{
blk fld_header;
qli_fld* fld_next; // Next field in relation
qli_rel* fld_relation; // Parent relation
qli_symbol* fld_name; // Field name
qli_symbol* fld_query_name; // Field query name
qli_symbol* fld_based; // Name of global field, if we care
const TEXT* fld_edit_string; // Edit string, if any
const TEXT* fld_query_header; // Query header, if any
USHORT fld_flags;
USHORT fld_id; // Field in in database
USHORT fld_dtype; // Data type of field
FLD_LENGTH fld_length; // Length of field
USHORT fld_segment_length; // Segment length for blobs
SSHORT fld_scale; // Scale factor of field
qli_syntax* fld_validation; // Validation expression
//qli_syntax* fld_computed; // Computed by expression. Unused
qli_const* fld_missing; // Missing value defined in system relation
SSHORT fld_sub_type; // Subtype for blobs, text and EXACT_NUMERICs.
SSHORT fld_sub_type_missing; // Subtype missing flag
SSHORT fld_precision; // Precision for NUMERIC and DECIMAL.
USHORT fld_system_flag; // System flag
double fld_dummy; // Force fld_data to a nice boundary word boundary
UCHAR fld_data [1];
};
// fld_flags
const USHORT FLD_computed = 1;
const USHORT FLD_drop = 2;
const USHORT FLD_modify = 4;
const USHORT FLD_missing = 8;
const USHORT FLD_not_null = 16;
const USHORT FLD_add = 32;
//const USHORT FLD_unique = 64; // Unused
const USHORT FLD_array = 128;
// Privileges for SQL metadata
const USHORT PRV_select = 1;
const USHORT PRV_insert = 2;
const USHORT PRV_delete = 4;
const USHORT PRV_update = 8;
const USHORT PRV_all = PRV_select + PRV_insert + PRV_delete + PRV_update;
const USHORT PRV_grant_option = 16;
struct qli_lls
{
blk lls_header;
blk* lls_object;
qli_lls* lls_next;
};
// Random string block -- jack of all kludges
struct qli_str
{
blk str_header;
USHORT str_length;
USHORT str_fluff; // ??? Not used, maybe alignment?
TEXT str_data[2];
};
// Free block
struct qli_frb
{
blk frb_header;
qli_frb* frb_next; // Next free block in pool
};
// Hunk blocks
struct qli_hnk
{
blk hnk_header;
void* hnk_address; // start of memory hunk
int hnk_length; // length of memory hunk
qli_hnk* hnk_next; // next memory hunk in structure
};
// Pool block
struct qli_plb
{
blk plb_header;
USHORT plb_pool_id; // pool id
qli_frb* plb_free; // first free block
qli_hnk* plb_hunks; // first hunk block
qli_lls* plb_lls; // avaiable linked list stack nodes
};
// Equivalence label dsc_missing to field dsc_flags in the dsc structure
#define dsc_missing dsc_flags
// State flags for dsc_missing
const USHORT DSC_missing = 1;
const USHORT DSC_initial = 2; // Nobody sets this value, at least directly
// Function description
struct qli_fun
{
blk fun_header;
qli_fun* fun_next; // Next function in database
qli_dbb* fun_database;
qli_symbol* fun_symbol; // Associated symbol block
qli_symbol* fun_query_name;
dsc fun_return; // Return descriptor
//USHORT fun_args; // Number of arguments. Unused
//dsc fun_arg[1]; // Data type of arguments
// If you change this change blk.h too
};
// Program wide globals
#ifdef QLI_MAIN
#define EXTERN
#else
#define EXTERN extern
#endif
EXTERN qli_dbb* QLI_databases;
EXTERN qli_plb* QLI_permanent_pool;
EXTERN qli_plb* QLI_default_pool;
EXTERN qli_fld* QLI_variables;
EXTERN TEXT QLI_prompt_string [32];
EXTERN TEXT QLI_cont_string [32];
EXTERN TEXT QLI_default_user [MAX_SQL_IDENTIFIER_SIZE];
EXTERN TEXT QLI_default_password [MAX_SQL_IDENTIFIER_SIZE];
EXTERN TEXT QLI_charset [MAX_SQL_IDENTIFIER_SIZE];
EXTERN qli_const* QLI_matching_language;
//EXTERN USHORT QLI_eof;
EXTERN bool QLI_blr;
EXTERN bool QLI_skip_line;
EXTERN bool QLI_statistics;
EXTERN bool QLI_semi;
EXTERN bool QLI_abort;
EXTERN bool QLI_echo;
EXTERN bool QLI_trace;
EXTERN USHORT QLI_count;
#ifdef DEV_BUILD
EXTERN bool QLI_explain;
EXTERN bool QLI_hex_output;
#endif
#ifdef TRUSTED_AUTH
EXTERN bool QLI_trusted;
#endif
EXTERN bool QLI_nodb_triggers;
EXTERN bool QLI_quit_flag;
EXTERN const char* QLI_error;
EXTERN bool sw_verify;
EXTERN bool sw_trace;
EXTERN USHORT sw_buffers;
EXTERN USHORT QLI_lines;
EXTERN USHORT QLI_prompt_count;
EXTERN bool QLI_reprompt;
EXTERN USHORT QLI_name_columns;
EXTERN USHORT QLI_columns;
//EXTERN USHORT QLI_euc_justify;
//EXTERN USHORT QLI_interp;
#include "parse.h"
// from parse.h
EXTERN qli_tok* QLI_token;
EXTERN qli_line* QLI_line;
EXTERN TEXT* QLI_prompt;
#include "exe.h"
// from exe.h
EXTERN qli_req* QLI_requests; // Requests in statement
#undef EXTERN
#include "../qli/all_proto.h"
#ifdef DEV_BUILD
void QLI_validate_desc(const dsc*);
#else
inline void QLI_validate_desc(const dsc*) { }
#endif
inline void QLI_validate_desc(const dsc& d) { QLI_validate_desc(&d); }
#endif // QLI_DTR_H

View File

@ -1,355 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: err.cpp
* DESCRIPTION: Error handlers
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#include "firebird.h"
#include <stdio.h>
#include <setjmp.h>
#include <stdlib.h>
#include <string.h>
#include "gen/iberror.h"
#include "../qli/dtr.h"
#include "../qli/parse.h"
#include "../qli/err_proto.h"
#include "../qli/help_proto.h"
#include "../qli/lex_proto.h"
#include "../yvalve/gds_proto.h"
#include "../common/classes/MsgPrint.h"
using MsgFormat::SafeArg;
static TEXT ERRQ_message[256];
void ERRQ_bugcheck( USHORT number)
{
/**************************************
*
* E R R Q _ b u g c h e c k
*
**************************************
*
* Functional description
* Somebody has screwed up. Bugcheck.
*
**************************************/
TEXT s[256];
ERRQ_msg_format(number, sizeof(s), s);
ERRQ_error(9, SafeArg() << s); // Msg9 INTERNAL: %s
}
void ERRQ_database_error( qli_dbb* dbb, ISC_STATUS* status_vector)
{
/**************************************
*
* E R R Q _ d a t a b a s e _ e r r o r
*
**************************************
*
* Functional description
* Print message from database error and unwind.
*
**************************************/
if (dbb)
{
ERRQ_msg_put(10, dbb->dbb_filename); // Msg10 ** QLI error from database %s **
gds__print_status(status_vector);
}
else
{
ERRQ_msg_put(11); // Msg11 ** QLI error from database **
gds__print_status(status_vector);
}
QLI_skip_line = true;
// if we've really got the database open and get an I/O error,
// close up neatly. If we get an I/O error trying to open the
// database, somebody else will clean up
if (dbb && dbb->dbb_handle && status_vector[1] == isc_io_error)
ERRQ_msg_put(458, dbb->dbb_filename); // Msg458 ** connection to database %s lost **
Firebird::LongJump::raise();
}
void ERRQ_error(USHORT number, const SafeArg& arg)
{
/**************************************
*
* E R R Q _ e r r o r
*
**************************************
*
* Functional description
* An error has occurred. Put out an error message and
* unwind. If this was called before the unwind path
* was established, don't unwind just print error and exit.
*
**************************************/
ERRQ_pending();
ERRQ_error_format(number, arg);
Firebird::LongJump::raise();
/*
else
{
ERRQ_pending();
ERRQ_exit(FINI_ERROR);
}
*/
}
void ERRQ_error(USHORT number, const char* str)
{
/**************************************
*
* E R R Q _ e r r o r
*
**************************************
*
* Functional description
* An error has occurred. Put out an error message and
* unwind. If this was called before the unwind path
* was established, don't unwind just print error and exit.
*
**************************************/
ERRQ_error(number, SafeArg() << str);
}
void ERRQ_error_format(USHORT number, const SafeArg& arg)
{
/**************************************
*
* E R R Q _ e r r o r _ f o r m a t
*
**************************************
*
* Functional description
* Retrieve a message from the error file and format it
* in the standard qli error format, put it where
* ERRQ_pending expects to find it.
**************************************/
TEXT s[256];
fb_msg_format(0, QLI_MSG_FAC, number, sizeof(s), s, arg);
fb_msg_format(0, QLI_MSG_FAC, 12, sizeof(ERRQ_message), ERRQ_message, SafeArg() << s);
// Msg12 ** QLI error: %s **
QLI_error = ERRQ_message;
QLI_skip_line = true;
}
void ERRQ_exit( int status)
{
/**************************************
*
* E R R Q _ e x i t
*
**************************************
*
* Functional description
* Exit after shutting down a bit.
*
**************************************/
HELP_fini();
LEX_fini();
exit(status);
}
void ERRQ_msg_format(USHORT number, USHORT length, TEXT* output_string, const SafeArg& arg)
{
/**************************************
*
* E R R Q _ m s g _ f o r m a t
*
**************************************
*
* Functional description
* Retrieve a message from the error file and format it
*
**************************************/
fb_msg_format(0, QLI_MSG_FAC, number, length, output_string, arg);
}
void ERRQ_msg_partial(USHORT number, const SafeArg& arg)
{
/**************************************
*
* E R R Q _ m s g _ p a r t i a l
*
**************************************
*
* Functional description
* Retrieve a message from the error file, format it, and print it
*
**************************************/
fb_msg_format(0, QLI_MSG_FAC, number, sizeof(ERRQ_message), ERRQ_message, arg);
printf("%s", ERRQ_message);
}
void ERRQ_msg_put(USHORT number, const SafeArg& arg)
{
/**************************************
*
* E R R Q _ m s g _ p u t
*
**************************************
*
* Functional description
* Retrieve a message from the error file, format it, and print it
* It's same outcome as ERRQ_msg_partial but with a newline at the end.
*
**************************************/
fb_msg_format(0, QLI_MSG_FAC, number, sizeof(ERRQ_message), ERRQ_message, arg);
printf("%s\n", ERRQ_message);
}
void ERRQ_msg_put(USHORT number, const char* str)
{
/**************************************
*
* E R R Q _ m s g _ p u t
*
**************************************
*
* Functional description
* Retrieve a message from the error file, format it, and print it
* It's same outcome as ERRQ_msg_partial but with a newline at the end.
*
**************************************/
fb_msg_format(0, QLI_MSG_FAC, number, sizeof(ERRQ_message), ERRQ_message, SafeArg() << str);
printf("%s\n", ERRQ_message);
}
int ERRQ_msg_get( USHORT number, TEXT* output_msg, FB_SIZE_T s_size)
{
/**************************************
*
* E R R Q _ m s g _ g e t
*
**************************************
*
* Functional description
* Retrieve a message from the error file
*
**************************************/
static const SafeArg arg;
int l = fb_msg_format(0, QLI_MSG_FAC, number, s_size, output_msg, arg);
return (l >= 0);
}
void ERRQ_pending()
{
/**************************************
*
* E R R Q _ p e n d i n g
*
**************************************
*
* Functional description
* Print out an error message if one is pending.
*
**************************************/
if (QLI_error)
{
printf("%s\n", QLI_error);
QLI_error = NULL;
}
}
void ERRQ_print_error(USHORT number, const SafeArg& arg)
{
/**************************************
*
* E R R Q _ p r i n t _ e r r o r
*
**************************************
*
* Functional description
* An error has occurred. Put out an error message and
* unwind.
*
**************************************/
ERRQ_error(number, arg);
}
void ERRQ_print_error(USHORT number, const char* str)
{
/**************************************
*
* E R R Q _ p r i n t _ e r r o r
*
**************************************
*
* Functional description
* An error has occurred. Put out an error message and
* unwind.
*
**************************************/
ERRQ_error(number, SafeArg() << str);
}
void ERRQ_syntax( USHORT number)
{
/**************************************
*
* E R R Q _ s y n t a x
*
**************************************
*
* Functional description
* Syntax error has occurred. Give some hint of what went
* wrong.
*
**************************************/
TEXT s[256];
ERRQ_msg_format(number, sizeof(s), s);
ERRQ_error(13, SafeArg() << s << QLI_token->tok_string);
// Msg13 expected %s, encountered %s
}

View File

@ -1,46 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: err_proto.h
* DESCRIPTION: Prototype header file for err.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_ERR_PROTO_H
#define QLI_ERR_PROTO_H
#include "../common/classes/SafeArg.h"
void ERRQ_bugcheck(USHORT);
void ERRQ_database_error(qli_dbb*, ISC_STATUS*);
void ERRQ_error(USHORT, const MsgFormat::SafeArg& arg = MsgFormat::SafeArg());
void ERRQ_error(USHORT, const char* str);
void ERRQ_error_format(USHORT, const MsgFormat::SafeArg& arg = MsgFormat::SafeArg());
void ERRQ_exit (int);
void ERRQ_msg_format(USHORT, USHORT, TEXT*, const MsgFormat::SafeArg& arg = MsgFormat::SafeArg());
int ERRQ_msg_get(USHORT, TEXT*, FB_SIZE_T s_size);
void ERRQ_msg_partial (USHORT, const MsgFormat::SafeArg& arg = MsgFormat::SafeArg());
void ERRQ_msg_put (USHORT, const MsgFormat::SafeArg& arg = MsgFormat::SafeArg());
void ERRQ_msg_put(USHORT number, const char* str);
void ERRQ_pending ();
void ERRQ_print_error(USHORT, const MsgFormat::SafeArg& arg = MsgFormat::SafeArg());
void ERRQ_print_error(USHORT number, const char* str);
void ERRQ_syntax (USHORT);
#endif // QLI_ERR_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: eval_proto.h
* DESCRIPTION: Prototype header file for eval.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_EVAL_PROTO_H
#define QLI_EVAL_PROTO_H
struct qli_nod;
struct dsc;
int EVAL_boolean (qli_nod*);
void EVAL_break_compute (qli_nod*);
void EVAL_break_increment (qli_nod*);
void EVAL_break_init (qli_nod*);
dsc* EVAL_parameter (qli_par*);
dsc* EVAL_value (qli_nod*);
#endif // QLI_EVAL_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,362 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: exe.h
* DESCRIPTION: Execution struct definitions
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_EXE_H
#define QLI_EXE_H
// Request Language Block -- used for BLR, DYN, SDL, etc.
struct qli_rlb
{
blk rlb_header;
UCHAR *rlb_data; // Pointer to end of BLR/DYN/SDL
UCHAR *rlb_base; // Pointer to start of buffer
UCHAR *rlb_limit; // Upper limit of string
USHORT rlb_length; // Length of string
};
// RLB manipulation macros
const USHORT RLB_BUFFER_SIZE = 2048;
const USHORT RLB_SAFETY_MARGIN = 48;
#define STUFF(blr) *rlb->rlb_data++ = blr
#define STUFF_WORD(blr) {STUFF (blr); STUFF (blr >> 8);}
struct qli_msg; // forward decl.
// Request block
struct qli_req
{
blk req_header;
qli_req* req_next; // Next request in statement
qli_dbb* req_database; // Database for request
FB_API_HANDLE req_handle; // Database request handle
qli_rlb* req_blr;
qli_msg* req_messages; // Messages associated with request
qli_msg* req_receive; // Current receive message, if any
qli_msg* req_send; // Current send message, if any
qli_msg* req_continue; // Message to continue FOR loop after optional actions
USHORT req_flags; // Flags for state of request compilation, etc.
USHORT req_context; // Next available context
USHORT req_msg_number; // Next available message number
USHORT req_label; // Next available label
};
// req_flags
const USHORT REQ_rse_compiled = 1;
const USHORT REQ_project = 2; // Set during generation of project clause
const USHORT REQ_group_by = 4; // Set during generation of group by clause
struct qli_nod;
// Context node
enum CTX_T {
CTX_RELATION,
CTX_VARIABLE,
CTX_AGGREGATE,
//CTX_UNION,
CTX_STREAM
};
struct qli_ctx
{
blk ctx_header;
CTX_T ctx_type; // Type of context
qli_ctx* ctx_source; // Source context for MODIFY
qli_ctx* ctx_primary; // Primary context
qli_symbol* ctx_symbol; // Context symbol, if any
struct qli_rel* ctx_relation; // Relation of context
qli_nod* ctx_stream; // Stream of context
struct qli_fld* ctx_variable; // Variable reference
qli_req* ctx_request; // Request block
qli_msg* ctx_message; // Message for data
qli_nod* ctx_rse; // RSE node for root context
qli_nod* ctx_sub_rse; // RSE node aggregate
qli_ctx* ctx_parent; // Parent context for map
struct qli_map* ctx_map; // Map items, if any
USHORT ctx_context; // Context in request
};
// Aggregate/union map block
struct qli_map
{
blk map_header;
qli_map* map_next; // Next map in item
qli_nod* map_node; // Value for map item
USHORT map_position; // Position in map
};
// Message block
struct qli_msg
{
blk msg_header;
qli_req* msg_request; // Parent request
//qli_ctx* msg_context; // Contexts in message
qli_msg* msg_next; // Next message in request
struct qli_par* msg_parameters; // Field instances
USHORT msg_number; // Message number
USHORT msg_length; // Message length
USHORT msg_parameter; // Next parameter number
UCHAR* msg_buffer; // Message buffer
};
// Parameter block
struct qli_par
{
blk par_header;
dsc par_desc; // Value descriptor
qli_par* par_next; // Next par block in context
qli_msg* par_message; // Parent message
qli_nod* par_value; // Value
USHORT par_parameter; // Parameter number
USHORT par_offset; // Offset of parameter in message
qli_par* par_missing; // Parameter block for missing value
};
// Print item block
enum itm_t
{
item_value,
item_skip,
item_column,
item_tab,
item_space,
item_new_page,
item_column_header,
item_report_header
};
struct qli_print_item
{
blk itm_header;
qli_nod* itm_value;
const TEXT* itm_edit_string;
struct pics* itm_picture; // picture string block
const TEXT* itm_query_header;
itm_t itm_type;
USHORT itm_flags; // Misc flags and crud
UCHAR itm_dtype;
UCHAR itm_sub_type;
USHORT itm_print_offset;
USHORT itm_print_length;
USHORT itm_header_offset;
USHORT itm_header_length;
//USHORT itm_header_segments;
USHORT itm_count; // Number of lines to skip
//USHORT itm_column; // Logical column number
FB_API_HANDLE itm_stream;
//USHORT itm_kanji_fragment; // JPN: last kanji on line border
//ISC_STATUS itm_blob_status; // JPN: status of the last blob fetch
};
// itm_flags
const USHORT ITM_overlapped = 1; // Overlapped by another item
// Print Control Block
struct qli_prt
{
blk prt_header;
FILE* prt_file; // FILE pointer
struct qli_rpt* prt_report; // Report block (if report)
void (*prt_new_page)(qli_prt*, bool); // New page routine, if any
USHORT prt_lines_per_page;
SSHORT prt_lines_remaining;
USHORT prt_page_number;
};
// General node blocks
struct qli_nod
{
blk nod_header;
nod_t nod_type; // Type of node
dsc nod_desc; // Descriptor
qli_par* nod_import; // To pass random value
qli_par* nod_export; // To pass random value
SSHORT nod_count; // Number of arguments
UCHAR nod_flags;
qli_nod* nod_arg[1]; // If you change this change blk.h too
};
// nod_flags
const UCHAR NOD_local = 1; // locally computed expression
const UCHAR NOD_remote = 2;
const UCHAR NOD_parameter2 = 4; // generate a parameter2 if field
const UCHAR nod_partial = 8;
const UCHAR nod_comparison = 16;
const UCHAR nod_date = 32; // node is a date operation, regardless
// Execution node positions
const int e_fld_field = 0; // field block
const int e_fld_context = 1; // context for field
const int e_fld_reference = 2; // points to parameter
const int e_fld_subs = 3; // subscripts
const int e_fld_count = 4;
const int e_for_request = 0; // Request to be started
const int e_for_send = 1; // Message to be sent
const int e_for_receive = 2; // Message to be received
const int e_for_eof = 3; // End of file parameter
const int e_for_rse = 4;
const int e_for_statement = 5;
const int e_for_count = 6;
const int e_itm_value = 0; // Value of print item
const int e_itm_edit_string = 1; // Edit string, if any
const int e_itm_header = 2; // Query header, if any
const int e_itm_count = 3;
const int e_rse_first = 0; // FIRST clause, if any
const int e_rse_boolean = 1; // Boolean clause, if any
const int e_rse_sort = 2; // Sort clause, if any
const int e_rse_reduced = 3; // Reduced clause, if any
const int e_rse_context = 4; // Context block
const int e_rse_group_by = 5;
const int e_rse_having = 6;
const int e_rse_join_type = 7;
const int e_rse_count = 8;
const int e_prt_list = 0; // List of print items
const int e_prt_file_name = 1; // Output file name
const int e_prt_output = 2; // Output file
const int e_prt_header = 3; // Header to be printed, if any
const int e_prt_count = 4;
const int e_prm_prompt = 0; // Prompt string, if any
const int e_prm_string = 1; // String node for data
const int e_prm_next = 2; // Next prompt in statement
const int e_prm_field = 3; // Prototype field, if known
const int e_prm_count = 4;
const int e_sto_context = 0;
const int e_sto_statement = 1;
const int e_sto_request = 2;
const int e_sto_send = 3;
const int e_sto_count = 4;
const int e_asn_to = 0;
const int e_asn_from = 1;
const int e_asn_initial = 2;
const int e_asn_valid = 3; // Always second-to-last
const int e_asn_count = 4;
const int e_mod_send = 0;
const int e_mod_statement = 1; // Sub-statement
const int e_mod_request = 2; // Parent request for statement
const int e_mod_count = 3;
const int e_era_context = 0;
const int e_era_request = 1; // Parent request for erase
const int e_era_message = 2; // Message to be sent, if any
const int e_era_count = 3;
const int e_any_request = 0; // Request to be started
const int e_any_send = 1; // Message to be sent
const int e_any_receive = 2; // Message to be received
const int e_any_rse = 3;
const int e_any_count = 4;
const int e_rpt_value = 0;
const int e_rpt_statement = 1;
const int e_rpt_count = 2;
const int e_if_boolean = 0;
const int e_if_true = 1;
const int e_if_false = 2;
const int e_if_count = 3;
const int e_edt_input = 0;
const int e_edt_dbb = 1;
const int e_edt_id1 = 2;
const int e_edt_id2 = 3;
const int e_edt_name = 4;
const int e_edt_count = 5;
const int e_out_statement = 0;
const int e_out_file = 1;
const int e_out_pipe = 2;
const int e_out_print = 3;
const int e_out_count = 4;
const int e_fmt_value = 0;
const int e_fmt_edit = 1;
const int e_fmt_picture = 2;
const int e_fmt_count = 3;
// Statistical expression
const int e_stt_rse = 0;
const int e_stt_value = 1;
const int e_stt_default = 2;
const int e_stt_request = 3; // Request to be started
const int e_stt_send = 4; // Message to be sent
const int e_stt_receive = 5; // Message to be received
const int e_stt_count = 6;
const int e_map_context = 0;
const int e_map_map = 1;
const int e_map_count = 2;
const int e_ffr_form = 0;
const int e_ffr_statement = 1;
const int e_ffr_count = 2;
const int e_fup_form = 0;
const int e_fup_fields = 1;
const int e_fup_tag = 2;
const int e_fup_count = 3;
const int e_ffl_form = 0;
const int e_ffl_field = 1;
const int e_ffl_string = 2;
const int e_ffl_count = 3;
const int e_men_statements = 0;
const int e_men_labels = 1;
const int e_men_string = 2;
const int e_men_menu = 4;
const int e_men_count = 5;
const int e_fun_args = 0;
const int e_fun_function = 1;
const int e_fun_request = 2; // Request to be started
const int e_fun_send = 3; // Message to be sent
const int e_fun_receive = 4; // Message to be received
const int e_fun_count = 5;
const int e_syn_statement = 0;
const int e_syn_send = 1;
const int e_syn_count = 2;
#endif // QLI_EXE_H

View File

@ -1,38 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: exe_proto.h
* DESCRIPTION: Prototype header file for exe.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_EXE_PROTO_H
#define QLI_EXE_PROTO_H
void EXEC_abort();
void EXEC_execute(qli_nod*);
FB_API_HANDLE EXEC_open_blob(qli_nod*);
FILE* EXEC_open_output(qli_nod*);
void EXEC_poll_abort();
dsc* EXEC_receive(qli_msg*, qli_par*);
void EXEC_send(qli_msg*);
void EXEC_start_request(qli_req*, qli_msg*);
void EXEC_top(qli_nod*);
#endif // QLI_EXE_PROTO_H

View File

@ -1,30 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: expan_proto.h
* DESCRIPTION: Prototype header file for expand.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_EXPAN_PROTO_H
#define QLI_EXPAN_PROTO_H
qli_nod* EXP_expand(qli_syntax*);
#endif // QLI_EXPAN_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,35 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: forma_proto.h
* DESCRIPTION: Prototype header file for format.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_FORMA_PROTO_H
#define QLI_FORMA_PROTO_H
int FMT_expression(qli_nod*);
TEXT* FMT_format(qli_lls*);
qli_nod* FMT_list(qli_nod*);
void FMT_print(qli_nod*, qli_prt*);
void FMT_put(const TEXT*, qli_prt*);
void FMT_report(qli_rpt*);
#endif // QLI_FORMA_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,111 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: format.h
* DESCRIPTION: Print formatter definitions
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_FORMAT_H
#define QLI_FORMAT_H
/* Picture string elements:
A any alpha character (interpreted as X)
B blank character
CR credit (sign)
D day of month (digit)
DB debit (sign)
E exponent
G exponent or decimal format, whichever is shorter
H hex digit
J day of year (digit)
M alpha month
N month (numeric)
P AM/PM indicator for time
T time
W weekday (character)
X any character
Y year (digit)
Z digit or leading suppressed digit (blank)
9 digit
$ fixed or floating insertion
* floating insertion
, literal character or inserted
. decimal point
+ sign (fixed or floating), always present
- sign (fixed or floating), suppressed on positive, or literal
? separate between real and missing components of edit string
"string" any string
(( )) insert parenthesis if negative
/ literal insertion
% literal insertion
: literal insertion
*/
enum pic_t {
pic_alpha = 1,
pic_numeric,
pic_date,
pic_float
// , pic_text // unused
};
// Picture string handling block
struct pics
{
blk pic_header;
USHORT pic_print_length; // Print length of picture string
const TEXT* pic_string; // Address of string
const TEXT* pic_pointer; // Address of string
USHORT pic_flags; // Misc. trash
USHORT pic_count; // Count of repeat characters
TEXT pic_character; // Last significant character
pic_t pic_type; // Type of edit
USHORT pic_length; // Printing columns (MAX of edit_string & missing)
USHORT pic_floats; // Character of floating things
USHORT pic_digits; // Digits of number
USHORT pic_hex_digits; // Hexidecimal digits
USHORT pic_fractions; // Digits after decimal point
USHORT pic_chars; // Insertion characters (alpha)
USHORT pic_literals; // Literal insertion characters
USHORT pic_days; // Digits of day of month
USHORT pic_weekdays; // Characters of weekday
USHORT pic_months; // Characters of alpha month
USHORT pic_nmonths; // Digits of numeric month
USHORT pic_years; // Digits of year
USHORT pic_julians; // Digits of julian days
USHORT pic_decimals; // Number of decimal points (?!)
USHORT pic_brackets; // Pairs of deficit brackets
USHORT pic_exponents; // Exponential indicators
USHORT pic_float_digits; // Floating digits
USHORT pic_hours; // hours
USHORT pic_minutes; // minutes
USHORT pic_seconds; // seconds
USHORT pic_meridian; // AM/PM indicator
pics* pic_missing; // missing value edit string
};
// pic_flags
const USHORT PIC_suppress_blanks = 1; // Suppress leading blanks
const USHORT PIC_literal = 2; // We're in a quoted string
const USHORT PIC_signed = 4; // This numeric edit string has a sign indicator
#endif // QLI_FORMAT_H

File diff suppressed because it is too large Load Diff

View File

@ -1,40 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: gener_proto.h
* DESCRIPTION: Prototype header file for gener.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_GENER_PROTO_H
#define QLI_GENER_PROTO_H
qli_nod* GEN_generate(qli_nod*);
void GEN_release();
qli_rlb* GEN_rlb_extend(qli_rlb*);
void GEN_rlb_release(qli_rlb*);
inline qli_rlb* CHECK_RLB(qli_rlb*& in)
{
if (!in || (in->rlb_data > in->rlb_limit))
in = GEN_rlb_extend(in);
return in;
}
#endif // QLI_GENER_PROTO_H

View File

@ -1,350 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: help.epp
* DESCRIPTION: Help module.
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*
* 2002.10.30 Sean Leyne - Removed support for obsolete "PC_PLATFORM" define
*
*/
#include "firebird.h"
#include <stdio.h>
#include <string.h>
#include "ibase.h"
#include "../qli/dtr.h"
#include "../qli/compile.h"
#include "../qli/parse.h"
#include "../qli/err_proto.h"
#include "../qli/help_proto.h"
#include "../qli/lex_proto.h"
#include "../yvalve/gds_proto.h"
#include "../common/utils_proto.h"
#include "../common/classes/fb_string.h"
using MsgFormat::SafeArg;
const char* INDENT = " ";
const int COLUMN_WIDTH = 20;
const int RIGHT_MARGIN = 70;
const char* const TARGET = "help.fdb";
DATABASE HELP_DB = STATIC "help.fdb" RUNTIME target;
static int additional_topics(const TEXT*, const TEXT*, const TEXT*);
static void print_more(USHORT, USHORT, const TEXT**, USHORT*, const TEXT*); //, bool);
static void print_topic(USHORT, USHORT, const TEXT**, USHORT*, const TEXT*, bool);
static const TEXT* strip(const TEXT*);
void HELP_fini()
{
/**************************************
*
* H E L P _ f i n i
*
**************************************
*
* Functional description
*
**************************************/
if (HELP_DB)
{
COMMIT;
FINISH;
}
}
void HELP_help( qli_syntax* node)
{
/**************************************
*
* H E L P _ h e l p
*
**************************************
*
* Functional description
* Give the poor sucker help.
*
**************************************/
if (!HELP_DB)
{
Firebird::PathName name = fb_utils::getPrefix(Firebird::IConfigManager::DIR_HELP, TARGET);
TEXT target[MAXPATHLEN];
name.copyTo(target, sizeof target);
READY
ON_ERROR
ERRQ_database_error(NULL, gds_status);
END_ERROR;
START_TRANSACTION;
}
USHORT max_level = 0;
const TEXT* topics[16];
const TEXT** topic = topics;
*topic++ = "QLI";
qli_name** ptr;
qli_name** end;
for (ptr = (qli_name**) node->syn_arg, end = ptr + node->syn_count; ptr < end; ptr++)
{
*topic++ = (*ptr)->nam_string;
}
print_topic(0, node->syn_count, topics, &max_level, "", false);
if (max_level < node->syn_count)
print_topic(0, node->syn_count, topics, &max_level, "", true);
}
static int additional_topics( const TEXT* parent, const TEXT* banner, const TEXT* string)
{
/**************************************
*
* a d d i t i o n a l _ t o p i c s
*
**************************************
*
* Functional description
* Print a list of other known topics.
*
**************************************/
TEXT line[256];
// Print list of know topics. When we find the first, print the banner, if any
TEXT* ptr = line;
USHORT topics = 0;
USHORT l = static_cast<USHORT>(strlen(parent));
FOR X IN TOPICS
WITH X.PARENT EQ parent SORTED BY X.TOPIC
if (QLI_abort)
return 0;
const TEXT* p = X.TOPIC;
while (*p && *p != ' ')
p++;
if (!(l = p - X.TOPIC))
continue;
if (++topics == 1 && banner)
printf("%s%s%s\n", banner, string, parent);
p =
line +
((ptr - line + COLUMN_WIDTH - 1) / COLUMN_WIDTH) * COLUMN_WIDTH;
if (p + l > line + RIGHT_MARGIN)
{
*ptr = 0;
printf("%s%s\n", INDENT, line);
p = ptr = line;
}
while (ptr < p)
*ptr++ = ' ';
p = X.TOPIC;
do {
*ptr++ = *p++;
} while (--l);
*ptr++ = ' ';
END_FOR;
if (ptr != line)
{
*ptr = 0;
printf("%s%s\n", INDENT, line);
}
return topics;
}
static void print_more(USHORT level,
USHORT depth,
const TEXT** topics,
USHORT* max_level,
const TEXT* parent)
//bool error_flag) // unused
{
/**************************************
*
* p r i n t _ m o r e
*
**************************************
*
* Functional description
* We have printed a topic with additional sub-topics. Ask the user if he
* wants more.
*
**************************************/
TEXT buffer[256], topic[80], prompt[80];
ERRQ_msg_get(502, prompt, sizeof(prompt)); // Msg502 "Subtopic? "
// Prompt the user for a line
if (!LEX_get_line(prompt, buffer, sizeof(buffer)))
return;
// Upcase the response and zap the blanks
TEXT* p = topic;
topics[1] = p;
for (const TEXT* q = buffer; *q && *q != '\n'; q++)
if (*q != ' ')
*p++ = UPPER(*q);
*p = 0;
// If we got anything, print the new topic
if (p != topic)
{
print_topic(level + 1, depth + 1, topics + 1, max_level, parent, false);
// strange, it doesn't use error_flag
}
}
static void print_topic(USHORT level,
USHORT depth,
const TEXT** topics,
USHORT* max_level, const TEXT* parent, bool error_flag)
{
/**************************************
*
* p r i n t _ t o p i c
*
**************************************
*
* Functional description
* Lookup topic in path. If we find a topic, and are not level
* zero, recurse. Otherwise print out the topic. In any case,
* remember the lowest level on which a topic was found. If the
* error flag is set, print out a list of sub-topics.
*
**************************************/
TEXT string[128], banner[128], buffer[128], prompt[80];
// Copy the parent string inserting a blank at the end
TEXT* p = string;
if (*parent)
{
const TEXT* q = parent;
while (*q)
*p++ = *q++;
*p++ = ' ';
}
TEXT* const next = p;
USHORT count = 0;
FOR X IN TOPICS
WITH X.FACILITY EQ "QLI" AND
(X.TOPIC STARTING WITH * topics AND X.PARENT EQ parent) OR
(X.TOPIC = X.FACILITY AND X.TOPIC = *topics AND X.TOPIC = X.PARENT)
count++;
END_FOR;
if (count > 1)
ERRQ_msg_put(80, SafeArg() << count << *topics); // Msg80 [%d topics matched %s]
count = 0;
FOR(LEVEL level) X IN TOPICS
WITH X.FACILITY EQ "QLI" AND
(X.TOPIC STARTING WITH * topics AND X.PARENT EQ parent) OR
(X.TOPIC = X.FACILITY AND X.TOPIC = *topics AND X.TOPIC = X.PARENT)
SORTED BY X.TOPIC
if (QLI_abort)
return;
if (count)
{
ERRQ_msg_get(503, prompt, sizeof(prompt));
// Msg503 "\ntype <cr> for next topic or <EOF> to stop: "
if (!LEX_get_line(prompt, buffer, sizeof(buffer)))
return;
}
++count;
if (level > *max_level)
*max_level = level;
p = next;
const TEXT* q = X.TOPIC;
while (*q && *q != ' ')
*p++ = *q++;
*p = 0;
if (level < depth)
print_topic(level + 1, depth, topics + 1, max_level, string, error_flag);
else
{
printf("\n%s\n\n", strip(string));
QLI_skip_line = true;
FOR B IN X.TEXT
if (QLI_abort)
return;
B.SEGMENT[B.LENGTH] = 0;
printf("%s%s", INDENT, B.SEGMENT);
END_FOR;
ERRQ_msg_format(81, sizeof(banner), banner, SafeArg() << INDENT);
// Msg81 %sSub-topics available:
if (additional_topics(string, banner, INDENT))
print_more(level, depth, topics, max_level, string); //, error_flag);
}
END_FOR;
if (!count && error_flag && level > *max_level)
{
const TEXT* path = strip(parent);
ERRQ_msg_put(82, SafeArg() << path << *topics); // Msg82 No help is available for %s %s
ERRQ_msg_format(83, sizeof(banner), banner, SafeArg() << path);
// Msg83 Sub-topics available for %s are:
additional_topics(parent, banner, path);
}
}
static const TEXT* strip( const TEXT* string)
{
/**************************************
*
* s t r i p
*
**************************************
*
* Functional description
* Strip off the first topic in the path.
*
**************************************/
const TEXT* p = string;
while (*p != ' ')
if (!*p++)
return string;
while (*p == ' ')
if (!*p++)
return string;
return p;
}

View File

@ -1,31 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: help_proto.h
* DESCRIPTION: Prototype header file for help.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_HELP_PROTO_H
#define QLI_HELP_PROTO_H
void HELP_fini();
void HELP_help(qli_syntax*);
#endif // QLI_HELP_PROTO_H

View File

@ -1,279 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: hsh.cpp
* DESCRIPTION: Hash table and symbol manager
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#include "firebird.h"
#include "../qli/dtr.h"
#include "../qli/parse.h"
#include "../qli/all_proto.h"
#include "../qli/err_proto.h"
#include "../qli/hsh_proto.h"
typedef bool (*scompare_t)(const SCHAR*, int, const SCHAR*, int);
static int hash(const SCHAR*, int);
static bool scompare_ins(const SCHAR*, int, const SCHAR*, int);
static bool scompare_sens(const SCHAR*, int, const SCHAR*, int);
const int HASH_SIZE = 224;
static qli_symbol* hash_table[HASH_SIZE];
static qli_symbol* key_symbols;
struct qli_kword
{
kwwords id;
const char* keyword;
};
const qli_kword keywords[] =
{
#include "../qli/words.h"
{KW_continuation, "-\n"}
};
void HSH_fini()
{
/**************************************
*
* H S H _ f i n i
*
**************************************
*
* Functional description
* Release space used by keywords.
*
**************************************/
while (key_symbols)
{
qli_symbol* symbol = key_symbols;
key_symbols = (qli_symbol*) key_symbols->sym_object;
HSH_remove(symbol);
ALLQ_release((qli_frb*) symbol);
}
}
void HSH_init()
{
/**************************************
*
* H S H _ i n i t
*
**************************************
*
* Functional description
* Initialize the hash table. This mostly involves
* inserting all known keywords.
*
**************************************/
const qli_kword* qword = keywords;
for (int i = 0; i < FB_NELEM(keywords); i++, qword++)
{
qli_symbol* symbol = (qli_symbol*) ALLOCPV(type_sym, 0);
symbol->sym_type = SYM_keyword;
symbol->sym_length = static_cast<USHORT>(strlen(qword->keyword));
symbol->sym_string = qword->keyword;
symbol->sym_keyword = qword->id;
HSH_insert(symbol, true);
symbol->sym_object = (BLK) key_symbols;
key_symbols = symbol;
}
}
void HSH_insert( qli_symbol* symbol, bool ignore_case)
{
/**************************************
*
* H S H _ i n s e r t
*
**************************************
*
* Functional description
* Insert a symbol into the hash table.
*
**************************************/
const int h = hash(symbol->sym_string, symbol->sym_length);
scompare_t scompare = ignore_case ? scompare_ins : scompare_sens;
for (qli_symbol* old = hash_table[h]; old; old = old->sym_collision)
{
if (scompare(symbol->sym_string, symbol->sym_length, old->sym_string, old->sym_length))
{
symbol->sym_homonym = old->sym_homonym;
old->sym_homonym = symbol;
return;
}
}
symbol->sym_collision = hash_table[h];
hash_table[h] = symbol;
}
qli_symbol* HSH_lookup(const SCHAR* string, int length)
{
/**************************************
*
* H S H _ l o o k u p
*
**************************************
*
* Functional description
* Perform a string lookup against hash table.
*
**************************************/
scompare_t scompare = scompare_ins;
if (length > 1 && string[0] == '"')
{
// This logic differs from DSQL. See how LEX_token works.
length -= 2;
++string;
scompare = scompare_sens;
}
for (qli_symbol* symbol = hash_table[hash(string, length)]; symbol;
symbol = symbol->sym_collision)
{
if (scompare(string, length, symbol->sym_string, symbol->sym_length))
return symbol;
}
return NULL;
}
void HSH_remove( qli_symbol* symbol)
{
/**************************************
*
* H S H _ r e m o v e
*
**************************************
*
* Functional description
* Remove a symbol from the hash table.
*
**************************************/
const int h = hash(symbol->sym_string, symbol->sym_length);
for (qli_symbol** next = &hash_table[h]; *next; next = &(*next)->sym_collision)
{
if (symbol == *next)
{
qli_symbol* homonym = symbol->sym_homonym;
if (homonym)
{
homonym->sym_collision = symbol->sym_collision;
*next = homonym;
}
else
*next = symbol->sym_collision;
return;
}
for (qli_symbol** ptr = &(*next)->sym_homonym; *ptr; ptr = &(*ptr)->sym_homonym)
{
if (symbol == *ptr)
{
*ptr = symbol->sym_homonym;
return;
}
}
}
ERRQ_error(27); // Msg 27 HSH_remove failed
}
static int hash(const SCHAR* string, int length)
{
/**************************************
*
* h a s h
*
**************************************
*
* Functional description
* Returns the hash function of a string.
*
**************************************/
int value = 0;
while (length--)
{
const UCHAR c = *string++;
value = (value << 1) + UPPER(c);
}
return ((value >= 0) ? value : -value) % HASH_SIZE;
}
static bool scompare_ins(const SCHAR* string1, int length1, const SCHAR* string2, int length2)
{
/**************************************
*
* s c o m p a r e _ i n s
*
**************************************
*
* Functional description
* Compare two strings, case insensitive.
*
**************************************/
if (length1 != length2)
return false;
while (length1--)
{
const SCHAR c1 = *string1++;
const SCHAR c2 = *string2++;
if (c1 != c2 && UPPER(c1) != UPPER(c2))
return false;
}
return true;
}
static bool scompare_sens(const SCHAR* string1, int length1, const SCHAR* string2, int length2)
{
/**************************************
*
* s c o m p a r e _ s e n s
*
**************************************
*
* Functional description
* Compare two strings, case sensitive: quotes identifiers.
*
**************************************/
if (length1 != length2)
return false;
return !memcmp(string1, string2, length1);
}

View File

@ -1,34 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: hsh_proto.h
* DESCRIPTION: Prototype header file for hsh.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_HSH_PROTO_H
#define QLI_HSH_PROTO_H
void HSH_fini();
void HSH_init();
void HSH_insert(qli_symbol*, bool ignore_case = false);
qli_symbol* HSH_lookup(const SCHAR*, int);
void HSH_remove(qli_symbol*);
#endif // QLI_HSH_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,46 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: lex_proto.h
* DESCRIPTION: Prototype header file for lex.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_LEX_PROTO_H
#define QLI_LEX_PROTO_H
bool LEX_active_procedure ();
void LEX_edit (SLONG, SLONG);
qli_tok* LEX_edit_string();
qli_tok* LEX_filename();
void LEX_fini ();
void LEX_flush ();
bool LEX_get_line (const TEXT*, TEXT*, int);
void LEX_init ();
void LEX_mark_statement ();
void LEX_pop_line ();
void LEX_procedure(qli_dbb*, FB_API_HANDLE);
bool LEX_push_file (const TEXT*, const bool);
bool LEX_push_string (const TEXT* const);
void LEX_put_procedure (FB_API_HANDLE, SLONG, SLONG);
void LEX_real ();
qli_lls* LEX_statement_list();
qli_tok* LEX_token();
#endif // QLI_LEX_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,56 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: meta_proto.h
* DESCRIPTION: Prototype header file for meta.epp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_META_PROTO_H
#define QLI_META_PROTO_H
bool MET_declare(qli_dbb*, qli_fld*, const qli_name*);
void MET_define_field(qli_dbb*, qli_fld*);
void MET_define_index(qli_syntax*);
void MET_define_relation(qli_rel*, qli_rel*);
void MET_define_sql_relation(qli_rel*);
void MET_delete_database(qli_dbb*);
void MET_delete_field(qli_dbb*, qli_name*);
void MET_delete_index(qli_dbb*, qli_name*);
void MET_delete_relation(qli_rel*);
int MET_dimensions(qli_dbb*, const TEXT*);
void MET_fields(qli_rel*);
void MET_finish(qli_dbb*);
int MET_get_datatype (USHORT);
void MET_index_info(qli_dbb* db, const TEXT*, const TEXT*, SCHAR* const, size_t bufsize);
void MET_meta_commit(qli_dbb*);
void MET_meta_rollback(qli_dbb*);
FB_API_HANDLE MET_meta_transaction(qli_dbb*, bool);
void MET_modify_field(qli_dbb*, qli_fld*);
void MET_modify_index(qli_syntax*);
void MET_modify_relation(qli_rel*, qli_fld*);
void MET_ready(qli_syntax*, const bool);
void MET_shutdown();
void MET_sql_alter_table(qli_rel*, qli_fld*);
void MET_sql_cr_view(qli_syntax*);
void MET_sql_grant(qli_syntax*);
void MET_sql_revoke(qli_syntax*);
FB_API_HANDLE MET_transaction(nod_t, qli_dbb*);
#endif // QLI_META_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: mov_proto.h
* DESCRIPTION: Prototype header file for mov.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_MOV_PROTO_H
#define QLI_MOV_PROTO_H
int MOVQ_compare(const dsc*, const dsc*);
double MOVQ_date_to_double(const dsc*);
int MOVQ_decompose (const TEXT*, USHORT, SLONG *);
void MOVQ_double_to_date (double, SLONG [2]);
double MOVQ_get_double(const dsc*);
SLONG MOVQ_get_long(const dsc*, SSHORT);
int MOVQ_get_string(const dsc*, const TEXT**, vary*, USHORT);
void MOVQ_move(const dsc*, dsc*);
void MOVQ_terminate (const SCHAR*, SCHAR*, USHORT, USHORT);
#endif // QLI_MOV_PROTO_H

View File

@ -1,35 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: nounix.cpp
* DESCRIPTION: Dummy routines
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#include "firebird.h"
int pipe()
{
return -1;
}
int vfork()
{
return -1;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,90 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: par.h
* DESCRIPTION: Parser definitions
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_PARSE_H
#define QLI_PARSE_H
#include <stdio.h>
const int MAXSYMLEN = 256;
// Keywords
enum kwwords {
KW_none = 0,
#include "../qli/symbols.h"
KW_continuation
};
// Token block, used to hold a lexical token.
enum tok_t {
tok_ident,
tok_number,
tok_quoted,
tok_punct,
tok_eol,
tok_eof
};
struct qli_tok
{
blk tok_header;
tok_t tok_type; // type of token
qli_symbol* tok_symbol; // hash block if recognized
kwwords tok_keyword; // keyword number, if recognized
SLONG tok_position; // byte number in input stream
USHORT tok_length;
//qli_tok* tok_next;
//qli_tok* tok_prior;
TEXT tok_string [2];
};
// Input line control
enum line_t {
line_stdin,
line_blob,
line_file,
line_string
//, line_edit
};
struct qli_line
{
blk line_header;
qli_line* line_next;
qli_dbb* line_database;
USHORT line_size;
USHORT line_length;
TEXT* line_ptr;
SLONG line_position;
FB_API_HANDLE line_source_blob; // Blob handle
FILE* line_source_file; // File handle
line_t line_type;
TEXT line_data[256];
TEXT line_source_name[2];
};
#endif // QLI_PARSE_H

View File

@ -1,34 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: parse_proto.h
* DESCRIPTION: Prototype header file for parse.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_PARSE_PROTO_H
#define QLI_PARSE_PROTO_H
qli_syntax* PARQ_parse();
bool PAR_match (kwwords);
void PAR_real ();
void PAR_real_token ();
void PAR_token ();
#endif // QLI_PARSE_PROTO_H

View File

@ -1,32 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: picst_proto.h
* DESCRIPTION: Prototype header file for picstr.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_PICST_PROTO_H
#define QLI_PICST_PROTO_H
pics* PIC_analyze(const TEXT*, const dsc*);
void PIC_edit(const dsc*, pics*, TEXT**, USHORT);
void PIC_missing(qli_const*, pics*);
#endif // QLI_PICST_PROTO_H

File diff suppressed because it is too large Load Diff

View File

@ -1,892 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: proc.epp
* DESCRIPTION: Procedure maintenance routines
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*
* 2002.10.30 Sean Leyne - Removed support for obsolete "PC_PLATFORM" define
*
*/
#include "firebird.h"
#include "dyn_consts.h"
#include <string.h>
#include "ibase.h"
#include "../qli/dtr.h"
#include "../qli/parse.h"
#include "../qli/compile.h"
#include "../qli/err_proto.h"
#include "../qli/lex_proto.h"
#include "../qli/meta_proto.h"
#include "../qli/parse_proto.h"
#include "../qli/proc_proto.h"
#include "../jrd/constants.h"
using MsgFormat::SafeArg;
DATABASE DB1 = EXTERN FILENAME "yachts.lnk";
DATABASE DB = EXTERN FILENAME "yachts.lnk";
static int clear_out_qli_procedures(qli_dbb*);
static void create_qli_procedures(qli_dbb*);
static void probe(qli_dbb*, const TEXT*);
static int upcase_name(const TEXT*, TEXT*);
static const UCHAR tpb[] =
{
isc_tpb_version1, isc_tpb_write,
isc_tpb_concurrency
};
static const UCHAR dyn_gdl1[] =
{
#include "../qli/procddl1.h"
};
static const UCHAR dyn_gdl2[] =
{
#include "../qli/procddl2.h"
};
static const UCHAR dyn_gdl3[] =
{
#include "../qli/procddl3.h"
};
static const UCHAR dyn_gdl4[] =
{
#include "../qli/procddl4.h"
};
void PRO_close( qli_dbb* database, FB_API_HANDLE blob)
{
/**************************************
*
* P R O _ c l o s e
*
**************************************
*
* Functional description
* Close out an open procedure blob.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
if (database && isc_close_blob(status_vector, &blob))
ERRQ_database_error(database, status_vector);
}
void PRO_commit( qli_dbb* database)
{
/**************************************
*
* P R O _ c o m m i t
*
**************************************
*
* Functional description
* Commit the procedure transaction.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
if ((database->dbb_capabilities & DBB_cap_multi_trans) && !(LEX_active_procedure()))
{
if (isc_commit_transaction(status_vector, &database->dbb_proc_trans))
{
PRO_rollback(database);
ERRQ_database_error(database, status_vector);
}
}
}
void PRO_copy_procedure(qli_dbb* old_database, const TEXT* old_name,
qli_dbb* new_database, const TEXT* new_name)
{
/**************************************
*
* P R O _ c o p y _ p r o c e d u r e
*
**************************************
*
* Functional description
* Create a new copy of an existing
* procedure. Search databases for the
* existing procedure.
*
**************************************/
if (!new_database)
new_database = QLI_databases;
FB_API_HANDLE old_blob;
if (!old_database)
{
for (old_database = QLI_databases; old_database; old_database = old_database->dbb_next)
{
if (old_blob = PRO_fetch_procedure(old_database, old_name))
break;
}
}
else
old_blob = PRO_fetch_procedure(old_database, old_name);
if (!old_blob)
ERRQ_print_error(70, old_name);
// Msg 70 procedure \"%s\" is undefined
if (new_database != old_database)
PRO_setup(new_database);
FB_API_HANDLE new_blob = 0;
FB_API_HANDLE store_request = 0;
probe(new_database, new_name);
DB1 = new_database->dbb_handle;
// create blob parameter block since procedure is a text blob
// But nothing was done! The bpb is empty.
UCHAR bpb[20];
UCHAR* p = bpb;
USHORT bpb_length = p - bpb;
ISC_STATUS_ARRAY status_vector;
TEXT buffer[255];
STORE(REQUEST_HANDLE store_request TRANSACTION_HANDLE new_database->dbb_proc_trans)
NEW IN DB1.QLI$PROCEDURES USING
strcpy(NEW.QLI$PROCEDURE_NAME, new_name);
if (isc_create_blob2(status_vector, &new_database->dbb_handle,
&new_database->dbb_proc_trans, &new_blob, &NEW.QLI$PROCEDURE,
bpb_length, reinterpret_cast<const char*>(bpb)))
{
ERRQ_database_error(new_database, status_vector);
}
USHORT length;
while (!(isc_get_segment(status_vector, &old_blob, &length, sizeof(buffer), buffer)))
{
buffer[length] = 0;
if (isc_put_segment(status_vector, &new_blob, length, buffer))
ERRQ_database_error(new_database, status_vector);
}
PRO_close(old_database, old_blob);
PRO_close(new_database, new_blob);
END_STORE;
// Release the FOR and STORE requests
isc_release_request(gds_status, &store_request);
PRO_commit(new_database);
}
void PRO_create( qli_dbb* database, const TEXT* name)
{
/**************************************
*
* P R O _ c r e a t e
*
**************************************
*
* Functional description
* Create a new procedure, assuming, of course, it doesn't already
* exist.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
UCHAR bpb[20];
// See if procedure is already in use
probe(database, name);
FB_API_HANDLE blob = 0;
const SLONG start = QLI_token->tok_position;
SLONG stop = start;
UCHAR* p = bpb;
USHORT bpb_length = p - bpb;
PRO_setup(database);
// Store record in QLI$PROCEDURES. Eat tokens until we run into
// END_PROCEDURE, then have LEX store the procedure in blobs.
STORE(REQUEST_HANDLE database->dbb_store_blob) X IN DB.QLI$PROCEDURES
isc_vtof(name, X.QLI$PROCEDURE_NAME, sizeof(X.QLI$PROCEDURE_NAME));
if (isc_create_blob2(status_vector, &database->dbb_handle, &gds_trans,
&blob, &X.QLI$PROCEDURE, bpb_length,
reinterpret_cast<const char*>(bpb)))
{
ERRQ_database_error(database, status_vector);
}
while (!PAR_match(KW_END_PROCEDURE))
{
if (QLI_token->tok_type == tok_eof)
ERRQ_syntax(350);
if (QLI_token->tok_type != tok_eol)
stop = QLI_token->tok_position + QLI_token->tok_length;
LEX_token();
}
LEX_put_procedure(blob, start, stop);
isc_close_blob(status_vector, &blob);
END_STORE;
// Commit the procedure transaction, if there is one
PRO_commit(database);
}
int PRO_delete_procedure( qli_dbb* database, const TEXT* name)
{
/**************************************
*
* P R O _ d e l e t e _ p r o c e d u r e
*
**************************************
*
* Functional description
* Delete a procedure.
*
**************************************/
FB_API_HANDLE request = 0;
USHORT count = 0;
PRO_setup(database);
FOR(REQUEST_HANDLE request) X IN DB.QLI$PROCEDURES WITH
X.QLI$PROCEDURE_NAME EQ name
ERASE X;
count++;
END_FOR;
isc_release_request(gds_status, &request);
// Commit the procedure transaction, if there is one
PRO_commit(database);
return count;
}
void PRO_edit_procedure( qli_dbb* database, const TEXT* name)
{
/**************************************
*
* P R O _ e d i t _ p r o c e d u r e
*
**************************************
*
* Functional description
* Edit a procedure, using the token stream to get the name of
* the procedure.
*
**************************************/
PRO_setup(database);
bool changed = false;
FOR(REQUEST_HANDLE database->dbb_edit_blob) X IN DB.QLI$PROCEDURES WITH
X.QLI$PROCEDURE_NAME EQ name
MODIFY X USING
if (!BLOB_edit(&X.QLI$PROCEDURE, database->dbb_handle, gds_trans, name))
{
return;
}
END_MODIFY
changed = true;
END_FOR
if (changed)
{
PRO_commit(database);
return;
}
STORE(REQUEST_HANDLE database->dbb_edit_store) X IN DB.QLI$PROCEDURES
X.QLI$PROCEDURE = gds_blob_null;
if (!BLOB_edit(&X.QLI$PROCEDURE, database->dbb_handle, gds_trans, name))
{
return;
}
isc_vtof(name, X.QLI$PROCEDURE_NAME, sizeof(X.QLI$PROCEDURE_NAME));
END_STORE
// Commit the procedure transaction, if there is one
PRO_commit(database);
}
FB_API_HANDLE PRO_fetch_procedure( qli_dbb* database, const TEXT* proc)
{
/**************************************
*
* P R O _ f e t c h _ p r o c e d u r e
*
**************************************
*
* Functional description
* Fetch a procedure. Look up a name and return an open blob.
* If the name doesn't exit, return NULL.
*
**************************************/
TEXT name[MAX_SQL_IDENTIFIER_SIZE];
upcase_name(proc, name);
PRO_setup(database);
FB_API_HANDLE blob = 0;
FOR(REQUEST_HANDLE database->dbb_lookup_blob) X IN DB.QLI$PROCEDURES WITH
X.QLI$PROCEDURE_NAME EQ name
blob = PRO_open_blob(database, X.QLI$PROCEDURE);
END_FOR
return blob;
}
bool PRO_get_line(FB_API_HANDLE blob, TEXT* buffer, USHORT size)
{
/**************************************
*
* P R O _ g e t _ l i n e
*
**************************************
*
* Functional description
* Get the next segment of procedure blob. If there are
* no more segments, return false.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
USHORT length;
isc_get_segment(status_vector, &blob, &length, size, buffer);
if (status_vector[1] && status_vector[1] != isc_segment)
return false;
TEXT* p = buffer + length;
if (p[-1] != '\n' && !status_vector[1])
*p++ = '\n';
*p = 0;
return true;
}
void PRO_invoke( qli_dbb* database, const TEXT* name)
{
/**************************************
*
* P R O _ i n v o k e
*
**************************************
*
* Functional description
* Invoke a procedure. The qualified procedure
* block may include the database we want, or
* we may have to loop through databases. Whatever...
*
**************************************/
FB_API_HANDLE blob = 0;
if (database)
{
if (!(blob = PRO_fetch_procedure(database, name)))
{
ERRQ_print_error(71, SafeArg() << name << database->dbb_symbol->sym_string);
}
// Msg 71 procedure \"%s\" is undefined in database %s
}
else
for (database = QLI_databases; database; database = database->dbb_next)
{
if (blob = PRO_fetch_procedure(database, name))
break;
}
if (!blob)
ERRQ_print_error(72, name);
// Msg 72 procedure \"%s\" is undefined
LEX_procedure((qli_dbb*)database, blob);
LEX_token();
}
FB_API_HANDLE PRO_open_blob( qli_dbb* database, ISC_QUAD& blob_id)
{
/**************************************
*
* P R O _ o p e n _ b l o b
*
**************************************
*
* Functional description
* Open a procedure blob.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
UCHAR bpb[20];
FB_API_HANDLE blob = 0;
UCHAR* p = bpb;
USHORT bpb_length = p - bpb;
if (isc_open_blob2(status_vector, &database->dbb_handle, &database->dbb_proc_trans,
&blob, &blob_id, bpb_length, bpb))
{
ERRQ_database_error(database, status_vector);
}
return blob;
}
int PRO_rename_procedure( qli_dbb* database, const TEXT* old_name, const TEXT* new_name)
{
/**************************************
*
* P R O _ r e n a m e _ p r o c e d u r e
*
**************************************
*
* Functional description
* Change the name of a procedure.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
FB_API_HANDLE request = 0;
PRO_setup(database);
probe(database, new_name);
USHORT count = 0;
FOR(REQUEST_HANDLE request) X IN DB.QLI$PROCEDURES WITH
X.QLI$PROCEDURE_NAME EQ old_name
count++;
MODIFY X USING
isc_vtof(new_name, X.QLI$PROCEDURE_NAME, sizeof(X.QLI$PROCEDURE_NAME));
END_MODIFY
ON_ERROR
isc_release_request(gds_status, &request);
ERRQ_database_error(database, status_vector);
END_ERROR;
END_FOR;
isc_release_request(gds_status, &request);
// Commit the procedure transaction, if there is one
PRO_commit(database);
return count;
}
void PRO_rollback( qli_dbb* database)
{
/**************************************
*
* P R O _ r o l l b a c k
*
**************************************
*
* Functional description
* Rollback the procedure transaction,
* if there is one.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
if (database->dbb_capabilities & DBB_cap_multi_trans)
{
isc_rollback_transaction(status_vector, &database->dbb_proc_trans);
gds_trans = 0;
}
}
void PRO_scan( qli_dbb* database, extract_fn_t routine, void* arg)
{
/**************************************
*
* P R O _ s c a n
*
**************************************
*
* Functional description
* Loop thru procedures calling given routine.
*
**************************************/
PRO_setup(database);
FOR(REQUEST_HANDLE database->dbb_scan_blobs) X IN DB.QLI$PROCEDURES
SORTED BY X.QLI$PROCEDURE_NAME
TEXT* p = X.QLI$PROCEDURE_NAME;
// This loop didn't have any effect. However, the logic can't handle
// dialect 3 names. At least it's now correct for dialect 1.
while (*p && *p != ' ') {
p++;
}
(*routine) (arg, X.QLI$PROCEDURE_NAME, p - X.QLI$PROCEDURE_NAME, database, X.QLI$PROCEDURE);
END_FOR
}
void PRO_setup( qli_dbb* dbb)
{
/**************************************
*
* P R O _ s e t u p
*
**************************************
*
* Functional description
* Prepare for a DML operation on a database. Start a procedure
* transaction is one hasn't been started and the database
* system will start multiple transactions. Otherwise use
* the default transaction.
*
**************************************/
if (!dbb)
IBERROR(77);
// Msg 77 database handle required
DB = dbb->dbb_handle;
if (dbb->dbb_flags & DBB_procedures)
{
gds_trans = PRO_transaction(dbb, false);
return;
}
// Sigh. Relation doesn't exist. So make it exist.
create_qli_procedures(dbb);
gds_trans = PRO_transaction(dbb, false);
}
FB_API_HANDLE PRO_transaction( qli_dbb* database, bool update_flag)
{
/**************************************
*
* P R O _ t r a n s a c t i o n
*
**************************************
*
* Functional description
* Setup transaction for procedure or form operation.
*
* In any event, we will set up the met_transaction because
* it's widely used and somebody is going to forget to test
* that the database is multi_transaction before using it.
* We have to be careful about committing or rolling back
* because we ould affect user data.
*
**************************************/
if (!database)
IBERROR(248); // Msg248 no active database for operation
FB_API_HANDLE transaction = (database->dbb_capabilities & DBB_cap_multi_trans) ?
database->dbb_proc_trans : 0;
DB = database->dbb_handle;
// If we don't know whether or not the database can handle
// multiple transactions, find out now
ISC_STATUS_ARRAY status_vector;
if (!transaction &&
((database->dbb_capabilities & DBB_cap_multi_trans) ||
!(database->dbb_capabilities & DBB_cap_single_trans)))
{
if (isc_start_transaction(status_vector, &transaction, 1,
&database->dbb_handle, sizeof(tpb), tpb))
{
database->dbb_capabilities |= DBB_cap_single_trans;
}
else
database->dbb_capabilities |= DBB_cap_multi_trans;
}
// If we already have a procedure transaction, there's more nothing to do
gds_trans = transaction;
// If we only support a single transaction, use the data transaction
if (!gds_trans && (database->dbb_capabilities & DBB_cap_single_trans))
{
if (update_flag)
IBERROR(249); // Msg249 Interactive metadata updates are not available on Rdb
if (!(gds_trans = database->dbb_transaction))
gds_trans = MET_transaction(nod_start_trans, database);
}
else if (!gds_trans)
{
// otherwise make one more effort to start the transaction
START_TRANSACTION
ON_ERROR
ERRQ_database_error(database, status_vector);
END_ERROR;
}
database->dbb_proc_trans = gds_trans;
return gds_trans;
}
static int clear_out_qli_procedures( qli_dbb* dbb)
{
/**************************************
*
* c l e a r _ o u t _ q l i _ p r o c e d u r e s
*
**************************************
*
* Functional description
* The procedures relation can't be found. Poke
* around and delete any trash lying around.
* Before cleaning out the trash, see if somebody
* else has set up for us.
*
**************************************/
ISC_STATUS_ARRAY status_vector;
FB_API_HANDLE req = 0;
int count = 0;
FOR(REQUEST_HANDLE req) R IN DB.RDB$RELATIONS CROSS
F IN DB.RDB$FIELDS CROSS RFR IN DB.RDB$RELATION_FIELDS WITH
RFR.RDB$RELATION_NAME = R.RDB$RELATION_NAME AND
RFR.RDB$FIELD_NAME = F.RDB$FIELD_NAME AND
R.RDB$RELATION_NAME = "QLI$PROCEDURES"
count++;
END_FOR
ON_ERROR
isc_release_request(status_vector, &req);
ERRQ_database_error(dbb, gds_status);
END_ERROR;
isc_release_request(status_vector, &req);
if (count >= 2)
{
dbb->dbb_flags |= DBB_procedures;
return 0;
}
count = 0;
FOR(REQUEST_HANDLE req) X IN DB.RDB$INDICES
WITH X.RDB$INDEX_NAME = "QLI$PROCEDURES_IDX1"
ERASE X;
count++;
END_FOR
ON_ERROR
isc_release_request(status_vector, &req);
ERRQ_database_error(dbb, gds_status);
END_ERROR;
isc_release_request(status_vector, &req);
FOR(REQUEST_HANDLE req) X IN DB.RDB$INDEX_SEGMENTS
WITH X.RDB$INDEX_NAME = "QLI$PROCEDURES_IDX1"
ERASE X;
count++;
END_FOR
ON_ERROR
isc_release_request(status_vector, &req);
ERRQ_database_error(dbb, gds_status);
END_ERROR;
isc_release_request(status_vector, &req);
FOR(REQUEST_HANDLE req) X IN DB.RDB$RELATION_FIELDS
WITH X.RDB$FIELD_NAME = "QLI$PROCEDURE_NAME" OR
X.RDB$FIELD_NAME = "QLI$PROCEDURE"
ERASE X;
count++;
END_FOR
ON_ERROR
isc_release_request(status_vector, &req);
ERRQ_database_error(dbb, gds_status);
END_ERROR;
isc_release_request(gds_status, &req);
FOR(REQUEST_HANDLE req) X IN DB.RDB$FIELDS
WITH X.RDB$FIELD_NAME = "QLI$PROCEDURE_NAME" OR
X.RDB$FIELD_NAME = "QLI$PROCEDURE"
ERASE X;
count++;
END_FOR
ON_ERROR
isc_release_request(status_vector, &req);
ERRQ_database_error(dbb, gds_status);
END_ERROR;
isc_release_request(gds_status, &req);
FOR(REQUEST_HANDLE req) X IN DB.RDB$RELATIONS
WITH X.RDB$RELATION_NAME = "QLI$PROCEDURES"
ERASE X;
count++;
END_FOR
ON_ERROR
isc_release_request(status_vector, &req);
ERRQ_database_error(dbb, gds_status);
END_ERROR;
isc_release_request(gds_status, &req);
return count;
}
static void create_qli_procedures( qli_dbb* dbb)
{
/**************************************
*
* c r e a t e _ q l i _ p r o c e d u r e s
*
**************************************
*
* Functional description
* The procedures relation can't be found. Clean
* out residual trash and (re)create the relation.
* Before cleaning out the trash, see if somebody
* else has set up for us.
*
**************************************/
gds_trans = PRO_transaction(dbb, true);
if (clear_out_qli_procedures(dbb))
{
PRO_commit(dbb);
gds_trans = PRO_transaction(dbb, true);
}
if (dbb->dbb_flags & DBB_procedures)
return;
if (isc_ddl(gds_status, &DB, &gds_trans, sizeof(dyn_gdl1),
reinterpret_cast<const char*>(dyn_gdl1)))
{
PRO_rollback(dbb);
IBERROR(73);
// Msg 73 Could not create QLI$PROCEDURE_NAME field
}
if (isc_ddl(gds_status, &DB, &gds_trans, sizeof(dyn_gdl2),
reinterpret_cast<const char*>(dyn_gdl2)))
{
PRO_rollback(dbb);
IBERROR(74);
// Msg 74 Could not create QLI$PROCEDURE field
}
if (isc_ddl(gds_status, &DB, &gds_trans, sizeof(dyn_gdl3),
reinterpret_cast<const char*>(dyn_gdl3)))
{
PRO_rollback(dbb);
IBERROR(75);
// Msg 75 Could not create QLI$PROCEDURES relation
}
if (isc_ddl(gds_status, &DB, &gds_trans, sizeof(dyn_gdl4),
reinterpret_cast<const char*>(dyn_gdl4)))
{
PRO_rollback(dbb);
IBERROR(409);
// msg 409 Could not create QLI$PROCEDURES index
}
dbb->dbb_flags |= DBB_procedures;
PRO_commit(dbb);
}
static void probe( qli_dbb* database, const TEXT* name)
{
/**************************************
*
* p r o b e
*
**************************************
*
* Functional description
* Check whether a procedure name is already in
* use in a particular database. IBERROR and don't
* return if it is.
*
**************************************/
// Probe to see if procedure is already in use
FB_API_HANDLE blob = PRO_fetch_procedure(database, name);
if (blob)
{
ISC_STATUS_ARRAY status_vector;
isc_close_blob(status_vector, &blob);
ERRQ_print_error(76, SafeArg() << name << database->dbb_symbol->sym_string);
// Msg 76 procedure name \"%s\" in use in database %s
}
}
static int upcase_name(const TEXT* name, TEXT* buffer)
{
/**************************************
*
* u p c a s e _ n a m e
*
**************************************
*
* Functional description
* Upcase a null terminated string and return its length. If the
* length is greater than 31 bytes, barf.
*
**************************************/
USHORT l = 0;
while (true)
{
const TEXT c = *name++;
*buffer++ = UPPER(c);
if (!c)
return l;
if (++l > MAX_SQL_IDENTIFIER_LEN)
IBERROR(79); // Msg 79 procedure name over 31 characters
}
}

View File

@ -1,32 +0,0 @@
/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
1, 2, 9, 14, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', 'S', 55, 2, 0, 2, 0, 3, 6, 18, 0, 'Q', 'L',
'I', '$', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', '_', 'N',
'A', 'M', 'E', 55, 2, 0, 2, 0, 'F', 2, 0, 14, 0, 'G', 2, 0, 31,
0, 3, 7, 18, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', '_', 'N', 'A', 'M', 'E', 50, 14, 0, 'Q',
'L', 'I', '$', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', 'S',
55, 2, 0, 2, 0, 92, 2, 0, 0, 0, 3, 6, 13, 0, 'Q', 'L', 'I', '$',
'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', 55, 2, 0, 2, 0,
'F', 2, 0, 5, 1, 'I', 2, 0, 1, 0, 'J', 2, 0, 'P', 0, 3, 7, 13,
0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R',
'E', 50, 14, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', 'S', 55, 2, 0, 2, 0, 92, 2, 0, 1, 0, 3, 3,
255,

View File

@ -1,48 +0,0 @@
/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: proc_proto.h
* DESCRIPTION: Prototype header file for proc.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_PROC_PROTO_H
#define QLI_PROC_PROTO_H
void PRO_close(qli_dbb*, FB_API_HANDLE);
void PRO_commit(qli_dbb*);
void PRO_copy_procedure(qli_dbb*, const TEXT*, qli_dbb*, const TEXT*);
void PRO_create(qli_dbb*, const TEXT*);
int PRO_delete_procedure(qli_dbb*, const TEXT*);
void PRO_edit_procedure(qli_dbb*, const TEXT*);
FB_API_HANDLE PRO_fetch_procedure(qli_dbb*, const TEXT*);
bool PRO_get_line (FB_API_HANDLE, TEXT*, USHORT);
void PRO_invoke(qli_dbb*, const TEXT*);
FB_API_HANDLE PRO_open_blob(qli_dbb*, ISC_QUAD&);
int PRO_rename_procedure(qli_dbb*, const TEXT*, const TEXT*);
void PRO_rollback(qli_dbb*);
typedef void (*extract_fn_t)(void* file, const TEXT* name,
USHORT length, qli_dbb* database, ISC_QUAD& blob_id);
void PRO_scan(qli_dbb*, extract_fn_t, void*);
void PRO_setup(qli_dbb*);
FB_API_HANDLE PRO_transaction(qli_dbb*, bool);
#endif // QLI_PROC_PROTO_H

View File

@ -1,21 +0,0 @@
/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
1, 2, 6, 18, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', '_', 'N', 'A', 'M', 'E', 55, 2, 0, 2, 0,
'F', 2, 0, 14, 0, 'G', 2, 0, 31, 0, 3, 3, 255,

View File

@ -1,21 +0,0 @@
/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
1, 2, 6, 13, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', 55, 2, 0, 2, 0, 'F', 2, 0, 5, 1, 'I', 2,
0, 1, 0, 'J', 2, 0, 'P', 0, 3, 3, 255,

View File

@ -1,27 +0,0 @@
/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
1, 2, 9, 14, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', 'S', 55, 2, 0, 2, 0, 3, 7, 18, 0, 'Q', 'L',
'I', '$', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', '_', 'N',
'A', 'M', 'E', 50, 14, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O',
'C', 'E', 'D', 'U', 'R', 'E', 'S', 55, 2, 0, 2, 0, 92, 2, 0,
0, 0, 3, 7, 13, 0, 'Q', 'L', 'I', '$', 'P', 'R', 'O', 'C', 'E',
'D', 'U', 'R', 'E', 50, 14, 0, 'Q', 'L', 'I', '$', 'P', 'R',
'O', 'C', 'E', 'D', 'U', 'R', 'E', 'S', 55, 2, 0, 2, 0, 92, 2,
0, 1, 0, 3, 3, 255,

View File

@ -1,28 +0,0 @@
/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
isc_dyn_version_1,
isc_dyn_begin,
isc_dyn_def_idx, 19,0, 'Q','L','I','$','P','R','O','C','E','D','U','R','E','S','_','I','D','X','1',
isc_dyn_rel_name, 14,0, 'Q','L','I','$','P','R','O','C','E','D','U','R','E','S',
isc_dyn_idx_unique, 2,0, 1,0,
isc_dyn_idx_inactive, 2,0, 0,0,
isc_dyn_fld_name, 18,0, 'Q','L','I','$','P','R','O','C','E','D','U','R','E','_','N','A','M','E',
isc_dyn_end,
isc_dyn_end,
isc_dyn_eoc

Some files were not shown because too many files have changed in this diff Show More