[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: [Patch] A little patch for kexi
From: Adam Pigg <adam () piggz ! fsnet ! co ! uk>
Date: 2003-07-23 19:47:23
[Download RAW message or body]
Hi
seeing as you kexi developers are living in mysql land i thought better let
you have this patch.
It may be incomplete, but ive searched the sources for lines that need changed
so it shouldnt be too bad, and it wont affect anything for you anyway, but it
will halp me in postgresql land :o)
What it does:
Adds a virtual function to kexidb.h - escapeName - this returns a quoted
version of a table name, currently it is hardcoded to a ` character, but
postgresql uses a " and thus all queries fail.
Iva added the required functionality to mysqldb.h and .cpp, and utilised it in
kexitablepart.cpp and kexidatatable.cpp
If the patch is in the wrong format, forgive me cos im a newbie when it comes
to creating patches
Now i'll get back to my driver, i updated cvs and everything broke (you
changed the way table info is retrieved, used to use queryResult(), now uses
table() ), but hey, thats the fun of being at the forefront of development
:o)
Cheers
PiggZ
--
adampigg.9p.org.uk
adam@piggz.fsnet.co.uk
adam@adampigg.9p.org.uk
["kexi.diff" (text/x-diff)]
? filters/import/csv/kexicsvsourcebase.cpp
? filters/import/csv/kexicsvsourcebase.h
? filters/import/csv/preview.cpp
? filters/import/csv/preview.h
? plugins/kexiquerydesignersql.loT
? plugins/tables/kexitablepart.loT
Index: kexiDB/kexidb.h
===================================================================
RCS file: /home/kde/koffice/kexi/kexiDB/kexidb.h,v
retrieving revision 1.34
diff -u -r1.34 kexidb.h
--- kexiDB/kexidb.h 6 Jul 2003 19:52:59 -0000 1.34
+++ kexiDB/kexidb.h 23 Jul 2003 19:38:58 -0000
@@ -77,6 +77,9 @@
//most current drivers make those a mutators
virtual QStringList databases();
virtual QStringList tableNames()=0;
+ //Returns an escaped version of a named object, eg table...mysql uses `, postgres \
uses " + virtual QString escapeName(const QString &table) = 0;
+
//! Returns true if database named by dbName is considered as system database
virtual bool isSystemDatabase(QString &dbName)=0;
Index: kexiDB/drivers/mySQL/mysqldb.cpp
===================================================================
RCS file: /home/kde/koffice/kexi/kexiDB/drivers/mySQL/mysqldb.cpp,v
retrieving revision 1.67
diff -u -r1.67 mysqldb.cpp
--- kexiDB/drivers/mySQL/mysqldb.cpp 12 Jul 2003 15:11:24 -0000 1.67
+++ kexiDB/drivers/mySQL/mysqldb.cpp 23 Jul 2003 19:39:02 -0000
@@ -239,9 +239,9 @@
kdDebug()<<"MySQLDB::createTableDef: connection exists"<<endl;
- kdDebug()<<"MySQLDB::createTableDef: querying"<< ("select * from `"+name+"` limit \
0")<<endl; + kdDebug()<<"MySQLDB::createTableDef: querying"<< ("select * from \
"+escapeName(name)+" limit 0")<<endl;
- query("select * from `"+name+"` limit 0");
+ query("select * from "+escapeName(name)+" limit 0");
MySqlResult *result = storeResult();
if(!result)
@@ -727,4 +727,11 @@
m_mysql = 0;
}
+QString MySqlDB::escapeName(const QString &tn)
+{
+ QString en;
+
+ en = "`" + tn + "`";
+ return en;
+}
#include "mysqldb.moc"
Index: kexiDB/drivers/mySQL/mysqldb.h
===================================================================
RCS file: /home/kde/koffice/kexi/kexiDB/drivers/mySQL/mysqldb.h,v
retrieving revision 1.33
diff -u -r1.33 mysqldb.h
--- kexiDB/drivers/mySQL/mysqldb.h 6 Jul 2003 19:52:59 -0000 1.33
+++ kexiDB/drivers/mySQL/mysqldb.h 23 Jul 2003 19:39:02 -0000
@@ -64,6 +64,8 @@
KexiDBTableStruct structure(const QString& table) const;
QString nativeDataType(const KexiDBField::ColumnType& t) const;
+ QString escapeName(const QString &tn);
+
public slots:
KexiDBRecordSet *queryRecord(const QString& querystatement, bool buffer=false);
Index: plugins/tables/kexitablepart.cpp
===================================================================
RCS file: /home/kde/koffice/kexi/plugins/tables/kexitablepart.cpp,v
retrieving revision 1.37
diff -u -r1.37 kexitablepart.cpp
--- plugins/tables/kexitablepart.cpp 6 Jul 2003 18:29:34 -0000 1.37
+++ plugins/tables/kexitablepart.cpp 23 Jul 2003 19:39:03 -0000
@@ -117,7 +117,7 @@
kdDebug()<<"KexiDBRecordSet *KexiTablePart::records(): local-id: "<< \
localIdentifier(identifier) << endl;
KexiDBRecordSet *m_record=0;
- m_record = kexiProject()->db()->queryRecord("select * from `" + \
localIdentifier(identifier) + "`", true); + m_record = \
kexiProject()->db()->queryRecord("select * from " + \
kexiProject()->db()->escapeName(localIdentifier(identifier)) + ", true);
if(!m_record)
{
Index: widget/kexidatatable.cpp
===================================================================
RCS file: /home/kde/koffice/kexi/widget/kexidatatable.cpp,v
retrieving revision 1.62
diff -u -r1.62 kexidatatable.cpp
--- widget/kexidatatable.cpp 18 Jul 2003 10:53:41 -0000 1.62
+++ widget/kexidatatable.cpp 23 Jul 2003 19:39:04 -0000
@@ -134,7 +134,7 @@
if(m_record->isForignField(i))
{
QStringList fdata;
- KexiDBRecordSet *ftr = m_db->queryRecord("SELECT * FROM `" + \
m_record->fieldInfo(i)->table() + "`"); + KexiDBRecordSet *ftr = \
m_db->queryRecord("SELECT * FROM " + \
m_db->escapeName(m_record->fieldInfo(i)->table())); if(ftr)
{
while(ftr->next())
_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic