mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-06-03 06:12:33 -06:00
support PG11
Поддержка PostgreSQL 11 только для Windows
This commit is contained in:
commit
4af765213c
1765 changed files with 407959 additions and 0 deletions
154
pgscript/objects/pgsGenerator.cpp
Normal file
154
pgscript/objects/pgsGenerator.cpp
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// pgScript - PostgreSQL Tools
|
||||
//
|
||||
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
||||
// This software is released under the PostgreSQL Licence
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#include "pgAdmin3.h"
|
||||
#include "pgscript/objects/pgsGenerator.h"
|
||||
|
||||
#include "pgscript/objects/pgsNumber.h"
|
||||
#include "pgscript/objects/pgsRecord.h"
|
||||
#include "pgscript/objects/pgsString.h"
|
||||
#include "pgscript/exceptions/pgsCastException.h"
|
||||
|
||||
pgsGenerator::pgsGenerator(const pgsTypes &generator_type,
|
||||
pgsObjectGen *randomizer) :
|
||||
pgsVariable(generator_type), m_randomizer(randomizer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
pgsGenerator::~pgsGenerator()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
pgsVariable *pgsGenerator::clone() const
|
||||
{
|
||||
return pnew pgsGenerator(*this);
|
||||
}
|
||||
|
||||
wxString pgsGenerator::value() const
|
||||
{
|
||||
return m_randomizer->random();
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::operand() const
|
||||
{
|
||||
switch (type())
|
||||
{
|
||||
case pgsTInt:
|
||||
return pnew pgsNumber(value(), pgsInt);
|
||||
case pgsTReal:
|
||||
return pnew pgsNumber(value(), pgsReal);
|
||||
default:
|
||||
return pnew pgsString(value());
|
||||
}
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::eval(pgsVarMap &vars) const
|
||||
{
|
||||
return this->clone();
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_plus(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() + rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_minus(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() - rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_times(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() * rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_over(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() / rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_modulo(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() % rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_equal(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() == rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_different(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() != rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_greater(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() > rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_lower(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() < rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_lower_equal(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() <= rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_greater_equal(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() >= rhs;
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_not() const
|
||||
{
|
||||
return !(*operand());
|
||||
}
|
||||
|
||||
bool pgsGenerator::pgs_is_true() const
|
||||
{
|
||||
return operand()->pgs_is_true();
|
||||
}
|
||||
|
||||
pgsOperand pgsGenerator::pgs_almost_equal(const pgsVariable &rhs) const
|
||||
{
|
||||
return *operand() &= rhs;
|
||||
}
|
||||
|
||||
pgsNumber pgsGenerator::number() const
|
||||
{
|
||||
wxString data = value().Strip(wxString::both);
|
||||
pgsTypes type = pgsNumber::num_type(data);
|
||||
switch (type)
|
||||
{
|
||||
case pgsTInt:
|
||||
return pgsNumber(data, pgsInt);
|
||||
case pgsTReal:
|
||||
return pgsNumber(data, pgsReal);
|
||||
default:
|
||||
throw pgsCastException(data, wxT("number"));
|
||||
}
|
||||
}
|
||||
|
||||
pgsRecord pgsGenerator::record() const
|
||||
{
|
||||
pgsRecord rec(1);
|
||||
rec.insert(0, 0, operand());
|
||||
return rec;
|
||||
}
|
||||
|
||||
pgsString pgsGenerator::string() const
|
||||
{
|
||||
return pgsString(value());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue