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

@ -88,7 +88,7 @@ function(epp_process type files)
foreach(F ${${files}})
set(in ${CMAKE_CURRENT_SOURCE_DIR}/${F})
set(out ${CMAKE_CURRENT_BINARY_DIR}/${F}${epp_suffix})
get_filename_component(dir ${out} PATH)
if (MSVC OR XCODE)
set(dir ${dir}/$<CONFIG>)
@ -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
@ -263,13 +262,13 @@ function(create_command command type out)
if ("${type}" STREQUAL "boot")
set(dir ${boot_dir})
endif()
set_win32(env "PATH=${dir}\;%PATH%")
set_unix (env "PATH=${dir}/bin:$PATH")
set(env "${env}"
FIREBIRD=${dir}
)
set(cmd_name ${command})
if (MSVC OR XCODE)
set(conf _$<CONFIG>)
@ -288,16 +287,16 @@ function(create_command command type out)
endif()
set(cmd_name ${cmd_name}${conf}${ext})
set(cmd_name ${CMAKE_BINARY_DIR}/src/${cmd_name})
set(content)
foreach(e ${env})
set(content "${content}${pre_cmd}${export} ${e}\n")
endforeach()
set(cmd $<TARGET_FILE:${cmd}>)
set(content "${content}${pre_cmd}${cmd} ${options}")
file(GENERATE OUTPUT ${cmd_name} CONTENT "${content}")
if (UNIX)
set(cmd_name chmod u+x ${cmd_name} COMMAND ${cmd_name})
endif()

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
@ -194,7 +190,7 @@ copyFiles() {
# Copy various upgrade stuff
cp $BuildRootDir/src/misc/intl.sql $DestDir/misc/
cp $BuildRootDir/src/misc/upgrade/v3.0/security_database* $DestDir/misc/upgrade/security/
# Misc config files
cp $BuildRootDir/gen/install/misc/firebird.conf $DestDir/
cp $BuildRootDir/gen/install/misc/databases.conf $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
@ -200,7 +196,7 @@ copyFiles() {
# Copy various upgrade stuff
cp $BuildRootDir/src/misc/intl.sql $DestDir/misc/
cp $BuildRootDir/src/misc/upgrade/v3.0/security_database* $DestDir/misc/upgrade/security/
# Misc config files
cp $BuildRootDir/gen/install/misc/firebird.conf $DestDir/
cp $BuildRootDir/gen/install/misc/databases.conf $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
@ -803,7 +803,7 @@ SharedFileArray[34].Filename := ExpandConstant('{app}')+'fbtracemgr.exe';
SharedFileArray[35].Filename := ExpandConstant('{app}')+'zlib1.dll';
SharedFileArray[36].Filename := ExpandConstant('{app}')+'replication.conf';
// FIXME
// FIXME
// Add in WOW64 here.
end;
@ -1135,7 +1135,7 @@ begin
//If existing install of the same majorver.minorver is
//found then we can upgrade it.
//// **** FIX ME **** Don't use hardcoded constants here. They get overlooked.
//// **** FIX ME **** Don't use hardcoded constants here. They get overlooked.
if ( (ProductsInstalledCount = 1) AND
#if PlatformTarget == "x64"
((ProductsInstalled AND FB30_x64 ) = FB30_x64 ) ) then 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

@ -17,7 +17,7 @@
# Start of file prefix.mingw: $(VERSION) $(PLATFORM)
#
# 2003-Sep-27 BRS Removed IPSERVER after XNET is included
#
#
# -Wno-unused-variable is used due to unused gpre generated variables
PROD_FLAGS=-O2 -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
@ -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)
@ -63,7 +63,7 @@ LIB=$(BIN)
# Special options for UDF link
LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_EXT)) -L$(LIB) -lib_util
LINK_UDF_LIBS =
LINK_UDF_LIBS =
# Special options for trace plugin link
LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS)

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
)
@ -187,7 +187,7 @@ goto :EOF
@echo Building re2...
@mkdir %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM% 2>nul
@pushd %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM%
@cmake -G "Visual Studio %MSVC_VERSION%" -A %FB_TARGET_PLATFORM% -S %FB_ROOT_PATH%\extern\re2
@cmake -G "Visual Studio %MSVC_VERSION%" -A %FB_TARGET_PLATFORM% -S %FB_ROOT_PATH%\extern\re2
if errorlevel 1 call :boot2 re2
@cmake --build %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM% --target ALL_BUILD --config Release > re2_Release_%FB_TARGET_PLATFORM%.log
@cmake --build %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM% --target ALL_BUILD --config Debug > re2_Debug_%FB_TARGET_PLATFORM%.log
@ -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

@ -1,10 +1,10 @@
Issue:
======
All command-line utilities which support -password parameter are
vulnerable to password sniffing, especially when they're run from
scripts. Since 2.1, all Firebird utilities replace argv[PASSWORD]
with *, but better solution for hiding password from others in
process list should be reading it from file or asking for it on
All command-line utilities which support -password parameter are
vulnerable to password sniffing, especially when they're run from
scripts. Since 2.1, all Firebird utilities replace argv[PASSWORD]
with *, but better solution for hiding password from others in
process list should be reading it from file or asking for it on
stdin.
Scope:
@ -19,21 +19,20 @@ 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
will load password form file "passfile", using its first line
as password.
One can specify "stdin" as file name to make password be read
All utilities have new switch
-fetch_password
which may be abbreviated according with utility rules.
Switch has required parameter - name of file with password. I.e.:
isql -user sysdba -fet passfile server:employee
will load password form file "passfile", using its first line
as password.
One can specify "stdin" as file name to make password be read
from stdin. If stdin is terminal, prompt:
Enter password:
will be printed.
For posix users - if you specify '-fetch /dev/tty' you will also
be promted. This may be useful if you need to restore from stdin:
bunzip2 -c emp.fbk.bz2 | gbak -c stdin /db/new.fdb -user sysdba -fetch /dev/tty
Enter password:
will be printed.
For posix users - if you specify '-fetch /dev/tty' you will also
be promted. This may be useful if you need to restore from stdin:
bunzip2 -c emp.fbk.bz2 | gbak -c stdin /db/new.fdb -user sysdba -fetch /dev/tty

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
@ -3766,4 +3764,4 @@ release of it.</font></p>
</p>
</body>
</html>
</html>

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

@ -4,7 +4,7 @@
* Autogenerated file.
*
******************************************************************************/
/******************************************************************************
*
* CPU
@ -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@"
@ -167,7 +164,7 @@
* Headers
*
******************************************************************************/
/* Define to 1 if you have the <aio.h> header file. */
#cmakedefine HAVE_AIO_H 1
@ -390,7 +387,7 @@
* Functions
*
******************************************************************************/
/* Define to 1 if you have the `accept4' function. */
#cmakedefine HAVE_ACCEPT4 1
@ -577,13 +574,13 @@
/* Define to 1 if you have the `vfork' function. */
#cmakedefine HAVE_VFORK 1
/******************************************************************************
*
* Types
*
******************************************************************************/
/* Define to 1 if the system has the type `caddr_t'. */
#cmakedefine HAVE_CADDR_T 1
@ -608,7 +605,7 @@
* Other/Misc
*
******************************************************************************/
/* Use binary relocation? */
#cmakedefine ENABLE_BINRELOC /**/

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